From cff04f1181685dce7d8191374eeaba7d6b1a82be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sun, 30 Nov 2025 19:23:10 +0100 Subject: [PATCH] [dl:http] implement '_http_segmented' (#8602) --- gallery_dl/downloader/http.py | 12 +++++++++--- gallery_dl/extractor/audiochan.py | 6 +++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gallery_dl/downloader/http.py b/gallery_dl/downloader/http.py index 813e0fc8..8ea6a007 100644 --- a/gallery_dl/downloader/http.py +++ b/gallery_dl/downloader/http.py @@ -342,9 +342,15 @@ class HttpDownloader(DownloaderBase): raise # check file size - if size and fp.tell() < size: - msg = f"file size mismatch ({fp.tell()} < {size})" - output.stderr_write("\n") + if size and (fsize := fp.tell()) < size: + if (segmented := kwdict.get("_http_segmented")) and \ + segmented is True or segmented == fsize: + tries -= 1 + msg = "Resuming segmented download" + output.stdout_write("\r") + else: + msg = f"file size mismatch ({fsize} < {size})" + output.stderr_write("\n") continue break diff --git a/gallery_dl/extractor/audiochan.py b/gallery_dl/extractor/audiochan.py index 66f00ae7..768b2003 100644 --- a/gallery_dl/extractor/audiochan.py +++ b/gallery_dl/extractor/audiochan.py @@ -59,9 +59,13 @@ class AudiochanExtractor(Extractor): if self.user: post["user"] = post["credits"][0]["user"] + if not (url := file["url"]): + post["_http_segmented"] = 600000 + url = file["stream_url"] + yield Message.Directory, post text.nameext_from_name(file["filename"], post) - yield Message.Url, file["url"] or file["stream_url"], post + yield Message.Url, url, post def request_api(self, endpoint, params=None): url = self.root_api + endpoint