65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Quick check: are the buy-box shop links still valid?"""
|
|
import re, urllib.request, sys, os
|
|
|
|
WORKSPACE = '/home/hermes/workspace'
|
|
|
|
def check_url(url, timeout=8):
|
|
try:
|
|
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
|
|
resp = urllib.request.urlopen(req, timeout=timeout)
|
|
body = resp.read().decode('utf-8', errors='ignore')[:5000]
|
|
status = resp.getcode()
|
|
# Quick heuristics for availability
|
|
unavailable_patterns = [
|
|
'nicht lieferbar', 'ausverkauft', 'out of stock', 'derzeit nicht verfügbar',
|
|
'currently unavailable', 'vergriffen', 'nicht auf lager',
|
|
'leider ausverkauft', 'nicht mehr verfügbar'
|
|
]
|
|
body_lower = body.lower()
|
|
for pat in unavailable_patterns:
|
|
if pat in body_lower:
|
|
return f"❌ {pat}"
|
|
if status == 404:
|
|
return "❌ 404"
|
|
if status == 200:
|
|
return "✅ available"
|
|
return f"⚠️ status={status}"
|
|
except Exception as e:
|
|
return f"❌ {type(e).__name__}"
|
|
|
|
def main():
|
|
retro_files = sorted([
|
|
f for f in os.listdir(WORKSPACE)
|
|
if (('retro_2026-06-15' in f or 'sky_team_2026' in f or 'deep_regrets_2026' in f)
|
|
and f.endswith('.html'))
|
|
])
|
|
|
|
for fname in retro_files[:3]: # Just sample first 3
|
|
filepath = os.path.join(WORKSPACE, fname)
|
|
with open(filepath) as f:
|
|
content = f.read()
|
|
|
|
# Extract buy box links
|
|
buy_start = content.find('affiliate-box')
|
|
if buy_start < 0:
|
|
buy_start = content.find('buy-box')
|
|
if buy_start < 0:
|
|
print(f"\n{fname}: NO BUY BOX")
|
|
continue
|
|
|
|
# Extract links from buy box section
|
|
buy_section = content[buy_start:buy_start+2000]
|
|
links = re.findall(r'href="(https?://[^"]*)"', buy_section)
|
|
|
|
print(f"\n{fname} ({len(links)} links):")
|
|
for link in links:
|
|
# Extract shop name from URL
|
|
shop = re.search(r'https?://(?:www\.)?([^/]+)', link)
|
|
shop_name = shop.group(1) if shop else link[:50]
|
|
result = check_url(link)
|
|
print(f" {shop_name}: {result}")
|
|
|
|
if __name__ == '__main__':
|
|
main()
|