File size: 1,680 Bytes
b489ffd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | import os
import requests
from dotenv import load_dotenv
load_dotenv()
GOOGLE_FACT_CHECK_API_KEY = os.getenv("GOOGLE_FACT_CHECK_API_KEY")
def verify_claim_with_google(claim):
if not GOOGLE_FACT_CHECK_API_KEY:
return {
"verified": False,
"error": "GOOGLE_FACT_CHECK_API_KEY is not set",
}
url = "https://factchecktools.googleapis.com/v1alpha1/claims:search"
params = {
"query": claim,
"key": GOOGLE_FACT_CHECK_API_KEY,
"languageCode": "en"
}
try:
response = requests.get(url, params=params, timeout=10)
except requests.RequestException as e:
return {
"verified": False,
"error": str(e)
}
if response.status_code != 200:
return {
"verified": False,
"error": response.text
}
data = response.json()
claims = data.get("claims", [])
if not claims:
return {
"verified": False,
"message": "No fact-check data found."
}
first_claim = claims[0]
claimant = first_claim.get("claimant", "Unknown")
text = first_claim.get("text", claim)
reviews = first_claim.get("claimReview", [])
if reviews:
review = reviews[0]
return {
"verified": True,
"claim": text,
"claimant": claimant,
"publisher": review.get("publisher", {}).get("name", "Unknown"),
"rating": review.get("textualRating", "Unknown"),
"url": review.get("url", "")
}
return {
"verified": False,
"message": "Claim found but no review available."
}
|