Projeto de pesquisa desenvolvido como parte da minha tese de doutorado sendo realizada no Programa de Pós-Graduação em Ciência Política da Universidade Estadual de Campinas (Unicamp). O projeto é financiado pelo Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq), Brasil.
Este repositório reúne scripts e dados para coleta, atualização e análise de conteúdo de canais do YouTube no contexto de pesquisa em Humanidades Digitais.
Principais objetivos:
- Coletar metadados de vídeos e comentários.
- Atualizar periodicamente os dados dos canais monitorados.
- Armazenar os resultados em base relacional (SQLite).
- Apoiar análises exploratórias e de NLP (incluindo transcrição de áudio).
- Download das transcrições com
YouTube Transcript API+ Whisper/OpenAI +yt-dlp. Usa-se Whisper quando não há transcrição automática disponível ou para comparar resultados. - Coleta (scraping/API) com Python e YouTube Data API v3.
- Whisper
- GitHub Whisper
- WhisperCPP
- EasyWhisperUi
- YouTube Data API v3
- YouTube Transcript API
- yt-dlp
- Google API Python Client
- SQLite3
Para cada vídeo, o projeto busca armazenar:
- Autor/canal
- URL
- Data de publicação
- Número de visualizações
- Número de likes
- Número de comentários
- Conteúdo dos comentários
- Likes dos comentários
api/— cliente e integrações de API.audio/— rotinas de áudio/transcrição.data/— arquivos CSV e saídas processadas.db/— base SQLite local.pipeline/— análises e visualizações.services/,models/,database/— camadas auxiliares de dados e domínio.
git clone https://github.com/geraldohomero/dh-youtube-database.git
cd dh-youtube-database
python -m venv .venv
source .venv/bin/activate # Linux/macOS
pip install -r requirements.txtCrie/edite o arquivo .env com os campos abaixo:
YOUTUBE_API_KEYS=<API_KEYS...>
CHANNEL_IDS=<CHANNEL_ID...>
DB_CONFIG=<DB_PATH>
WEBSHARE_PROXY_USERNAME=<USERNAME>
WEBSHARE_PROXY_PASSWORD=<PASSWORD>Fluxo mínimo sugerido:
-
Atualização anual/geral de canais
- Script:
canaisAtualizacaoAnual.py
- Script:
-
Persistência em banco
- Script:
toDatabase.pyouperiodo.py(dependendo do escopo da atualização)
- Script:
-
Análise de canal específico (pipeline)
- Script:
pipeline/canalEspecifico.py
- Script:
Exemplo de execução:
python canaisAtualizacaoAnual.py
python toDatabase.py
python pipeline/canalEspecifico.py- Script SQL base:
database.sql - Banco SQLite local:
db/YouTubeStats.sqlite3
- Consulte CITATION.cff para referência acadêmica do projeto.
- Se usar esta base em pesquisa, cite o DOI indicado no topo deste documento.
