def run(self): '''Task dispatcher loop''' for job in iter(self.queue.get, self.QUIT): status_data = Downloader.ClipData() status_data.URL = job.url status_data.status = Downloader.Status.INPROGRESS self.progress.notify(status_data) try: job.download() status_data = Downloader.ClipData() status_data.URL = job.url status_data.status = Downloader.Status.DONE self.progress.notify(status_data) self.queue.task_done() except Exception as e: status_data = Downloader.ClipData() status_data.URL = job.url status_data.status = Downloader.Status.ERROR self.progress.notify(status_data) self.queue.task_done() self.queue.put(self.CANCEL) for job in iter(self.queue.get, self.CANCEL): job.cancel() self.queue.task_done() self.queue.task_done()
def add(self, callback, url): '''Add new task to queue''' status_data = Downloader.ClipData() status_data.URL = url status_data.status = Downloader.Status.PENDING self.queue.put(Job(callback, url)) self.progress.notify(status_data)
def __init__(self, url, servant): self.servant = servant self.url = url self.clip_data = Downloader.ClipData(self.url, Downloader.Status.PENDING) self.servant.publisher_progress.notify(self.clip_data)
def notify_status(self, status): '''Notifica un cambio en el estado de la canción''' status_data = Downloader.ClipData() status_data.URL = self.url status_data.status = status self.Progress_Event.notify(status_data)