Files
astraea-books/.case-verify/leagle_search.py
2026-10-06 23:43:44 -07:00

76 lines
2.9 KiB
Python

import re, subprocess, json, time, os
UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36"
CK = "/tmp/lg_c.txt"
CASES = [
("Littlefield", "Littlefield", "64471-3"),
("Kovacs", "Kovacs", "60035-0"),
("Chumbley", "Chumbley", "72539-0"),
("Short", "Short", "61176-9"),
("Borghi", "Gilroy", "80925-9"),
("Elam", "Elam", "48219-5"),
("Konzen", "Konzen", "50402-4"),
("Witte", "Witte", "29341"),
("Skarbek", "Skarbek", "18013-1-III"),
("PearsonMaines", "Pearson-Maines", "29873-9-I"),
("Olivares", "Olivares", "28758-3-I"),
("Sedlock", "Sedlock", "28848-2-I"),
("Glorfield", "Glorfield", "3410-1-III"),
("Hadley", "Hadley", "44308"),
("Mueller", "Mueller", "57592-9-I"),
("White", "White", "23917-5-II"),
("Schwarz", "Schwarz", "32274-2-III"),
("Kraft", "Kraft", "58247-5"),
("Berol", "Berol", "31379"),
("Brewer", "Brewer", "66577-0"),
("Brown", "Brown", "49548-3"),
]
def curl(url, cookie_file=None, write=False, get_params=None):
cmd = ["curl", "-s", "-m", "40", "-H", f"User-Agent: {UA}"]
if cookie_file:
cmd += ["-b", cookie_file, "-c", cookie_file]
if get_params:
cmd += ["-G"]
for k, v in get_params.items():
cmd += ["--data-urlencode", f"{k}={v}"]
cmd.append(url)
r = subprocess.run(cmd, capture_output=True, text=True, timeout=50)
return r.stdout
def leagle_search(query):
h = curl("https://www.leagle.com/leaglesearch", cookie_file=CK,
get_params={"casen": query, "crt": "Washington"})
results = []
for m in re.finditer(r'<a href="https://www\.leagle\.com/decision/([a-z0-9]+)"[^>]*>\s*<h3>([^<]+)\(\s*<span class="dec-date">([^<]+)</span>\s*\)\s*</h3>\s*<p>(.*?)</p>', h, re.S):
did, name, date, info = m.group(1), m.group(2).strip(), m.group(3).strip(), m.group(4)
info = re.sub(r'<[^>]+>', ' ', info)
info = re.sub(r'\s+', ' ', info).strip()
results.append({"id": did, "name": name, "date": date, "info": info})
return results
# ensure cookies
curl("https://www.leagle.com/search", cookie_file=CK)
time.sleep(1)
all_res = {}
for key, query, docket in CASES:
rs = leagle_search(query)
picked = None
# prefer docket match
for r in rs:
if docket.replace("-", "") in r["info"].replace("-", "").replace(" ", ""):
picked = r; break
if not picked:
for r in rs:
n = r["name"].lower()
if key.lower() in n and ("marriage" in n or "estate" in n or key.lower() == "berol"):
picked = r; break
all_res[key] = picked
print(key, "=>", (picked["id"], picked["date"], picked["info"][:70]) if picked else f"NOT FOUND ({len(rs)} results)")
time.sleep(3)
json.dump(all_res, open("/Users/drjones/astraea-books/.case-verify/leagle/leagle_urls.json", "w"), indent=1)
print("saved")