Pular para o conteúdo principal

brnews-db

brnews-db é um acervo de notícias em português coletadas automaticamente de feeds RSS/Atom (e de algumas páginas HTML) de veículos brasileiros.

Toda segunda-feira às 00:00 UTC (domingo, 21:00 em Brasília) um workflow do GitHub Actions percorre todos os feeds listados em rss.txt, normaliza o que encontra e grava um arquivo JSONL novo em data/. Arquivos antigos nunca são sobrescritos nem apagados — o acervo só cresce.

Mapa do repositório​

brnews-db/
├── rss.txt # lista de feeds (Nome|URL [| HTML])
├── requirements.txt # dependências Python do coletor
├── scripts/
│ ├── collect_news.py # ponto de entrada (CLI)
│ └── brnews/ # pacote do coletor
│ ├── feedlist.py # leitura/normalização de rss.txt
│ ├── fetcher.py # download com rotas direct/proxy/mirror
│ ├── parsers.py # RSS/Atom, HTML (JSON-LD, cards) e Markdown
│ └── collector.py # orquestração, dedupe e escrita dos JSONL
├── data/
│ ├── index.jsonl # histórico append-only de execuções
│ └── <ano>/news-*.jsonl # snapshots semanais (+ .report.json)
├── config/
│ └── proxies.example.txt # modelo da lista de proxies (a real é ignorada pelo git)
├── tests/ # testes offline (unittest + fixtures)
├── site/ # página inicial do projeto (Jekyll)
├── website/ # esta documentação (Docusaurus)
└── .github/workflows/
├── weekly-news.yml # coleta semanal + publicação append-only
├── ci.yml # testes + coleta de amostra em cada push/PR
└── pages.yml # publica Jekyll (raiz) + Docusaurus (/docs)

Componentes em uma frase​

ComponenteO que faz
feedlistLê rss.txt e transforma cada linha em um Feed com nome, slug, grupo, seção e tipo (rss/html).
fetcherBaixa cada URL tentando, em ordem, direct → proxy → mirror, com rodízio de proxies e validação de conteúdo.
parsersNormaliza o conteúdo baixado (RSS/Atom via feedparser; HTML via JSON-LD, cards e links; Markdown de espelhos).
collectorOrquestra o download em paralelo, deduplica, aplica filtros e grava news-*.jsonl, .report.json e index.jsonl.
collect_news.pyCLI que amarra tudo: argumentos, proxies, rotas e saídas para o GitHub Actions.

Fluxo resumido​

Por onde começar​