76 lines
2.9 KiB
Python
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")
|