{"id":37661643,"url":"https://github.com/levyvix/ani-tupi","last_synced_at":"2026-05-28T23:01:46.009Z","repository":{"id":331295790,"uuid":"1125577804","full_name":"levyvix/ani-tupi","owner":"levyvix","description":"Assista anime e leia mangá direto do terminal em português brasileiro. CLI completa com integração AniList, múltiplos scrapers e leitor PDF.","archived":false,"fork":false,"pushed_at":"2026-05-16T05:48:35.000Z","size":6105,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-16T07:35:04.351Z","etag":null,"topics":["anime","cli","manga","portuguese","streaming"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/levyvix.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-31T01:28:19.000Z","updated_at":"2026-05-16T05:48:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/levyvix/ani-tupi","commit_stats":null,"previous_names":["levyvix/ani-tupi"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/levyvix/ani-tupi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levyvix%2Fani-tupi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levyvix%2Fani-tupi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levyvix%2Fani-tupi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levyvix%2Fani-tupi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/levyvix","download_url":"https://codeload.github.com/levyvix/ani-tupi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levyvix%2Fani-tupi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33629560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"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":["anime","cli","manga","portuguese","streaming"],"created_at":"2026-01-16T11:50:01.384Z","updated_at":"2026-05-28T23:01:45.972Z","avatar_url":"https://github.com/levyvix.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎬 ani-tupi\n\nAssista anime e leia mangá direto do terminal sem anúncios! Interface CLI em português brasileiro com integração AniList.\n\n\u003e Estava cansado de anúncios, o ani-cli não tinha conteúdo em português brasileiro e não havia leitor de mangá decente no terminal, então criei esta ferramenta.\n\n## 📺 Demo no YouTube\n[![Demo](https://img.youtube.com/vi/eug6gKLTD3I/maxresdefault.jpg)](https://youtu.be/eug6gKLTD3I)\n\n## 📋 Requisitos\n\n- **Python 3.12+** (obrigatório)\n- **mpv** (player de vídeo)\n- **Zathura** (leitor de PDF para mangá - recomendado)\n- **Firefox** (opcional, para alguns scrapers)\n- **git** (para clonar o repositório)\n\n### Instalando dependências\n\n#### Linux (Arch)\n```bash\n# Instalar dependências do sistema\nsudo pacman -S python mpv zathura firefox git libxml2 libvpx flite webkit2gtk-4.1\n```\n\n#### Linux (Ubuntu/Debian)\n```bash\n# Instalar dependências do sistema\nsudo apt install python3 mpv zathura firefox git libxml2 libvpx libflite1 webkit2gtk-4.1\n```\n\n#### Linux (Fedora)\n```bash\n# Instalar dependências do sistema\nsudo dnf install python3 mpv zathura firefox git libxml2 libvpx flite webkit2gtk-4.1\n```\n\n#### macOS\n```bash\n# Instalar dependências do sistema\nbrew install python@3.12 mpv zathura firefox git\n```\n\n#### Windows\nRecomendamos usar [Chocolatey](https://chocolatey.org/install):\n```powershell\n# Como administrador\nchoco install python mpv zathura firefox git\n```\n\n**Nota:** Zathura é primariamente para Linux. No Windows, o sistema detectará automaticamente outros leitores de PDF instalados (Adobe Reader, SumatraPDF, etc).\n\n## 🚀 Instalação Rápida\n\n### Instalação com Um Comando (Recomendado)\n\nA forma mais fácil de instalar - execute apenas um comando:\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/levyvix/ani-tupi/master/install.sh | bash\n```\n\n**O instalador faz automaticamente:**\n- ✅ Detecta seu sistema (Linux, macOS, WSL)\n- ✅ Verifica dependências (git, Python 3.12+)\n- ✅ Instala UV se necessário\n- ✅ Clona o repositório\n- ✅ Instala ani-tupi como CLI global\n- ✅ Configura o PATH automaticamente\n\n**Requisitos do instalador:**\n- `curl` - para baixar o script\n- `git` - para clonar o repositório\n- `Python 3.12+` - será detectado automaticamente\n\n---\n\n## ⚡ Primeiros Passos - Comandos Essenciais\n\nApós instalar, estes são seus primeiros comandos:\n\n```bash\n# 1. Buscar e assistir anime\nani-tupi\n\n# 2. Continuar último anime (salvo no histórico)\nani-tupi --continue-watching\nani-tupi -c\n\n# 3. Buscar anime específico\nani-tupi --query \"dandadan\"\nani-tupi -q \"dandadan\"\n\n# 4. Configurar AniList (sincronização automática)\nani-tupi anilist auth      # Login (apenas uma vez)\nani-tupi anilist           # Navegar listas + trending\n\n# 5. Ler mangá\nmanga-tupi\n\n# 6. Modo debug (mostra logs detalhados)\nani-tupi --debug\n\n# 7. Ajuda\nani-tupi --help\n```\n\n## ⚙️ Configurar pela CLI\n\nAgora você pode configurar o `ani-tupi` sem editar `models/config.py`:\n\n```bash\nani-tupi config\n```\n\nNo menu `ani-tupi config`:\n- cada categoria representa uma classe de settings (`AnilistSettings`, `CacheSettings`, etc.)\n- você escolhe a chave com `valor atual + descrição` do que ela controla\n- antes de editar, a CLI mostra a documentação daquela configuração\n- você informa o novo valor e confirma salvamento\n- as alterações são persistidas no usuário em `~/.config/ani-tupi/settings.json`\n\n### Precedência de configuração\n\nO carregamento segue esta ordem:\n\n1. Variáveis de ambiente (`ANI_TUPI__...`)\n2. Configuração salva via `ani-tupi config`\n3. Valores padrão da aplicação\n\nSe uma chave tiver variável de ambiente ativa, o menu mostra aviso de precedência.\n\n**💡 Dica para melhores resultados de busca:**\nTente usar o nome do anime em japonês ou romaji para maior precisão. Por exemplo:\n- Em vez de \"Attack on Titan\", tente \"Shingeki no Kyojin\"\n- Em vez de \"My Hero Academia\", tente \"Boku no Hero Academia\"\n- Em vez de \"Demon Slayer\", tente \"Kimetsu no Yaiba\"\n- Em vez de \"Jujutsu Kaisen\", mantenha como está (já é o título original)\n\n---\n\n### Atalhos Durante Reprodução\n\n| Atalho | Ação |\n|--------|------|\n| `Shift+N` | Próximo episódio |\n| `Shift+P` | Episódio anterior |\n| `Shift+A` | Ativar auto-play |\n\n---\n\n## ✨ Features\n\n### 🎬 Novos Episódios (AniList)\n- Mostra animes com episódio novo e quanto você está atrasado\n- Ordena por urgência e permite abrir para assistir direto\n- Mantém títulos recém-finalizados por 60 dias\n\n### 🏠 Biblioteca Local (Offline)\n- Baixe episódios e organize por anime\n- Suporta range de download (`5`, `1-12`, `5-`, `-12`)\n- Paralelismo configurável para acelerar downloads\n\n**Configuração rápida:**\n```bash\nexport ANI_TUPI__ANIME__DOWNLOAD_DIRECTORY=\"~/Videos/Anime\"\nexport ANI_TUPI__ANIME__MAX_PARALLEL_DOWNLOADS=4\nexport ANI_TUPI__ANIME__VIDEO_FORMAT=\"mp4\"\n```\n\n---\n\n## ✨ Integração com AniList (Recomendado!)\n\nA integração com [AniList.co](https://anilist.co) permite sincronizar automaticamente seu progresso ao assistir anime e ler mangá.\n\n### 📺 Anime\n- 📈 **Trending** - Descubra os animes mais populares do momento\n- 📺 **Watching** - Continue de onde parou (lista AniList)\n- 📋 **Planning** - Veja animes que você planeja assistir\n- ✅ **Completed** - Histórico de animes completos\n- 🔄 **Sincronização automática** - Progresso atualiza no AniList após cada episódio\n- 📝 **Adição automática à Watching** - Adiciona anime à sua lista ao começar a assistir\n\n### 📚 Manga\n- 📚 **Trending Manga** - Descubra os mangás mais populares do momento\n- 📖 **Reading** - Acesse sua lista \"Lendo\" do AniList\n- 🔄 **Sincronização de capítulos** - Atualiza progresso no AniList após confirmar leitura\n- 📋 **Status unificados** - Veja animes e mangás juntos nas listas\n\n### 💾 Recursos\n- **Mapeamento inteligente** - Lembra do título correto para cada anime/mangá\n- **Cache inteligente** - Carrega listas instantaneamente\n- **Menu de conta** - Veja seu perfil e estatísticas\n\n**Setup rápido:**\n```bash\nani-tupi anilist auth      # Login (apenas uma vez)\nani-tupi anilist           # Navegar listas + trending\n```\n\n---\n\n## 📖 Ler Mangá\n\nLeia mangá do MangaDex direto do terminal com integração AniList!\n\n**Comando:** `manga-tupi`\n\n**Fluxo rápido:**\n1. Abra `manga-tupi`\n2. Digite nome do manga (fuzzy search automática)\n3. Escolha capítulo\n4. Leia no seu leitor PDF favorito\n5. Progresso sincroniza automaticamente com AniList\n\n**Leitores suportados:** Zathura (⭐ recomendado), Evince, Okular, MuPDF, macOS Preview, xdg-open\n\n**Configuração:**\n```bash\nexport ANI_TUPI__MANGA__PDF_READER=zathura\nexport ANI_TUPI__MANGA__OUTPUT_DIRECTORY=~/Mangas\nexport ANI_TUPI__MANGA__CACHE_DURATION_HOURS=48\n```\n\n---\n\n### Troubleshooting\n\n**Token expirou:**\n```bash\nani-tupi anilist auth  # Faça login novamente\n```\n\n**Sincronização lenta:**\n```bash\nani-tupi --debug  # Ver logs detalhados\n```\n\n---\n\n### Modo Desenvolvimento\n\nSe está desenvolvendo (sem instalação global):\n\n```bash\nuv run ani-tupi              # Executar\nuv run main.py --debug       # Com debug\nuv run main.py -q \"naruto\"   # Buscar direto\n```\n\n## 🔧 Para Desenvolvedores\n\n### Comandos Úteis\n\n```bash\n# Instalar/Reinstalar CLI global\npython3 install-cli.py\n# ou: uv tool install --force .\n\n# Desinstalar CLI global\nuv tool uninstall ani-tupi\n\n# Instalar dependências (desenvolvimento)\nuv sync\n\n# Adicionar nova dependência\nuv add nome-do-pacote\n\n# Adicionar dependência de desenvolvimento\nuv add --dev nome-do-pacote\n```\n\n### Por que UV?\n\n[UV](https://github.com/astral-sh/uv) é um gerenciador de pacotes Python extremamente rápido:\n- ⚡ 10-100x mais rápido que pip\n- 🔒 Lock file determinístico (`uv.lock`)\n- 📦 Gerenciamento de venv automático\n- 🌍 Multiplataforma (Linux, macOS, Windows)\n- 🚀 Instalação zero-config\n\n## 🐛 Problemas Conhecidos\n\n### \"FileNotFoundError\" ao salvar histórico\nCorrigido na versão 0.1.0+. Atualize para a versão mais recente.\n\n### MPV não abre\nVerifique se o mpv está instalado:\n```bash\nmpv --version\n```\n\n## 🤝 Contribuindo\n\nContribuições são bem-vindas! Abra uma issue ou pull request.\n\n1. Fork o projeto\n2. Crie uma branch para sua feature (`git checkout -b feature/MinhaFeature`)\n3. Commit suas mudanças (`git commit -m 'Adiciona MinhaFeature'`)\n4. Push para a branch (`git push origin feature/MinhaFeature`)\n5. Abra um Pull Request\n\n## 📄 Licença\n\nGPL-3.0 - veja o arquivo [LICENSE](LICENSE) para detalhes.\n\n## 🎓 Propósito Educacional\n\n**Este projeto é fornecido exclusivamente para fins educacionais e de pesquisa.**\n\nani-tupi foi desenvolvido como uma ferramenta didática para demonstrar:\n- Arquitetura de aplicações em Python (MVCP)\n- Web scraping e parsing de HTML\n- Integração com APIs GraphQL\n- Desenvolvimento de TUIs em Python\n- Sistemas de plugins extensíveis\n- Gestão de cache e requisições assíncronas\n\n### Bases Legais para Manutenção Pública\n\nEste projeto é mantido publicamente com base nas seguintes disposições legais:\n\n#### 🇧🇷 Legislação Brasileira\n\n**Lei Federal Nº 9.610/98 (Lei de Direitos Autorais) - Art. 46:**\n\u003e \"Não constitui ofensa aos direitos autorais a utilização de obra intelectual em situações especificadas em lei, quando autorizada pelo titular dos direitos ou quando não há restrição ao direito de usar... **para fins de estudo ou pesquisa**...\"\n\n- **Art. 46, IV**: Permite reprodução para \"fins exclusivamente escolares ou acadêmicos\"\n- **Art. 46, VIII**: Permite \"o apanhado de trechos de obras, para fins de citação ou comentário crítico, desde que não represente concorrência com a exploração normal da obra...\"\n\n#### 🌍 Legislação Internacional\n\n**DMCA (Digital Millennium Copyright Act) - Seção 1201(d):**\n\u003e \"Para fins de segurança, pesquisa ou educação, a Biblioteca do Congresso pode examinar e autorizar contorno de proteção tecnológica...\"\n\n**Diretiva Europeia 2001/29/EC (Diretiva de Copyright):**\n- Artigo 5(3) permite reprodução para fins de ilustração para fins educacionais\n- Artigo 9 permite reprodução limitada para pesquisa\n\n**Convenção de Berna (Tratado Internacional):**\n- Artigo 10 permite uso de obras para fins educacionais e de pesquisa\n\n#### ⚖️ Princípio Legal Aplicável: Fair Use / Uso Justo\n\nEste projeto se beneficia do princípio de \"Fair Use\" (uso justo), que permite uso de conteúdo protegido quando:\n\n1. **Propósito**: ✅ Educacional, não comercial\n2. **Natureza**: ✅ Ferramenta de aprendizado técnico\n3. **Quantidade**: ✅ Mínima necessária para demonstrar conceitos\n4. **Impacto de Mercado**: ✅ Sem prejuízo comercial aos titulares originais\n\n### Orientações de Uso\n\nEste projeto é destinado para:\n- ✅ **Aprendizado**: Estude como construir web scrapers e TUIs\n- ✅ **Pesquisa**: Analise técnicas de integração com APIs\n- ✅ **Educação**: Use como referência em cursos de Python\n- ✅ **Desenvolvimento**: Base para seus próprios projetos educacionais\n\nEste projeto **não é destinado para**:\n- ❌ Redistribuição comercial de conteúdo\n- ❌ Substituição dos serviços legítimos de streaming\n- ❌ Contorno de proteções de direitos autorais com fins comerciais\n\n### Aviso Legal\n\nAo usar este projeto, você concorda que:\n- É responsável pela conformidade com as leis locais\n- Compreende que este é um projeto educacional\n- Não usará para fins comerciais ou prejudiciais\n- Respeitará os direitos dos detentores de conteúdo\n\nPara questões legais específicas em sua jurisdição, consulte um advogado especializado em direitos autorais.\n\n## 🙏 Agradecimentos\n\n- Comunidade anime brasileira\n- Desenvolvedores do mpv\n- Projeto ani-cli (inspiração)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevyvix%2Fani-tupi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flevyvix%2Fani-tupi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevyvix%2Fani-tupi/lists"}