Пример #1
0
    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()
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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)