From 221015e5862cd7e54e2f26262a70a618664c605b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Tue, 27 Apr 2021 00:48:53 +0200 Subject: [PATCH] [downloader:http] disable filename extension changes for ugoira (#1507) --- gallery_dl/downloader/http.py | 17 ++++++++++------- gallery_dl/extractor/danbooru.py | 1 + gallery_dl/extractor/pixiv.py | 1 + 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/gallery_dl/downloader/http.py b/gallery_dl/downloader/http.py index bc42d7ccc54..76ec46f4f77 100644 --- a/gallery_dl/downloader/http.py +++ b/gallery_dl/downloader/http.py @@ -80,6 +80,10 @@ def _download_impl(self, url, pathfmt): tries = 0 msg = "" + kwdict = pathfmt.kwdict + adjust_extension = kwdict.get( + "_http_adjust_extension", self.adjust_extension) + if self.part: pathfmt.part_enable(self.partdir) @@ -105,7 +109,7 @@ def _download_impl(self, url, pathfmt): if self.headers: headers.update(self.headers) # file-specific headers - extra = pathfmt.kwdict.get("_http_headers") + extra = kwdict.get("_http_headers") if extra: headers.update(extra) @@ -139,7 +143,7 @@ def _download_impl(self, url, pathfmt): return False # check for invalid responses - validate = pathfmt.kwdict.get("_http_validate") + validate = kwdict.get("_http_validate") if validate and not validate(response): self.log.warning("Invalid response") return False @@ -168,7 +172,7 @@ def _download_impl(self, url, pathfmt): content = response.iter_content(self.chunk_size) # check filename extension against file header - if self.adjust_extension and not offset and \ + if adjust_extension and not offset and \ pathfmt.extension in FILE_SIGNATURES: try: file_header = next( @@ -198,7 +202,7 @@ def _download_impl(self, url, pathfmt): if file_header: fp.write(file_header) elif offset: - if self.adjust_extension and \ + if adjust_extension and \ pathfmt.extension in FILE_SIGNATURES: self._adjust_extension(pathfmt, fp.read(16)) fp.seek(offset) @@ -222,10 +226,9 @@ def _download_impl(self, url, pathfmt): self.downloading = False if self.mtime: - pathfmt.kwdict.setdefault( - "_mtime", response.headers.get("Last-Modified")) + kwdict.setdefault("_mtime", response.headers.get("Last-Modified")) else: - pathfmt.kwdict["_mtime"] = None + kwdict["_mtime"] = None return True diff --git a/gallery_dl/extractor/danbooru.py b/gallery_dl/extractor/danbooru.py index 1f86ea5ecde..3b96a4e684a 100644 --- a/gallery_dl/extractor/danbooru.py +++ b/gallery_dl/extractor/danbooru.py @@ -61,6 +61,7 @@ def items(self): "{}/posts/{}.json?only=pixiv_ugoira_frame_data".format( self.root, post["id"]) ).json()["pixiv_ugoira_frame_data"]["data"] + post["_http_adjust_extension"] = False else: url = post["large_file_url"] post["extension"] = "webm" diff --git a/gallery_dl/extractor/pixiv.py b/gallery_dl/extractor/pixiv.py index 8bfae06a78a..59a5f5c3384 100644 --- a/gallery_dl/extractor/pixiv.py +++ b/gallery_dl/extractor/pixiv.py @@ -66,6 +66,7 @@ def items(self): url = ugoira["zip_urls"]["medium"].replace( "_ugoira600x600", "_ugoira1920x1080") work["frames"] = ugoira["frames"] + work["_http_adjust_extension"] = False yield Message.Url, url, text.nameext_from_url(url, work) elif work["page_count"] == 1: