Exemplo n.º 1
0
 def getRecStatus(self):
     be = FileOps(db=self._db)
     for prog in be._getPrograms('QUERY_GETALLPENDING', header=1):
         if (prog.chanid == self.chanid) and \
                 (prog.starttime == self.starttime):
             return prog.recstatus
     return 0
Exemplo n.º 2
0
 def getHash(self):
     """Video.getHash() -> file hash"""
     if self.host is None:
         return None
     be = FileOps(self.host)
     hash = be.getHash(self.filename, 'Videos')
     return hash
Exemplo n.º 3
0
 def getHash(self):
     """Video.getHash() -> file hash"""
     if self.host is None:
         return None
     be = FileOps(db=self._db)
     hash = be.getHash(self.filename, "Videos", self.host)
     return hash
Exemplo n.º 4
0
    def importMetadata(self, metadata, overwrite=False):
        """Imports data from a VideoMetadata object."""
        def _allow_change(self, tag, overwrite):
            if overwrite: return True
            if self[tag] is None: return True
            if self[tag] == '': return True
            if tag in self._defaults:
                if self[tag] == self._defaults[tag]:
                    return True
            return False

        # only work on existing entries
        if self._wheredat is None:
            return

        # pull direct matches
        for tag in ('title', 'subtitle', 'description', 'chanid', 
                    'starttime', 'recgroup', 'playgroup', 'seriesid',
                    'programid', 'storagegroup'):
            if metadata[tag] and _allow_change(self, tag, overwrite):
                self[tag] = metadata[tag]

        # pull renamed matches
        for tagf,tagt in (('userrating','stars'), ('filename', 'basename'),
                          ('startts','progstart'),('endts','progend'),
                          ('recstartts','starttime'),('recendts','endtime')):
            if metadata[tagf] and _allow_change(self, tagt, overwrite):
                self[tagt] = metadata[tagf]

        # pull cast
        trans = {'Author':'writer'}
        for cast in metadata.people:
            self.cast.append(unicode(cast.name),
                             unicode(trans.get(cast.job,
                                        cast.job.lower().replace(' ','_'))))

        # pull images
        exists = {'coverart':False,     'fanart':False,
                  'banner':False,       'screenshot':False}
        be = FileOps(self.hostname, db=self._db)
        for image in metadata.images:
            if exists[image.type]:
                continue
            group = Video._getGroup(self.hostname, image.type, self._db)
            if not be.fileExists(image.filename, group):
                be.downloadTo(image.url, group, image.filename)
            exists[image.type] = True

        self.update()
Exemplo n.º 5
0
    def importMetadata(self, metadata, overwrite=False):
        """Imports data from a VideoMetadata object."""
        def _allow_change(self, tag, overwrite):
            if overwrite: return True
            if self[tag] is None: return True
            if self[tag] == '': return True
            if tag in self._defaults:
                if self[tag] == self._defaults[tag]:
                    return True
            return False

        # only operate on existing entries
        if self._wheredat is None:
            return

        # pull direct tags
        for tag in ('title', 'subtitle', 'tagline', 'season', 'episode',
                    'inetref', 'homepage', 'trailer', 'userrating', 'year'):
            if metadata[tag] and _allow_change(self, tag, overwrite):
                self[tag] = metadata[tag]

        # pull tags needing renaming
        for tagf,tagt in (('description','plot'), ('runtime','length')):
            if metadata[tagf] and _allow_change(self, tagt, overwrite):
                self[tagt] = metadata[tagf]

        # pull director
        try:
            if _allow_change(self, 'director', overwrite):
                self.director = [person.name for person in metadata.people \
                                            if person.job=='Director'].pop(0)
        except IndexError: pass

        # pull actors
        for actor in [person for person in metadata.people \
                                  if person.job=='Actor']:
            self.cast.add(unicode(actor.name))

        # pull genres
        for category in metadata.categories:
            self.genre.add(unicode(category))

        # pull images (SG content only)
        if bool(self.host):
            # only perform image grabs if 'host' is set, denoting SG use
            t1 = ['coverart','fanart','banner','screenshot']
            t2 = ['coverfile','fanart','banner','screenshot']
            mdtype = dict(zip(t1,t2))
            exists = dict(zip(t1,[False,False,False,False]))

            be = FileOps(self.host, db=self._db)
            for image in metadata.images:
                if exists[image.type]:
                    continue
                if not _allow_change(self, mdtype[image.type], overwrite):
                    continue
                self[mdtype[image.type]] = image.filename
                group = self._getGroup(self.host, image.type, self._db)
                if not be.fileExists(image.filename, group):
                    be.downloadTo(image.url, group, image.filename)
                exists[image.type] = True

        self.processed = True
        self.update()
