import subprocess, xml.etree.ElementTree as ET, time, sys BGG_KEY = open('/tmp/.bggkey').read().strip() HEADER = "Authorization: Bearer *** + BGG_KEY # Wait for rate limit time.sleep(10) # Check all Valk results url = 'https://boardgamegeek.com/xmlapi2/search?query=Valk&type=boardgame' r = subprocess.run(['curl', '-s', '-H', HEADER, url], capture_output=True, text=True, timeout=30) root = ET.fromstring(r.stdout) items = root.findall('item') print(f'Total Valk items: {len(items)}') for item in items: n = item.find('name') name_val = n.get('value','') if n is not None else '' item_id = item.get('id','') if 'valkyo' in name_val.lower(): print(f' MATCH! id={item_id} name={name_val}') elif 'valky' in name_val.lower(): print(f' PARTIAL: id={item_id} name={name_val}') time.sleep(3) # Check all Insanity results url = 'https://boardgamegeek.com/xmlapi2/search?query=Insanity&type=boardgame' r = subprocess.run(['curl', '-s', '-H', HEADER, url], capture_output=True, text=True, timeout=30) root = ET.fromstring(r.stdout) items = root.findall('item') print(f'\nTotal Insanity items: {len(items)}') for item in items: n = item.find('name') name_val = n.get('value','') if n is not None else '' item_id = item.get('id','') if 'insanità' in name_val.lower() or 's.p.a' in name_val.lower(): print(f' MATCH? id={item_id} name={name_val}') elif 'insanit' in name_val.lower(): print(f' PARTIAL: id={item_id} name={name_val}') time.sleep(3) # Try INSANITA exact search again url = 'https://boardgamegeek.com/xmlapi2/search?query=INSANIT%C3%80&type=boardgame&exact=1' r = subprocess.run(['curl', '-s', '-H', HEADER, url], capture_output=True, text=True, timeout=30) print(f'\nINSANITA exact search: {r.stdout[:500]}') time.sleep(3) # Try VALKYO exact search url = 'https://boardgamegeek.com/xmlapi2/search?query=VALKYO&type=boardgame&exact=1' r = subprocess.run(['curl', '-s', '-H', HEADER, url], capture_output=True, text=True, timeout=30) print(f'\nVALKYO exact search: {r.stdout[:500]}')