okfn-brasil / querido-diario

📰 Diários oficiais brasileiros acessíveis a todos | 📰 Brazilian government gazettes, accessible to everyone.
https://queridodiario.ok.org.br/
MIT License
1.07k stars 391 forks source link

Fix date and datetime validation to allow upgrade of Spidermon #935

Closed rennerocha closed 12 months ago

rennerocha commented 12 months ago

AO ABRIR um Pull Request de um novo raspador (spider), marque com um X cada um dos items do checklist abaixo. NÃO ABRA um novo Pull Request antes de completar todos os items abaixo.

Checklist - Novo spider

Descrição

<Descreva o seu Pull Request informando a issue (caso exista) que está sendo solucionada ou uma descrição do código apresentado>

rennerocha commented 12 months ago

A manipulação das datas foi necessário para que o jsonschema pudesse validar os campos de data

Relacionado a: https://github.com/scrapinghub/spidermon/issues/420

Winzen commented 12 months ago

Olá! @rennerocha Testando aqui localmente sigo com o problema de validação. 😢

Desconsidere caso a mudança era realmente apenas focada na parte das datas e não sobre a validação geral.

Comandos e logs de teste: scrapy crawl ma_bacurituba -a start_date=2023-09-01 -s LOG_FILE=log_ma_bacurituba.txt scrapy crawl mg_candeias -a start_date=2023-09-01 -s LOG_FILE=log_mg_candeias.txt log_mg_candeias.txt log_ma_bacurituba.txt

rennerocha commented 12 months ago

Olá! @rennerocha Testando aqui localmente sigo com o problema de validação. 😢

Desconsidere caso a mudança era realmente apenas focada na parte das datas e não sobre a validação geral.

Comandos e logs de teste: scrapy crawl ma_bacurituba -a start_date=2023-09-01 -s LOG_FILE=log_ma_bacurituba.txt scrapy crawl mg_candeias -a start_date=2023-09-01 -s LOG_FILE=log_mg_candeias.txt log_mg_candeias.txt log_ma_bacurituba.txt

Bom, resolveu o problema de validação com as datas né? :man_shrugging:

Esse problema no files também parece estar relacionado. Vou tentar reproduzir aqui.

trevineju commented 12 months ago

Testei aqui, tanto no ambiente virtual com o upgrade de dependências quanto no ambiente como o QD está hoje, pós-reversão: não funciona em nenhuma ainda.

Porém, @rennerocha, vc viu ali no meu PR #930, que não dava mais erro de validação? desenvolvi aquele PR com as dependências atualizadas e bastou fazer aquela mudança que voltou a coletar. Imagino que só pq ali parou de dar erro, tb não significa que tenha um bug silencioso e isso se mistura com meu limitado conhecimento de Scrapy, mas como passou a funcionar, me chamou atenção...

Winzen commented 12 months ago

@rennerocha Fiz os teste aqui e tirando a questão com as datas chegando em string no banco de dados. Tudo parece estar funcionando agora. 🥳

Logs de teste com o erro WARNING: Something wrong has happened when adding the gazette in the database. Date: 2023-09-15. File Checksum: 67b0e7e6ba28c5f5597b5f4973829406. Details: ('(builtins.TypeError) SQLite Date type only accepts Python date objects as input.',) refente a "date" e "scraped_at" chegando como string.

log_ma_bacurituba.txt log_mg_candeias.txt

Transformando os mesmos de volta ao formato date e datetime com as linhas de codigo abaixo. Eles voltaram a ser registrados normalmente ao banco de dados

gazette_item["date"] = dt.datetime.strptime(gazette_item["date"], '%Y-%m-%d').date()
gazette_item["scraped_at"] = dt.datetime.fromisoformat(
    gazette_item["scraped_at"][:-1]
)

Logs pôs conversão:

log_mg_candeias(date_convertido).txt log_ma_bacurituba(date_convertido).txt