Update app2.py
Browse files
app2.py
CHANGED
@@ -329,27 +329,24 @@ def query_public_case_law(query: str) -> List[Dict[str, Any]]:
|
|
329 |
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
|
330 |
}
|
331 |
try:
|
332 |
-
justia_response = requests.get(justia_url, headers=justia_headers
|
333 |
-
justia_response.raise_for_status()
|
334 |
-
|
335 |
justia_soup = BeautifulSoup(justia_response.text, 'html.parser')
|
336 |
justia_results = justia_soup.find_all('div', class_='case-listing')
|
337 |
|
338 |
for result in justia_results[:3]: # Limit Justia results to 3
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
except Exception as e:
|
352 |
-
print(f"Error processing Justia result: {e}")
|
353 |
except requests.RequestException as e:
|
354 |
print(f"Error querying Justia: {e}")
|
355 |
|
@@ -357,51 +354,33 @@ def query_public_case_law(query: str) -> List[Dict[str, Any]]:
|
|
357 |
courtlistener_url = f"https://www.courtlistener.com/api/rest/v3/search/?q={query}&type=o&format=json"
|
358 |
for attempt in range(3): # Retry up to 3 times
|
359 |
try:
|
360 |
-
courtlistener_response = requests.get(courtlistener_url
|
361 |
courtlistener_response.raise_for_status()
|
362 |
courtlistener_data = courtlistener_response.json()
|
363 |
-
break
|
364 |
except (requests.RequestException, ValueError) as e:
|
365 |
print(f"Attempt {attempt + 1} failed: {e}")
|
366 |
if attempt == 2:
|
367 |
-
print(
|
|
|
|
|
|
|
368 |
time.sleep(2)
|
369 |
|
370 |
if 'results' in courtlistener_data:
|
371 |
-
for result in courtlistener_data['results'][:3]:
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
summary = extract_courtlistener_summary(case_page_soup)
|
382 |
-
|
383 |
-
cases.append({
|
384 |
-
"source": "CourtListener",
|
385 |
-
"case_name": result['caseName'],
|
386 |
-
"date_filed": result['dateFiled'],
|
387 |
-
"docket_number": result.get('docketNumber', 'Not available'),
|
388 |
-
"court": result['court'],
|
389 |
-
"url": case_url,
|
390 |
-
"summary": summary # Add the extracted summary
|
391 |
-
})
|
392 |
-
except Exception as e:
|
393 |
-
print(f"Error processing CourtListener result: {e}")
|
394 |
|
395 |
return cases
|
396 |
|
397 |
-
def extract_courtlistener_summary(soup: BeautifulSoup) -> str:
|
398 |
-
"""Extracts the case summary from a CourtListener case page."""
|
399 |
-
summary_element = soup.find('div', class_='summary')
|
400 |
-
if summary_element:
|
401 |
-
return summary_element.get_text(strip=True)
|
402 |
-
else:
|
403 |
-
return "Summary not available."
|
404 |
-
|
405 |
def comprehensive_document_analysis(content: str) -> Dict[str, Any]:
|
406 |
"""Performs a comprehensive analysis of the document, including web and Wikipedia searches."""
|
407 |
try:
|
@@ -1590,7 +1569,7 @@ elif feature == "Case Precedent Finder":
|
|
1590 |
|
1591 |
st.write("### Related Cases from Public Databases")
|
1592 |
for i, case in enumerate(precedents["public_cases"], 1):
|
1593 |
-
st.write(f"**{i}. {case['case_name']} ({case['source']}) - {case.get('citation', '')}**")
|
1594 |
st.write(f"Summary: {case.get('summary', 'Not available')}")
|
1595 |
st.write(f"[Read full case]({case['url']})")
|
1596 |
st.write("---")
|
|
|
329 |
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
|
330 |
}
|
331 |
try:
|
332 |
+
justia_response = requests.get(justia_url, headers=justia_headers)
|
333 |
+
justia_response.raise_for_status()
|
|
|
334 |
justia_soup = BeautifulSoup(justia_response.text, 'html.parser')
|
335 |
justia_results = justia_soup.find_all('div', class_='case-listing')
|
336 |
|
337 |
for result in justia_results[:3]: # Limit Justia results to 3
|
338 |
+
title = result.find('h6').text.strip()
|
339 |
+
citation = result.find('p', class_='citation').text.strip()
|
340 |
+
summary = result.find('p', class_='summary').text.strip()
|
341 |
+
url = result.find('a')['href']
|
342 |
+
cases.append({
|
343 |
+
"source": "Justia",
|
344 |
+
"case_name": title,
|
345 |
+
"citation": citation,
|
346 |
+
"summary": summary,
|
347 |
+
"url": url
|
348 |
+
})
|
349 |
+
|
|
|
|
|
350 |
except requests.RequestException as e:
|
351 |
print(f"Error querying Justia: {e}")
|
352 |
|
|
|
354 |
courtlistener_url = f"https://www.courtlistener.com/api/rest/v3/search/?q={query}&type=o&format=json"
|
355 |
for attempt in range(3): # Retry up to 3 times
|
356 |
try:
|
357 |
+
courtlistener_response = requests.get(courtlistener_url)
|
358 |
courtlistener_response.raise_for_status()
|
359 |
courtlistener_data = courtlistener_response.json()
|
360 |
+
break
|
361 |
except (requests.RequestException, ValueError) as e:
|
362 |
print(f"Attempt {attempt + 1} failed: {e}")
|
363 |
if attempt == 2:
|
364 |
+
print(
|
365 |
+
f"Failed to retrieve or parse data from CourtListener: {e}"
|
366 |
+
)
|
367 |
+
break
|
368 |
time.sleep(2)
|
369 |
|
370 |
if 'results' in courtlistener_data:
|
371 |
+
for result in courtlistener_data['results'][:3]: # Limit to 3 results
|
372 |
+
case_url = f"https://www.courtlistener.com{result['absolute_url']}"
|
373 |
+
cases.append({
|
374 |
+
"source": "CourtListener",
|
375 |
+
"case_name": result['caseName'],
|
376 |
+
"date_filed": result['dateFiled'],
|
377 |
+
"docket_number": result.get('docketNumber', 'Not available'),
|
378 |
+
"court": result['court'],
|
379 |
+
"url": case_url
|
380 |
+
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
381 |
|
382 |
return cases
|
383 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
384 |
def comprehensive_document_analysis(content: str) -> Dict[str, Any]:
|
385 |
"""Performs a comprehensive analysis of the document, including web and Wikipedia searches."""
|
386 |
try:
|
|
|
1569 |
|
1570 |
st.write("### Related Cases from Public Databases")
|
1571 |
for i, case in enumerate(precedents["public_cases"], 1):
|
1572 |
+
st.write(f"**{i}. {case['case_name']} ({case['source']}) - {case.get('citation', '')}**")
|
1573 |
st.write(f"Summary: {case.get('summary', 'Not available')}")
|
1574 |
st.write(f"[Read full case]({case['url']})")
|
1575 |
st.write("---")
|