import json, urllib.request, urllib.parse, time urls = { "Littlefield": "https://www.leagle.com/decision/19972302940p2d136212273", "Kovacs": "https://www.leagle.com/decision/1993916121wn2d7951867", "Chumbley": "https://www.leagle.com/decision/200320374p3d1291201", "Short": "https://www.leagle.com/decision/1995990125wn2d8651942", "Borghi": "https://www.leagle.com/decision/inwaco20091105c91", "Elam": "https://www.leagle.com/decision/198290897wn2d8111823", "Konzen": "https://www.leagle.com/decision/1985573103wn2d4701535", "Skarbek": "https://www.leagle.com/decision/20001444997p2d44711431", "PearsonMaines": "https://www.leagle.com/decision/199393070wnapp8601840", "Olivares": "https://www.leagle.com/decision/199339369wnapp3241358", "Sedlock": "https://www.leagle.com/decision/199355369wnapp4841494", "Glorfield": "https://www.leagle.com/decision/198038527wnapp3581343", "Hadley": "https://www.leagle.com/decision/197773788wn2d6491672", "Mueller": "https://www.leagle.com/decision/2007735167p3d5681730", "Schwarz": "https://www.leagle.com/decision/inwaco20160115u75", "Kraft": "https://www.leagle.com/decision/1992557119wn2d4381530", "Berol": "https://www.leagle.com/decision/195041737wn2d3801367", "Brewer": "https://www.leagle.com/decision/19991078976p2d10211078", } def get(url, tries=2): for i in range(tries): try: req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) with urllib.request.urlopen(req, timeout=40) as r: return json.loads(r.read()) except Exception as e: if i == tries-1: return {"error": str(e)} time.sleep(5) out = {} for name, u in urls.items(): d = get("https://archive.org/wayback/available?url=" + urllib.parse.quote(u, safe="")) snap = None if "archived_snapshots" in d and d["archived_snapshots"].get("closest", {}).get("available"): snap = d["archived_snapshots"]["closest"]["url"] out[name] = snap print(name, "=>", snap or "NO SNAPSHOT") time.sleep(2.5) json.dump(out, open("/Users/drjones/astraea-books/.case-verify/leagle/snapshots.json", "w"), indent=1) print("saved snapshots.json")