From 52684cb1440a14f6f3fed2f7d9d0d4ac4fd7c7ec Mon Sep 17 00:00:00 2001 From: John-Mark Gurney Date: Sat, 8 Jul 2006 01:05:56 -0800 Subject: [PATCH] add filtering of invalid audio tracks out, it really doesn't help that much... keep items in original order which is numerical order, if we sort them, we end up w/ the 10-19 between 1 and 2 which is anoying.. especially w/ track switch... [git-p4: depot-paths = "//depot/": change = 835] --- dvd.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/dvd.py b/dvd.py index 21684b4..485aacc 100644 --- a/dvd.py +++ b/dvd.py @@ -2,9 +2,15 @@ '''DVD Handling''' +default_audio_lang = 'en' + import os import sets +import sys +sys.path.append('/Users/jgurney/p4/bktrau/info') +import mpegts + from pydvdread import * from DIDLLite import StorageFolder, Movie, VideoItem, Resource @@ -83,7 +89,7 @@ class DVDChapterResource(resource.Resource): def render(self, request): request.setHeader('content-type', 'video/mpeg') - request.setHeader('content-length', str(self.getFileSize())) + #request.setHeader('content-length', str(self.getFileSize())) if request.method == 'HEAD': return '' @@ -98,12 +104,14 @@ class DVDChapter(VideoItem): self.chapter = kwargs['chapter'] del kwargs['dvdtitle'], kwargs['chapter'] - kwargs['content'] = DVDChapterResource(self.chapter) + audio = self.dvdtitle.selectaudio(default_audio_lang) + kwargs['content'] = DVDChapterResource(mpegts.DVDAudioFilter( + self.chapter, 0x80 + audio.pos)) VideoItem.__init__(self, *args, **kwargs) self.url = '%s/%s' % (self.cd.urlbase, self.id) self.res = Resource(self.url, 'http-get:*:video/mpeg:*') - self.res.size = self.chapter.size + #self.res.size = self.chapter.size def doUpdate(self): pass @@ -126,8 +134,8 @@ class DVDTitle(StorageFolder): def doUpdate(self): doupdate = False - children, toindex = gennameindexes('Chapter', self.dvdtitle) - children = sets.Set(children) + origchildren, toindex = gennameindexes('Chapter', self.dvdtitle) + children = sets.Set(origchildren) for i in self.pathObjmap.keys(): if i not in children: doupdate = True @@ -135,7 +143,7 @@ class DVDTitle(StorageFolder): self.cd.delItem(self.pathObjmap[i]) del self.pathObjmap[i] - for i in children: + for i in origchildren: if i in self.pathObjmap: continue @@ -145,9 +153,6 @@ class DVDTitle(StorageFolder): chapter = self.dvdtitle[toindex[i]]) doupdate = True - # sort our children - self.sort(lambda x, y: cmp(x.title, y.title)) - if doupdate: StorageFolder.doUpdate(self) @@ -168,8 +173,8 @@ class DVDDisc(FSObject, StorageFolder): self.dvd = DVD(self.FSpath) doupdate = False - children, toindex = gennameindexes('Title', self.dvd) - children = sets.Set(children) + origchildren, toindex = gennameindexes('Title', self.dvd) + children = sets.Set(origchildren) for i in self.pathObjmap.keys(): if i not in children: doupdate = True @@ -177,7 +182,7 @@ class DVDDisc(FSObject, StorageFolder): self.cd.delItem(self.pathObjmap[i]) del self.pathObjmap[i] - for i in children: + for i in origchildren: if i in self.pathObjmap: continue @@ -186,9 +191,6 @@ class DVDDisc(FSObject, StorageFolder): i, dvdtitle = self.dvd[toindex[i]], dvddisc = self) doupdate = True - # sort our children - self.sort(lambda x, y: cmp(x.title, y.title)) - if doupdate: StorageFolder.doUpdate(self)