Esempio n. 1
0
	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
Esempio n. 2
0
	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
Esempio n. 3
0
	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