#!/usr/bin/env python3 """Extract board game deals from 3 sources, verify on brettspielpreise.de, output JSON.""" import re import json import urllib.request import urllib.parse import urllib.error import html import time import sys import statistics def fetch_brettspielpreise(name): """Search brettspielpreise.de for a game and return best price + median by scraping HTML.""" try: data = urllib.parse.urlencode({"search": name}).encode("utf-8") req = urllib.request.Request( "https://brettspielpreise.de/item/search", data=data, headers={ "User-Agent": "Mozilla/5.0 (compatible; HermesAgent/1.0)", "Content-Type": "application/x-www-form-urlencoded", "Accept": "text/html", } ) with urllib.request.urlopen(req, timeout=15) as resp: body = resp.read().decode("utf-8") except Exception as e: print(f" [WARN] HTTP error for '{name}': {e}", file=sys.stderr) return None, None prices_all = [] # Split by result rows (each row starts with itemimg div) result_blocks = re.split(r'