From db7f04dd975af53e120cfe3151b88f0bc57371cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sun, 28 Jan 2018 18:44:10 +0100 Subject: [PATCH] emit log messages on download failure and when retrying with fallback URLs --- gallery_dl/job.py | 15 ++++++++++++--- gallery_dl/util.py | 5 +++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gallery_dl/job.py b/gallery_dl/job.py index ab76accf..36ab277f 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -155,14 +155,20 @@ class DownloadJob(Job): def handle_url(self, url, keywords): """Download the resource specified in 'url'""" if self._prepare_download(keywords): - self.get_downloader(url).download(url, self.pathfmt) + dlobj = self.get_downloader(url) + if not dlobj.download(url, self.pathfmt): + self._report_failure(dlobj) def handle_urllist(self, urls, keywords): """Download the resource specified in 'url'""" if self._prepare_download(keywords): - for url in urls: - if self.get_downloader(url).download(url, self.pathfmt): + for num, url in enumerate(urls): + dlobj = self.get_downloader(url) + if num: + dlobj.log.info("Trying fallback URL #%d", num) + if dlobj.download(url, self.pathfmt): return + self._report_failure(dlobj) def handle_directory(self, keywords): """Set and create the target directory for downloads""" @@ -199,6 +205,9 @@ class DownloadJob(Job): time.sleep(self.sleep) return True + def _report_failure(self, dlobj): + dlobj.log.error("Failed to download %s", self.pathfmt.filename) + class KeywordJob(Job): """Print available keywords""" diff --git a/gallery_dl/util.py b/gallery_dl/util.py index dcdfe045..931b196d 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -352,6 +352,7 @@ class PathFormat(): self.has_extension = False self.keywords = {} + self.filename = "" self.directory = self.realdirectory = "" self.path = self.realpath = self.partpath = "" @@ -419,12 +420,12 @@ class PathFormat(): def build_path(self): """Use filename-keywords and directory to build a full path""" try: - filename = text.clean_path( + self.filename = text.clean_path( self.formatter.vformat(self.filename_fmt, self.keywords)) except Exception as exc: raise exception.FormatError(exc, "filename") - filename = os.sep + filename + filename = os.sep + self.filename self.path = self.directory + filename self.realpath = self.realdirectory + filename