Exemplo n.º 6
0
    def importMetadata(self, metadata, overwrite=False):
        """Imports data from a VideoMetadata object."""

        def _allow_change(self, tag, overwrite):
            if overwrite:
                return True
            if self[tag] is None:
                return True
            if self[tag] == "":
                return True
            if tag in self._defaults:
                if self[tag] == self._defaults[tag]:
                    return True
            return False

        # only work on existing entries
        if self._wheredat is None:
            return

        # pull direct matches
        for tag in (
            "title",
            "subtitle",
            "description",
            "chanid",
            "starttime",
            "recgroup",
            "playgroup",
            "seriesid",
            "programid",
            "storagegroup",
        ):
            if metadata[tag] and _allow_change(self, tag, overwrite):
                self[tag] = metadata[tag]

        # pull renamed matches
        for tagf, tagt in (
            ("userrating", "stars"),
            ("filename", "basename"),
            ("startts", "progstart"),
            ("endts", "progend"),
            ("recstartts", "starttime"),
            ("recendts", "endtime"),
        ):
            if metadata[tagf] and _allow_change(self, tagt, overwrite):
                self[tagt] = metadata[tagf]

        # pull cast
        trans = {"Author": "writer"}
        for cast in metadata.people:
            self.cast.append(unicode(cast.name), unicode(trans.get(cast.job, cast.job.lower().replace(" ", "_"))))

        # pull images
        exists = {"coverart": False, "fanart": False, "banner": False, "screenshot": False}
        be = FileOps(self.hostname, db=self._db)
        for image in metadata.images:
            if exists[image.type]:
                continue
            group = Video._getGroup(self.hostname, image.type, self._db)
            if not be.fileExists(image.filename, group):
                be.downloadTo(image.url, group, image.filename)
            exists[image.type] = True

        self.update()
Exemplo n.º 7
0
 def downloadFrom(self, url):
     if self.parent is None:
         raise RuntimeError("Artwork.downloadFrom must be called from "+\
                            "object, not class.")
     be = FileOps(self.hostname, db=self.parent._db)
     be.downloadTo(url, self.imagetype, self)
Exemplo n.º 8
0
 def exists(self):
     be = FileOps(self.hostname, db = self.parent._db)
     return be.fileExists(self, self.imagetype)
Exemplo n.º 9
0
 def update(self, *args, **keywords):
     wait = keywords.get('wait', False)
     DBDataWrite.update(self, *args, **keywords)
     FileOps(db=self._db).reschedule(self.recordid, wait)
Exemplo n.º 10
0
 def delete(self, wait=False):
     DBDataWrite.delete(self)
     FileOps(db=self._db).reschedule(self.recordid, wait)
Exemplo n.º 11
0
 def create(self, data=None, wait=False):
     """Record.create(data=None) -> Record object"""
     DBDataWrite._create_autoincrement(self, data)
     FileOps(db=self._db).reschedule(self.recordid, wait)
     return self
Exemplo n.º 12
0
    def importMetadata(self, metadata, overwrite=False):
        """Imports data from a VideoMetadata object."""
        def _allow_change(self, tag, overwrite):
            if overwrite: return True
            if self[tag] is None: return True
            if self[tag] == '': return True
            if tag in self._defaults:
                if self[tag] == self._defaults[tag]:
                    return True
            return False

        # only operate on existing entries
        if self._wheredat is None:
            return

        # pull direct tags
        for tag in ('title', 'subtitle', 'tagline', 'season', 'episode',
                    'inetref', 'homepage', 'trailer', 'userrating', 'year'):
            if metadata[tag] and _allow_change(self, tag, overwrite):
                self[tag] = metadata[tag]

        # pull tags needing renaming
        for tagf, tagt in (('description', 'plot'), ('runtime', 'length')):
            if metadata[tagf] and _allow_change(self, tagt, overwrite):
                self[tagt] = metadata[tagf]

        # pull director
        try:
            if _allow_change(self, 'director', overwrite):
                self.director = [person.name for person in metadata.people \
                                            if person.job=='Director'].pop(0)
        except IndexError:
            pass

        # pull actors
        for actor in [person for person in metadata.people \
                                  if person.job=='Actor']:
            self.cast.add(unicode(actor.name))

        # pull genres
        for category in metadata.categories:
            self.genre.add(unicode(category))

        # pull images (SG content only)
        if bool(self.host):
            # only perform image grabs if 'host' is set, denoting SG use
            t1 = ['coverart', 'fanart', 'banner', 'screenshot']
            t2 = ['coverfile', 'fanart', 'banner', 'screenshot']
            mdtype = dict(zip(t1, t2))
            exists = dict(zip(t1, [False, False, False, False]))

            be = FileOps(self.host, db=self._db)
            for image in metadata.images:
                if exists[image.type]:
                    continue
                if not _allow_change(self, mdtype[image.type], overwrite):
                    continue
                self[mdtype[image.type]] = image.filename
                group = self._getGroup(self.host, image.type, self._db)
                if not be.fileExists(image.filename, group):
                    be.downloadTo(image.url, group, image.filename)
                exists[image.type] = True

        self.processed = True
        self.update()