From bbbeff4c41f5b5a5959e6b1893d5bdb1e2e62a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Tue, 19 Nov 2019 23:50:54 +0100 Subject: [PATCH] [downloader.http] implement file-specific HTTP headers --- gallery_dl/downloader/http.py | 9 ++++++--- test/test_results.py | 5 +++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/gallery_dl/downloader/http.py b/gallery_dl/downloader/http.py index 1c78cfbd..03f92b29 100644 --- a/gallery_dl/downloader/http.py +++ b/gallery_dl/downloader/http.py @@ -77,12 +77,15 @@ class HttpDownloader(DownloaderBase): time.sleep(min(2 ** (tries-1), 1800)) tries += 1 + headers = {} # check for .part file filesize = pathfmt.part_size() if filesize: - headers = {"Range": "bytes={}-".format(filesize)} - else: - headers = None + headers["Range"] = "bytes={}-".format(filesize) + # file-specific headers + extra = pathfmt.kwdict.get("_http_headers") + if extra: + headers.update(extra) # connect to (remote) source try: diff --git a/test/test_results.py b/test/test_results.py index 8c797245..25f2becb 100644 --- a/test/test_results.py +++ b/test/test_results.py @@ -189,7 +189,7 @@ class ResultJob(job.DownloadJob): self._update_url(url) self._update_kwdict(kwdict) self._update_archive(kwdict) - self._update_content(url) + self._update_content(url, kwdict) self.format_filename(kwdict) def handle_directory(self, kwdict): @@ -217,9 +217,10 @@ class ResultJob(job.DownloadJob): self.archive_list.append(archive_id) self.archive_hash.update(archive_id.encode()) - def _update_content(self, url): + def _update_content(self, url, kwdict): if self.content: scheme = url.partition(":")[0] + self.fileobj.kwdict = kwdict self.get_downloader(scheme).download(url, self.fileobj)