@@ -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)
orig children, toindex = gennameindexes('Chapter', self.dvdtitle)
children = sets.Set(orig children)
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 orig children:
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)
orig children, toindex = gennameindexes('Title', self.dvd)
children = sets.Set(orig children)
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 orig children:
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)