Requisição API Fact Check do Google

Olá,

Estou usando a API do Google Fact Check pela primeira vez.

Alguém já mexeu com ela antes? Gostaria de trocar uma ideia para ver se tô interpretando direito as informações que tô recebendo e se o código que eu criei tá correto.

Abraço!

OI, sou programador tenho interesse em explorar essa api e de repente posso te ajudar. Se quiser trocar uma ideia gostaria de ver o codigo que vc escreveu.

Oi, Rodrigo!

O meu código está no final desta mensagem.

Ao ler a documentação, eu entendi que há duas frentes de exploração dos dados: REIVINDICAÇÕES/CLAIMS e PÁGINAS/PAGES.

1) É certo eu dizer que REIVINDICAÇÕES permite capturar dados sobre as checagens e PÁGINAS permite colocar a ferramenta de checagem de fatos do Google nas páginas do meu site e/ou criar aplicações com esta ferramenta?

O meu código foca nas REIVINDICAÇÕES (não entendi bem o recurso PÁGINAS).

O resultado do meu código é um arquivo CSV que retorna as 5000 últimas checagens sobre determinado termo em todos os idiomas (parâmetros que eu defini no SEARCH). Para cada checagem, eu obtenho as seguintes informações:

  • Qual é o boato que está circulando
  • Quem espalhou o boato
  • Data do boato
  • URL da checagem
  • Veredicto da checagem
  • Data da checagem
  • Etiqueta da checagem
  • Idioma
  • Quem checou
  • Site de quem checou

2) Abaixo está o meu código. Hoje eu rodei ele buscando por “Lula” e obtive 3140 checagens sobre. Acha que o código está adequado pra finalidade de capturar as checagens sobre determinado termo?

pip install google-api-python-client

import pandas as pd 
from googleapiclient.discovery

def busca_fatos(query):    
    api_key = 'inserir seu próprio token de API'
    service = build('factchecktools', 'v1alpha1', developerKey=api_key)

    request = service.claims().search(query=query, pageSize= 5000)
    response = request.execute()

    return response['claims']

def converter_para_dataframe (dados):
   rows=[{
      'Boato': claim.get('text','N/A'),
      'Disseminador': claim.get('claimant', 'N/A'),
      'Data do boato': claim.get('claimDate', 'N/A'),
      'URL da checagem': claim['claimReview'][0].get('url', 'N/A') if claim['claimReview'] else 'N/A',
      'Veredicto': claim['claimReview'][0].get('title', 'N/A') if claim['claimReview'] else 'N/A',
      'Data da checagem': claim['claimReview'][0].get('reviewDate', 'N/A') if claim['claimReview'] else 'N/A',
      'Etiqueta': claim['claimReview'][0].get('textualRating', 'N/A') if claim['claimReview'] else 'N/A',
      'Idioma': claim['claimReview'][0].get('languageCode', 'N/A') if claim['claimReview'] else 'N/A',
      'Quem checou': claim['claimReview'][0]['publisher'].get('name', 'N/A') if claim['claimReview'] else 'N/A',
      'Site do checador': claim['claimReview'][0]['publisher'].get('site', 'N/A') if claim['claimReview'] else 'N/A'
  }

      for claim in dados if 'claimReview' in claim and claim['claimReview']]

  return pd.DataFrame(rows)

dados = busca_fatos("Lula")
df = converter_para_dataframe(dados)

df.to_csv('Lula.csv', index=False)

3) O método Search possui o parâmetro “languageCode”, eu posso escolher dois ou mais idiomas pra filtrar? Ou tenho que fazer buscas separadas pra cada idioma?

4) No query é possível colocar mais de um termo?

Agradeço desde já pela ajuda.

eu acho que vou conseguir dar uma olhada no seu codigo esse fim de semana. Eu tenho um projeto pessoal experimental que tem o objetivo de estudar tecnicas de scraping, mineração de dados e de emoção em texto, tokenização de conteúdos usando blockchain. Enfim, acho que essa api que vc ta usando encaixa nesse meu projeto tbm. Eu sou programador e não jornalista. Mas sou curioso.

Massa, Rodrigo!

Vamos trocando ideia por aqui

Algo que eu notei no meu código é que quando não há resultados pro termo que eu estou buscando (eu procurei checagens em inglês sobre “alexandre de moraes”) ele apresenta o seguinte erro: KeyError: ‘claims’

Acho que tá faltando no meu script um trecho de código com a orientação do que fazer caso não haja resultados para a minha busca.

Então eu rodei o script aqui sem problemas.

1 - Uma “claim” representa uma afirmação específica que está sendo verificada. Uma “page” na API Fact Check Tools se refere a uma página da web que contém informações relacionadas à afirmação verificada. não tem muito haver com colocar a ferramenta no site ou criar aplicações. A páginas é basicamente o link do site que fez a verificação da claim (alegação), quem verificou se é fakenews ou nao.

2 - O codigo funcionou perfeitamente, acho que ta adequado sim.

3 - Tentei usar com outros idiomas e nao consegui. Mas acredito que é uma questão de configuração

4 - Mais de um termo como? Eu coloquei “Lula e Elon Musk” e vieram 5 resultados só com assuntos diretamente ligado aos dois. Então acho que funciona sim