{"id":30268107,"url":"https://github.com/adalbertobrant/youtubenuvens","last_synced_at":"2025-08-16T00:40:24.468Z","repository":{"id":295005441,"uuid":"988772493","full_name":"adalbertobrant/youtubenuvens","owner":"adalbertobrant","description":"Nuvens de palavras de vídeos de youtube ","archived":false,"fork":false,"pushed_at":"2025-05-30T14:08:01.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-30T19:21:19.909Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adalbertobrant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-23T03:52:40.000Z","updated_at":"2025-05-30T14:08:05.000Z","dependencies_parsed_at":"2025-05-30T15:19:41.740Z","dependency_job_id":null,"html_url":"https://github.com/adalbertobrant/youtubenuvens","commit_stats":null,"previous_names":["adalbertobrant/youtubenuvens"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adalbertobrant/youtubenuvens","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adalbertobrant%2Fyoutubenuvens","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adalbertobrant%2Fyoutubenuvens/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adalbertobrant%2Fyoutubenuvens/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adalbertobrant%2Fyoutubenuvens/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adalbertobrant","download_url":"https://codeload.github.com/adalbertobrant/youtubenuvens/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adalbertobrant%2Fyoutubenuvens/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270652859,"owners_count":24622782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-16T00:40:21.885Z","updated_at":"2025-08-16T00:40:24.441Z","avatar_url":"https://github.com/adalbertobrant.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Analisador de Nuvens de Palavras de Canais do YouTube\n\nEste projeto coleta transcrições dos vídeos mais recentes de canais específicos do YouTube, gera nuvens de palavras a partir dessas transcrições e as exibe em uma interface web interativa construída com Streamlit. A aplicação permite que o usuário dispare o processo de coleta e geração de dados diretamente pela interface.\n\n## Funcionalidades\n\n*   **Coleta de Dados do YouTube:**\n    *   Busca os vídeos mais recentes de uma lista pré-definida de canais do YouTube.\n    *   Utiliza `yt-dlp` para baixar as legendas/transcrições disponíveis (priorizando português).\n    *   Extrai metadados dos vídeos, como título, data de publicação e visualizações.\n*   **Processamento de Texto e Geração de Nuvens de Palavras:**\n    *   Limpa o texto das transcrições (remove timestamps, tags HTML, etc.).\n    *   Utiliza a biblioteca `wordcloud` para gerar imagens de nuvens de palavras a partir do texto das transcrições de cada canal.\n    *   Emprega uma lista customizada de *stopwords* em português para melhorar a relevância das palavras na nuvem.\n*   **Interface Web Interativa (Streamlit):**\n    *   Exibe as nuvens de palavras geradas.\n    *   Mostra informações do canal (banner, link) e do último vídeo analisado (thumbnail, título, link).\n    *   Permite ao usuário ampliar as nuvens de palavras para melhor visualização.\n    *   **Funcionalidade de Execução:** O usuário pode iniciar o script de coleta e processamento de dados diretamente pela interface web.\n    *   Feedback em tempo real (opcionalmente expansível) durante a execução do script de coleta.\n*   **Relatórios e Logging:**\n    *   Salva os dados coletados e processados em arquivos JSON.\n    *   Gera logs detalhados da execução do script de coleta.\n\n\n\n## Tecnologias Utilizadas\n\n*   **Python 3.x**\n*   **Streamlit:** Para a interface web interativa.\n*   **yt-dlp:** Para baixar informações e legendas de vídeos do YouTube.\n*   **wordcloud:** Para gerar as nuvens de palavras.\n*   **NLTK (Natural Language Toolkit):** Para *stopwords* em português e tokenização (se necessário).\n*   **Matplotlib:** Usado internamente pela biblioteca `wordcloud` para renderizar as imagens.\n*   **Requests (indireto):** Usado por `yt-dlp` e outras bibliotecas para comunicação HTTP.\n\n## Estrutura do Projeto\n├── logs/ # Arquivos de log da coleta de dados\n├── relatorios/ # Relatórios JSON consolidados das coletas\n├── trans/ # Diretório de transcrições e dados processados\n│ ├── nuvens_palavras/ # Imagens das nuvens de palavras geradas\n│ ├── temp_subs/ # Diretório temporário para legendas baixadas\n│ └── [nome_canal].json # Dados detalhados por canal (transcrições, etc.)\n├── noingles.py # Script principal para coleta e processamento de dados\n├── wordcloud_processor.py # Módulo para geração de nuvens de palavras e stopwords\n├── streamlit_app.py # Arquivo da aplicação Streamlit\n├── requirements.txt # Dependências do Python\n└── README.md # Este arquivo\n\n## Instalação\n\n1.  **Clone o Repositório:**\n    ```bash\n    git clone https://github.com/adalbertobrant/youtubenuvens.git\n    cd youtubenuvens\n    ```\n\n2.  **Crie e Ative um Ambiente Virtual (Recomendado):**\n    ```bash\n    python -m venv venv\n    # No Windows:\n    # venv\\Scripts\\activate\n    # No macOS/Linux:\n    # source venv/bin/activate\n    ```\n\n3.  **Instale as Dependências:**\n    Certifique-se de que você tem o `pip` atualizado.\n    ```bash\n    pip install --upgrade pip\n    pip install -r requirements.txt\n    ```\n    O arquivo `requirements.txt` deve conter:\n    ```\n    streamlit\n    yt-dlp\n    wordcloud\n    nltk\n    matplotlib\n    # Pillow (geralmente uma dependência do matplotlib/wordcloud, mas bom listar)\n    Pillow \n    ```\n    *Nota: `nltk` pode precisar baixar recursos adicionais na primeira execução. O script `wordcloud_processor.py` tenta fazer isso automaticamente para `stopwords` e `punkt`.*\n\n4.  **(Opcional, mas recomendado para `yt-dlp`): Instale o FFmpeg**\n    `yt-dlp` pode necessitar do FFmpeg para algumas operações de download ou extração de áudio/vídeo. Consulte a [documentação do yt-dlp](https://github.com/yt-dlp/yt-dlp#installation) para instruções de instalação do FFmpeg em seu sistema operacional.\n\n## Modo de Uso\n\n1.  **Execute a Aplicação Streamlit:**\n    Navegue até o diretório raiz do projeto no seu terminal e execute:\n    ```bash\n    streamlit run streamlit_app.py\n    ```\n    A aplicação será aberta automaticamente no seu navegador web padrão (geralmente em `http://localhost:8501`).\n\n2.  **Execute a Coleta de Dados (dentro da Aplicação):**\n    *   Na barra lateral da aplicação Streamlit, clique no botão \"🚀 Executar Coleta de Dados e Gerar Nuvens\".\n    *   Aguarde o processo ser concluído. Você pode acompanhar o progresso (de forma resumida) e, opcionalmente, expandir uma seção para ver o log detalhado.\n    *   Este processo pode levar vários minutos, dependendo do número de canais e da velocidade da sua conexão com a internet.\n\n3.  **Visualize os Resultados:**\n    *   Após a conclusão da coleta, os dados dos canais (com suas respectivas nuvens de palavras, banners e informações do último vídeo) serão exibidos na página principal da aplicação.\n    *   Navegue pelos canais e clique nas nuvens de palavras para ampliá-las.\n\n## Configuração\n\n*   **Canais do YouTube:** A lista de canais a serem analisados está definida na variável `TARGET_CHANNEL_URLS` dentro do arquivo `noingles.py`. Você pode modificar esta lista para incluir os canais de seu interesse.\n*   **Stopwords:** Palavras irrelevantes a serem excluídas das nuvens de palavras podem ser customizadas na função `get_portuguese_stopwords()` dentro do arquivo `wordcloud_processor.py`.\n\n## Contribuição\n\nContribuições são bem-vindas! Se você tiver sugestões para melhorar o projeto, sinta-se à vontade para:\n\n1.  Fazer um Fork do projeto.\n2.  Criar uma nova Branch (`git checkout -b feature/sua-feature`).\n3.  Fazer Commit de suas alterações (`git commit -am 'Adiciona nova feature'`).\n4.  Fazer Push para a Branch (`git push origin feature/sua-feature`).\n5.  Abrir um Pull Request.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadalbertobrant%2Fyoutubenuvens","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadalbertobrant%2Fyoutubenuvens","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadalbertobrant%2Fyoutubenuvens/lists"}