From 1807f77dd4dd8117db962f15c7da3ecf0921b959 Mon Sep 17 00:00:00 2001 From: pax Date: Sun, 5 Apr 2026 17:45:57 -0500 Subject: [PATCH] =?UTF-8?q?Fix=20Gelbooru=20CDN=20=E2=80=94=20pass=20Refer?= =?UTF-8?q?er=20header=20per-request?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Shared client doesn't set Referer globally since it varies per domain. Now passed as per-request header so Gelbooru CDN doesn't return HTML captcha pages. --- booru_viewer/core/cache.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/booru_viewer/core/cache.py b/booru_viewer/core/cache.py index 4681417..993d8d1 100644 --- a/booru_viewer/core/cache.py +++ b/booru_viewer/core/cache.py @@ -159,12 +159,14 @@ async def download_image( log_connection(url) + req_headers = {"Referer": referer} + own_client = client is None if own_client: client = _get_shared_client() try: if progress_callback: - async with client.stream("GET", url) as resp: + async with client.stream("GET", url, headers=req_headers) as resp: resp.raise_for_status() content_type = resp.headers.get("content-type", "") if "text/html" in content_type: @@ -179,7 +181,7 @@ async def download_image( data = b"".join(chunks) local.write_bytes(data) else: - resp = await client.get(url) + resp = await client.get(url, headers=req_headers) resp.raise_for_status() content_type = resp.headers.get("content-type", "") if "text/html" in content_type: