Este projeto consiste em um script Python que automatiza o processamento de vídeos do YouTube listados em uma base de dados do Notion. Ele busca os vídeos, tenta extrair suas transcrições usando diversos métodos e salva os resultados (transcrição, status, metadados) em outra base de dados do Notion.
- Integração com Notion: Lê links de vídeos de uma base de dados de origem e escreve os resultados em uma base de dados de destino.
- Extração de Transcrição Multi-método: Tenta extrair transcrições na seguinte ordem de preferência:
- YouTube Transcript API: Utiliza a API oficial para buscar transcrições geradas automaticamente ou manualmente.
- yt-dlp (Legendas): Baixa arquivos de legenda (VTT) disponíveis usando
yt-dlp. - yt-dlp (Áudio) + Whisper: Baixa o áudio do vídeo usando
yt-dlpe o transcreve usando o modelo Whisper da OpenAI (requerffmpeg). - Web Scraping (Básico): Tenta encontrar dados de legenda embutidos na página do vídeo (implementação básica).
- Seleção Automática de Método: Utiliza o primeiro método bem-sucedido para obter a transcrição.
- Verificação de Dependências: Checa quais métodos de extração estão disponíveis com base nas bibliotecas instaladas.
- Logging Detalhado: Registra todas as etapas do processo, sucessos, falhas e avisos no console e no arquivo
sistema_notion.log. - Configuração Flexível: Utiliza variáveis de ambiente (arquivo
.env) para configurar chaves de API e IDs de databases.
- Python: Versão 3.8 ou superior recomendada.
- ffmpeg: Necessário se você planeja usar o método de transcrição via Whisper (Método 3). Instruções de instalação podem ser encontradas em ffmpeg.org.
As seguintes bibliotecas Python são necessárias:
requests: Para interações com APIs HTTP.openai: Para interagir com a API da OpenAI (Whisper e potencialmente outros modelos).python-dotenv: Para carregar variáveis de ambiente do arquivo.env.youtube-transcript-api(Opcional): Necessária para o Método 1.yt-dlp(Opcional): Necessária para os Métodos 2 e 3.whisper(Opcional): Necessária para o Método 3 (a biblioteca da OpenAI,openai-whisper).beautifulsoup4(Opcional): Necessária para o Método 4.
Você pode instalar todas as dependências (incluindo as opcionais que deseja usar) com pip:
pip install requests openai python-dotenv youtube-transcript-api yt-dlp openai-whisper beautifulsoup4
# Ou crie um arquivo requirements.txt e use: pip install -r requirements.txt-
Clonar o Repositório:
git clone <url-do-seu-repositorio> cd <nome-do-repositorio>
-
Criar Arquivo
.env: Crie um arquivo chamado.envna raiz do projeto e adicione as seguintes variáveis:# Chave da API da OpenAI (Obrigatório) OPENAI_API_KEY="sk-..." # Token de Integração Interna do Notion (Obrigatório) # Crie em: https://www.notion.so/my-integrations NOTION_API_TOKEN="secret_..." # ID da Database do Notion de Origem (Obrigatório) # Onde os links dos vídeos são adicionados. Deve ter uma coluna "Name" (Title) para o link e "Created Date" (Created time). NOTION_SOURCE_DATABASE_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # ID da Database do Notion de Destino (Obrigatório) # Onde os resultados serão salvos. Deve ter colunas para: Título (Title), Link (URL), Transcrição (Text), Status (Select), Método Usado (Select), Data Processamento (Date), Página Original (Relation com a DB de origem). NOTION_RESULT_DATABASE_ID="yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
-
Obter Chaves e IDs:
- OpenAI API Key: Obtenha em platform.openai.com/api-keys.
- Notion API Token: Crie uma integração interna em www.notion.so/my-integrations. Certifique-se de compartilhar as databases de origem e destino com sua integração.
- Notion Database IDs: O ID de uma database pode ser encontrado na URL da página da database no Notion. É a parte entre o último
/e o?v=. Ex:https://www.notion.so/your-workspace/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?v=...-> ID:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Após configurar o arquivo .env e instalar as dependências, execute o script principal:
python main.py (Substitua main.py pelo nome real do seu script principal, se for diferente).
O script irá:
- Carregar as configurações do
.env. - Verificar as dependências instaladas.
- Buscar novos vídeos na database de origem do Notion.
- Para cada vídeo encontrado:
- Verificar se já foi processado (consultando a database de destino).
- Se não foi processado, tentar extrair a transcrição usando os métodos disponíveis em ordem.
- Salvar o resultado (transcrição, status, método usado, etc.) na database de destino do Notion.
- Atualizar as estatísticas de processamento.
- Exibir um resumo das estatísticas no final da execução.
- Busca no Notion (Origem): O script consulta a
NOTION_SOURCE_DATABASE_IDbuscando por páginas que contenham um link válido do YouTube na propriedade "Name". - Verificação de Processamento: Para cada link encontrado, o script verifica na
NOTION_RESULT_DATABASE_IDse já existe uma entrada para aquele link, evitando reprocessamento. - Tentativa de Transcrição:
- Método 1 (API): Tenta obter a transcrição via
youtube_transcript_api. - Método 2 (Legendas): Se o Método 1 falhar, tenta baixar legendas VTT com
yt-dlp. - Método 3 (Áudio + Whisper): Se os Métodos 1 e 2 falharem, tenta baixar o áudio com
yt-dlpe transcrevê-lo comwhisper(limitado a vídeos de até 30 minutos por padrão). - Método 4 (Scraping): Se os Métodos 1, 2 e 3 falharem, tenta uma extração básica via web scraping.
- Método 1 (API): Tenta obter a transcrição via
- Registro no Notion (Destino): O resultado (transcrição ou status de erro) e os metadados (link, método usado, data) são salvos como uma nova página na
NOTION_RESULT_DATABASE_ID. - Logging: Todas as ações e resultados são registrados no arquivo
sistema_notion.log.
- Limites de API: Esteja ciente dos limites de uso das APIs do Notion e da OpenAI.
- Whisper: O modelo Whisper pode consumir recursos significativos (CPU/GPU e memória), especialmente para vídeos mais longos.
- yt-dlp: Requer
ffmpegpara conversão de áudio no Método 3. - Web Scraping: O Método 4 é básico e pode falhar facilmente se a estrutura da página do YouTube mudar.