From 0f5cdc3d4977f3c525a7b444c8163ce7edc56c53 Mon Sep 17 00:00:00 2001 From: NTFSvolume <172021377+NTFSvolume@users.noreply.github.com> Date: Mon, 9 Mar 2026 12:17:40 -0500 Subject: [PATCH] fix: handle more redirects (bunkr) --- cyberdrop_dl/crawlers/bunkrr.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/cyberdrop_dl/crawlers/bunkrr.py b/cyberdrop_dl/crawlers/bunkrr.py index a147b25bc..bc7d617cd 100644 --- a/cyberdrop_dl/crawlers/bunkrr.py +++ b/cyberdrop_dl/crawlers/bunkrr.py @@ -37,7 +37,11 @@ class Selector: VIDEO_AND_IMAGE_EXTS: set[str] = FILE_FORMATS["Images"] | FILE_FORMATS["Videos"] HOST_OPTIONS: set[str] = {"bunkr.site", "bunkr.cr", "bunkr.ph"} -DEEP_SCRAPE_CDNS: set[str] = {"burger", "milkshake"} # CDNs under maintanance, ignore them and try to get a cached URL +DEEP_SCRAPE_CDNS: set[str] = { + "burger", + "milkshake", + "static.scdn.st", +} # CDNs under maintanance, ignore them and try to get a cached URL FILE_KEYS = "id", "name", "original", "slug", "type", "extension", "size", "timestamp", "thumbnail", "cdnEndpoint" known_bad_hosts: set[str] = set() @@ -133,7 +137,7 @@ async def fetch(self, scrape_item: ScrapeItem) -> None: return await self.reinforced_file(scrape_item, file_id) case ["a", album_id]: return await self.album(scrape_item, album_id) - case ["v", _]: + case ["v" | "d", _]: return await self.follow_redirect(scrape_item) case ["f", _]: return await self.file(scrape_item) @@ -173,14 +177,16 @@ async def _album_file(self, scrape_item: ScrapeItem, file: File, results: dict[s try: src = file.src() except ValueError: - deep_scrape = True + self.create_task(self.run(scrape_item)) + return - deep_scrape = deep_scrape or ( + deep_scrape = ( src.suffix.lower() not in VIDEO_AND_IMAGE_EXTS or "no-image" in src.name or self.deep_scrape or any(cdn in src.host for cdn in DEEP_SCRAPE_CDNS) ) + if deep_scrape: self.create_task(self.run(scrape_item)) return