From 0b6a8b34fe1a4fd04efad4eac8de16db00c4d7e3 Mon Sep 17 00:00:00 2001 From: Eric von Bayer Date: Thu, 22 Oct 2009 21:32:09 -0700 Subject: [PATCH] Made improper frame rates in a time structure become a warning. Apparently some DVDs have a malformed frame rate in cell time structures. Also fixed some file permissions. --- Cheetah/CheetahWrapper.py | 0 Cheetah/ImportHooks.py | 0 Cheetah/ImportManager.py | 0 Cheetah/Tests/Test.py | 0 Cheetah/Tests/unittest_local_copy.py | 0 plugins/dvdvideo/__init__.py | 0 plugins/dvdvideo/compositefile.py | 0 plugins/dvdvideo/dvdfolder.py | 11 ++++++----- plugins/dvdvideo/dvdtitlestream.py | 0 plugins/dvdvideo/dvdvideo.py | 0 plugins/dvdvideo/ilvuhack.py | 0 plugins/dvdvideo/templates/TvBus.tmpl | 0 plugins/dvdvideo/virtualdvd.py | 16 +++++++++++----- plugins/dvdvideo/vobstream.py | 0 pyTivo.conf.dist | 0 15 files changed, 17 insertions(+), 10 deletions(-) mode change 100755 => 100644 Cheetah/CheetahWrapper.py mode change 100755 => 100644 Cheetah/ImportHooks.py mode change 100755 => 100644 Cheetah/ImportManager.py mode change 100755 => 100644 Cheetah/Tests/Test.py mode change 100755 => 100644 Cheetah/Tests/unittest_local_copy.py mode change 100755 => 100644 plugins/dvdvideo/__init__.py mode change 100755 => 100644 plugins/dvdvideo/compositefile.py mode change 100755 => 100644 plugins/dvdvideo/dvdfolder.py mode change 100755 => 100644 plugins/dvdvideo/dvdtitlestream.py mode change 100755 => 100644 plugins/dvdvideo/dvdvideo.py mode change 100755 => 100644 plugins/dvdvideo/ilvuhack.py mode change 100755 => 100644 plugins/dvdvideo/templates/TvBus.tmpl mode change 100755 => 100644 plugins/dvdvideo/virtualdvd.py mode change 100755 => 100644 plugins/dvdvideo/vobstream.py mode change 100755 => 100644 pyTivo.conf.dist diff --git a/Cheetah/CheetahWrapper.py b/Cheetah/CheetahWrapper.py old mode 100755 new mode 100644 diff --git a/Cheetah/ImportHooks.py b/Cheetah/ImportHooks.py old mode 100755 new mode 100644 diff --git a/Cheetah/ImportManager.py b/Cheetah/ImportManager.py old mode 100755 new mode 100644 diff --git a/Cheetah/Tests/Test.py b/Cheetah/Tests/Test.py old mode 100755 new mode 100644 diff --git a/Cheetah/Tests/unittest_local_copy.py b/Cheetah/Tests/unittest_local_copy.py old mode 100755 new mode 100644 diff --git a/plugins/dvdvideo/__init__.py b/plugins/dvdvideo/__init__.py old mode 100755 new mode 100644 diff --git a/plugins/dvdvideo/compositefile.py b/plugins/dvdvideo/compositefile.py old mode 100755 new mode 100644 diff --git a/plugins/dvdvideo/dvdfolder.py b/plugins/dvdvideo/dvdfolder.py old mode 100755 new mode 100644 index ca32c61..6e0966d --- a/plugins/dvdvideo/dvdfolder.py +++ b/plugins/dvdvideo/dvdfolder.py @@ -212,16 +212,17 @@ class IFOPlaybackTime(object): mins = BCD2Dec( ord(handle.read(1)) ) secs = BCD2Dec( ord(handle.read(1)) ) fms = ord(handle.read(1)) - self.__frame_rate = [ 0, 25.0, 0, 29.97 ][ ( fms & 0xC0 ) >> 6 ] + self.__frame_rate = [ 1000000, 25.0, 1000000, 29.97 ] \ + [ ( fms & 0xC0 ) >> 6 ] fms = BCD2Dec( fms & 0x3F ) except: self.__frame_rate = 29.97 self.__sec = 0 raise DVDFormatError( "Improper time format" ) - if self.__frame_rate == 0: - raise DVDFormatError( "Invalid Frame Rate flag, got " + \ - str( ( fms & 0xC0 ) >> 6 ) ) + if self.__frame_rate == 1000000: + print "Warning: Invalid Frame Rate flag, got " + \ + str( ( fms & 0xC0 ) >> 6 ) + " instead of 1 or 3." self.__sec = ( fms / self.__frame_rate ) + secs + (mins * 60) + (hrs * 3600) @@ -741,7 +742,7 @@ class DVDFolder(object): try: # Make sure we have a directory if not os.path.isdir( path ): - raise + raise DVDNotDVD( "VIDEO_TS not located in "+path ) self.__path = path # Find the sub VIDEO_TS folder diff --git a/plugins/dvdvideo/dvdtitlestream.py b/plugins/dvdvideo/dvdtitlestream.py old mode 100755 new mode 100644 diff --git a/plugins/dvdvideo/dvdvideo.py b/plugins/dvdvideo/dvdvideo.py old mode 100755 new mode 100644 diff --git a/plugins/dvdvideo/ilvuhack.py b/plugins/dvdvideo/ilvuhack.py old mode 100755 new mode 100644 diff --git a/plugins/dvdvideo/templates/TvBus.tmpl b/plugins/dvdvideo/templates/TvBus.tmpl old mode 100755 new mode 100644 diff --git a/plugins/dvdvideo/virtualdvd.py b/plugins/dvdvideo/virtualdvd.py old mode 100755 new mode 100644 index 7ffeab5..0fd7663 --- a/plugins/dvdvideo/virtualdvd.py +++ b/plugins/dvdvideo/virtualdvd.py @@ -97,8 +97,14 @@ class VirtualDVD(object): return self.path def Valid( self ): - if self.valid: - return self.dvd_folder.Valid() + try: + if self.valid: + return self.dvd_folder.Valid() + except dvdfolder.DVDNotDVD: + pass + except dvdfolder.DVDFormatError, err: + print "Warning while reading DVD %s: %s" % ( self.path, err ) + return False def QuickValid( self ): @@ -124,7 +130,7 @@ class VirtualDVD(object): return "" def IDToTitle( self, id ): - if ( not self.dvd_folder.Valid() ) or ( id < 0 ) or \ + if ( not self.Valid() ) or ( id < 0 ) or \ ( id > len(self.dvd_folder.TitleList()) ): return DVDTitle() elif id == 0: @@ -146,14 +152,14 @@ class VirtualDVD(object): return os.path.basename( self.dvd_folder.Folder() ) def NumFiles( self ): - if self.valid: + if self.Valid(): return self.dvd_folder.NumUsefulTitles( self.TITLE_LENGTH_THRESHOLD ) else: return 0 def GetFiles( self ): files = list() - if self.valid and self.dvd_folder.Valid() and len( self.dvd_folder.TitleList() ) > 0: + if self.Valid() and len( self.dvd_folder.TitleList() ) > 0: files.append( self.FileData( self, self.path, 0, \ self.dvd_folder.MainTitle() ) ) for title in self.dvd_folder.TitleList(): diff --git a/plugins/dvdvideo/vobstream.py b/plugins/dvdvideo/vobstream.py old mode 100755 new mode 100644 diff --git a/pyTivo.conf.dist b/pyTivo.conf.dist old mode 100755 new mode 100644 -- 2.11.4.GIT