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."
    }