def __build_download(self): """ parse job data and build appropriate download object """ if self.__job.getElementsByTagName("msgid")[0].hasChildNodes(): factory = self.newzbin_factory else: in_progress = self.meta_ds.get_in_progress(self.title) if in_progress is None: factory = self.episode_factory else: factory = Dependency(in_progress['source'], is_instance_of(EpisodeFactory)).__get__() try: download = factory.create_episode(self.title) except (InvalidMultiEpisodeData, MissingParameterError): raise InvalidItemTitle("unable to parse job title and create Episode object: '%s'" % self.title) except InvalidEpisodeString: raise InvalidItemTitle("unsupported job title format: '%s'" % self.title) # try and determine job quality record = self.meta_ds.get_in_progress(self.title) if record is not None: download.quality = record['quality'] return download
def get_delayed_items(self): """ return list of all items found in delayed_item table """ factories = {} list = [] for r in self.__dbh.execute("SELECT title, source, url, type, priority, quality, delay, size FROM delayed_item"): if r['source'] not in factories: factories[r['source']] = Dependency(r['source'], is_instance_of(ItemFactory)) factory = factories[r['source']].__get__() list.append(factory.create_item(r['title'], r['url'], r['type'], r['priority'], r['quality'], r['delay'], r['size'])) return list
def get_actionable_delayed_items(self): """ return list of items from the delayed_item table that have delay value less than 1 """ factories = {} # iterate over all tuples with delay < 1 and create new item objects items = [] for r in self.__dbh.execute("SELECT title, source, url, type, priority, quality, delay, size FROM delayed_item WHERE delay < 1"): if r['source'] not in factories: factories[r['source']] = Dependency(r['source'], is_instance_of(ItemFactory)) factory = factories[r['source']].__get__() items.append(factory.create_item(r['title'], r['url'], r['type'], r['priority'], r['quality'], r['delay'], r['size'])) return items