add source page url, open with e key
This commit is contained in:
11
app.py
11
app.py
@@ -38,16 +38,19 @@ def scrape_images(query, page=0):
|
|||||||
except requests.RequestException as e:
|
except requests.RequestException as e:
|
||||||
return [], str(e)
|
return [], str(e)
|
||||||
|
|
||||||
# Bing encodes original image URLs as murl":"https://..."
|
# Bing HTML-encodes image data: purl = source page, murl = image URL
|
||||||
raw_urls = re.findall(r'murl":"(https?://[^&]+)"', resp.text)
|
entries = re.findall(
|
||||||
|
r'purl":"(https?://[^&]+)".*?murl":"(https?://[^&]+)"',
|
||||||
|
resp.text,
|
||||||
|
)
|
||||||
|
|
||||||
seen = set()
|
seen = set()
|
||||||
images = []
|
images = []
|
||||||
for img_url in raw_urls:
|
for page_url, img_url in entries:
|
||||||
if img_url in seen:
|
if img_url in seen:
|
||||||
continue
|
continue
|
||||||
seen.add(img_url)
|
seen.add(img_url)
|
||||||
images.append({"url": img_url})
|
images.append({"url": img_url, "source": page_url})
|
||||||
if len(images) >= 30:
|
if len(images) >= 30:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|||||||
@@ -246,6 +246,7 @@ document.addEventListener("keydown", e => {
|
|||||||
if (e.key === "ArrowRight") next_image();
|
if (e.key === "ArrowRight") next_image();
|
||||||
else if (e.key === "ArrowLeft") prev_image();
|
else if (e.key === "ArrowLeft") prev_image();
|
||||||
else if (e.key === "Escape") close_gallery();
|
else if (e.key === "Escape") close_gallery();
|
||||||
|
else if (e.key === "e" && images[current_idx]?.source) window.open(images[current_idx].source, "_blank");
|
||||||
});
|
});
|
||||||
|
|
||||||
// ── event listeners ────────────────────────────────────────────────────────
|
// ── event listeners ────────────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user