diff --git a/gallery_dl/job.py b/gallery_dl/job.py index 26aaa922..39ff07cb 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -145,7 +145,6 @@ class Job(): """Execute or run the job""" extractor = self.extractor log = extractor.log - msg = None self._init() @@ -156,8 +155,7 @@ class Job(): extractor.sleep(sleep(), "extractor") try: - for msg in extractor: - self.dispatch(msg) + msg = self.dispatch(extractor) except exception.StopExtraction as exc: if exc.depth > 1 and exc.target != extractor.__class__.subcategory: exc.depth -= 1 @@ -203,31 +201,36 @@ class Job(): self.status |= s return self.status - def dispatch(self, msg): + def dispatch(self, messages): """Call the appropriate message handler""" - if msg[0] == Message.Url: - _, url, kwdict = msg - if self.metadata_url: - kwdict[self.metadata_url] = url - if self.pred_url(url, kwdict): - self.update_kwdict(kwdict) - self.handle_url(url, kwdict) - if FLAGS.FILE is not None: - FLAGS.process("FILE") + msg = None - elif msg[0] == Message.Directory: - self.update_kwdict(msg[1]) - self.handle_directory(msg[1]) + for msg in messages: + if msg[0] == Message.Url: + _, url, kwdict = msg + if self.metadata_url: + kwdict[self.metadata_url] = url + if self.pred_url(url, kwdict): + self.update_kwdict(kwdict) + self.handle_url(url, kwdict) + if FLAGS.FILE is not None: + FLAGS.process("FILE") - elif msg[0] == Message.Queue: - _, url, kwdict = msg - if self.metadata_url: - kwdict[self.metadata_url] = url - if self.pred_queue(url, kwdict): - self.update_kwdict(kwdict) - self.handle_queue(url, kwdict) - if FLAGS.CHILD is not None: - FLAGS.process("CHILD") + elif msg[0] == Message.Directory: + self.update_kwdict(msg[1]) + self.handle_directory(msg[1]) + + elif msg[0] == Message.Queue: + _, url, kwdict = msg + if self.metadata_url: + kwdict[self.metadata_url] = url + if self.pred_queue(url, kwdict): + self.update_kwdict(kwdict) + self.handle_queue(url, kwdict) + if FLAGS.CHILD is not None: + FLAGS.process("CHILD") + + return msg def handle_url(self, url, kwdict): """Handle Message.Url""" @@ -948,8 +951,7 @@ class DataJob(Job): # collect data try: - for msg in extractor: - self.dispatch(msg) + self.dispatch(extractor) except exception.StopExtraction: pass except Exception as exc: diff --git a/test/test_results.py b/test/test_results.py index 78228874..08656863 100644 --- a/test/test_results.py +++ b/test/test_results.py @@ -426,8 +426,7 @@ class ResultJob(job.DownloadJob): def run(self): self._init() - for msg in self.extractor: - self.dispatch(msg) + self.dispatch(self.extractor) def handle_url(self, url, kwdict, fallback=None): self._update_url(url)