|
1 | | -## Digital Humanities Youtube Research Database (PhD Research Proposal) |
| 1 | +## Digital Humanities YouTube Research Database (PhD Research Proposal) |
2 | 2 |
|
3 | 3 | [](https://doi.org/10.5281/zenodo.15258448) |
4 | 4 |
|
5 | | -> Projeto de pesquisa financiado pelo [Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq)](https://cnpq.br), Brasil |
| 5 | +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](https://www.ifch.unicamp.br/pos/ciencia-politica) da Universidade Estadual de Campinas (Unicamp). O projeto é |
| 6 | +financiado pelo [Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq)](https://cnpq.br), Brasil. |
6 | 7 |
|
7 | | -## Base de dados |
| 8 | +## Visão geral |
8 | 9 |
|
9 | | -Essa base de dados irá contar com as seguintes ferramentas para análise |
| 10 | +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. |
10 | 11 |
|
11 | | -### **Python e Whisper (OpenAI)** |
12 | | -- Transcrição dos vídeos (Python e Whisper/OpenAI) |
13 | | -- Web scrapping (Python) e Google API V3 YouTube |
14 | | -- [Whisper](https://openai.com/index/whisper/) - [GitHub](https://github.com/openai/whisper) |
15 | | -### **YouTube data tools e Google API** |
16 | | ->Para cada vídeo: |
17 | | -- Autores (Canais) |
18 | | -- URLs |
19 | | -- Data do vídeo |
| 12 | +Principais objetivos: |
| 13 | + |
| 14 | +- Coletar metadados de vídeos e comentários. |
| 15 | +- Atualizar periodicamente os dados dos canais monitorados. |
| 16 | +- Armazenar os resultados em base relacional (SQLite). |
| 17 | +- Apoiar análises exploratórias e de NLP (incluindo transcrição de áudio). |
| 18 | + |
| 19 | +## Tecnologias e ferramentas |
| 20 | + |
| 21 | +### Python + Whisper (OpenAI) |
| 22 | + |
| 23 | +- 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. |
| 24 | +- Coleta (scraping/API) com Python e YouTube Data API v3. |
| 25 | + |
| 26 | +### Referências |
| 27 | + |
| 28 | +- [Whisper](https://openai.com/index/whisper/) |
| 29 | +- [GitHub Whisper](https://github.com/openai/whisper) |
| 30 | +- [WhisperCPP](https://github.com/ggerganov/whisper.cpp) |
| 31 | +- [EasyWhisperUi](https://github.com/mehtabmahir/easy-whisper-ui) |
| 32 | +- [YouTube Data API v3](https://developers.google.com/youtube/v3) |
| 33 | +- [YouTube Transcript API](https://github.com/jdepoix/youtube-transcript-api) |
| 34 | +- [yt-dlp](https://github.com/yt-dlp/yt-dlp) |
| 35 | +- [Google API Python Client](https://github.com/googleapis/google-api-python-client) |
| 36 | +- [SQLite3](https://www.sqlite.org/index.html) |
| 37 | + |
| 38 | +### YouTube Data Tools + Google API |
| 39 | + |
| 40 | +Para cada vídeo, o projeto busca armazenar: |
| 41 | + |
| 42 | +- Autor/canal |
| 43 | +- URL |
| 44 | +- Data de publicação |
20 | 45 | - Número de visualizações |
21 | 46 | - Número de likes |
22 | | -- Número de comentários |
23 | | -- Conteúdo dos comentários |
24 | | -- Número de likes dos comentários |
| 47 | +- Número de comentários |
| 48 | +- Conteúdo dos comentários |
| 49 | +- Likes dos comentários |
| 50 | + |
| 51 | +## Estrutura do projeto (resumo) |
| 52 | + |
| 53 | +- `api/` — cliente e integrações de API. |
| 54 | +- `audio/` — rotinas de áudio/transcrição. |
| 55 | +- `data/` — arquivos CSV e saídas processadas. |
| 56 | +- `db/` — base SQLite local. |
| 57 | +- `pipeline/` — análises e visualizações. |
| 58 | +- `services/`, `models/`, `database/` — camadas auxiliares de dados e domínio. |
| 59 | + |
| 60 | +## Configuração |
| 61 | + |
| 62 | +### 1) Clonar e instalar dependências |
| 63 | + |
| 64 | +```bash |
| 65 | +git clone https://github.com/geraldohomero/dh-youtube-database.git |
| 66 | +cd dh-youtube-database |
| 67 | +python -m venv .venv |
| 68 | +source .venv/bin/activate # Linux/macOS |
| 69 | +pip install -r requirements.txt |
| 70 | +``` |
| 71 | + |
| 72 | +### 2) Configurar variáveis de ambiente |
| 73 | + |
| 74 | +Crie/edite o arquivo `.env` com os campos abaixo: |
| 75 | + |
| 76 | +```env |
| 77 | +YOUTUBE_API_KEYS=<API_KEYS...> |
| 78 | +CHANNEL_IDS=<CHANNEL_ID...> |
| 79 | +DB_CONFIG=<DB_PATH> |
| 80 | +WEBSHARE_PROXY_USERNAME=<USERNAME> |
| 81 | +WEBSHARE_PROXY_PASSWORD=<PASSWORD> |
| 82 | +``` |
| 83 | + |
| 84 | +## Como executar |
| 85 | + |
| 86 | +Fluxo mínimo sugerido: |
25 | 87 |
|
26 | | -### Arquivo `.env`: |
| 88 | +1. **Atualização anual/geral de canais** |
| 89 | + - Script: `canaisAtualizacaoAnual.py` |
27 | 90 |
|
28 | | -```python |
29 | | -YOUTUBE_API_KEYS=<API_KEYS,API_KEYS,API_KEYS> |
30 | | -CHANNEL_IDS=<CHANNEL_ID> |
31 | | -DB_CONFIG=./db/YouTubeStats.sqlite3 |
| 91 | +2. **Persistência em banco** |
| 92 | + - Script: `toDatabase.py` ou `periodo.py` (dependendo do escopo da atualização) |
| 93 | +3. **Análise de canal específico (pipeline)** |
| 94 | + - Script: `pipeline/canalEspecifico.py` |
| 95 | + |
| 96 | +Exemplo de execução: |
| 97 | + |
| 98 | +```bash |
| 99 | +python canaisAtualizacaoAnual.py |
| 100 | +python toDatabase.py |
| 101 | +python pipeline/canalEspecifico.py |
32 | 102 | ``` |
33 | | -## ER Diagrama |
34 | 103 |
|
35 | | - |
| 104 | +## Banco de dados |
| 105 | + |
| 106 | +- Script SQL base: `database.sql` |
| 107 | +- Banco SQLite local: `db/YouTubeStats.sqlite3` |
| 108 | + |
| 109 | +## Diagrama ER |
| 110 | + |
| 111 | + |
| 112 | + |
| 113 | + |
| 114 | +## Licença e citação |
36 | 115 |
|
| 116 | +- Consulte [CITATION.cff](CITATION.cff) para referência acadêmica do projeto. |
| 117 | +- Se usar esta base em pesquisa, cite o DOI indicado no topo deste documento. |
0 commit comments