Assista anime e leia mangá direto do terminal sem anúncios
Project description
🎬 ani-tupi
Assista anime e leia mangá direto do terminal sem anúncios! Interface CLI em português brasileiro com integração AniList.
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.
📺 Demo no YouTube
📋 Requisitos
- Python 3.12+ (obrigatório)
- mpv (player de vídeo)
- Zathura (leitor de PDF para mangá - recomendado)
- Firefox (opcional, para alguns scrapers)
- git (opcional — só necessário para clonar o repositório ou usar
install.sh)
Instalando dependências
Linux (Arch)
# Instalar dependências do sistema
sudo pacman -S python mpv zathura firefox git libxml2 libvpx flite webkit2gtk-4.1
Linux (Ubuntu/Debian)
# Instalar dependências do sistema
sudo apt install python3 mpv zathura firefox git libxml2 libvpx libflite1 webkit2gtk-4.1
Linux (Fedora)
# Instalar dependências do sistema
sudo dnf install python3 mpv zathura firefox git libxml2 libvpx flite webkit2gtk-4.1
macOS
# Instalar dependências do sistema
brew install python@3.12 mpv zathura firefox git
Windows
Recomendamos usar Chocolatey:
# Como administrador
choco install python mpv zathura firefox git
Nota: Zathura é primariamente para Linux. No Windows, o sistema detectará automaticamente outros leitores de PDF instalados (Adobe Reader, SumatraPDF, etc).
🚀 Instalação Rápida
Via PyPI (Recomendado)
Instale o pacote Python com uv ou pip a partir do PyPI. Você ainda precisa das dependências de sistema (mpv, leitor de PDF, etc.) — elas não vêm com o pacote PyPI.
# Recomendado: instala ani-tupi e manga-tupi como ferramentas globais
uv tool install ani-tupi
# Alternativa: uv em um venv
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install ani-tupi
# Alternativa: pip (dentro de um venv)
pip install ani-tupi
Atualizar para a versão mais recente:
uv tool install --upgrade ani-tupi
# ou, dentro do venv:
uv pip install --upgrade ani-tupi
# ou: pip install --upgrade ani-tupi
Via Homebrew (macOS e Linux)
brew tap levyvix/ani-tupi
brew install ani-tupi
Atualizar:
brew upgrade ani-tupi
Requer
mpvinstalado:brew install mpv
Instalação com Um Comando (Alternativa)
Script completo com clone do repositório — útil se você prefere o bootstrap automático ou está contribuindo com o código:
curl -sSL https://raw.githubusercontent.com/levyvix/ani-tupi/master/install.sh | bash
O instalador faz automaticamente:
- ✅ Detecta seu sistema (Linux, macOS, WSL)
- ✅ Verifica dependências (git, Python 3.12+)
- ✅ Instala UV se necessário
- ✅ Clona o repositório
- ✅ Instala ani-tupi como CLI global
- ✅ Configura o PATH automaticamente
Requisitos do instalador:
curl- para baixar o scriptgit- para clonar o repositórioPython 3.12+- será detectado automaticamente
⚡ Primeiros Passos - Comandos Essenciais
Após instalar, estes são seus primeiros comandos:
# 1. Buscar e assistir anime
ani-tupi
# 2. Continuar último anime (salvo no histórico)
ani-tupi --continue-watching
ani-tupi -c
# 3. Buscar anime específico
ani-tupi --query "dandadan"
ani-tupi -q "dandadan"
# 4. Configurar AniList (sincronização automática)
ani-tupi anilist auth # Login (apenas uma vez)
ani-tupi anilist # Navegar listas + trending
# 5. Ler mangá
manga-tupi
# 6. Modo debug (mostra logs detalhados)
ani-tupi --debug
# 7. Ajuda
ani-tupi --help
Mais exemplos de uso da CLI
# Buscar um anime e abrir o seletor de episódios
ani-tupi -q "one piece"
# Buscar e ir direto para um episódio específico
ani-tupi -q "one piece" -e 1100
# Escolher uma temporada específica
ani-tupi -q "jujutsu kaisen" -S 2
# Ir direto para episódio de uma temporada específica
ani-tupi -q "jujutsu kaisen" -S 2 -e 5
# Continuar de onde parou
ani-tupi -c
# Continuar o último anime, mas trocar para outro episódio
ani-tupi -c -e 12
# Continuar o último anime, mas trocar de temporada
ani-tupi -c -S 2
# Sortear um anime da sua lista do AniList e reproduzir
ani-tupi --random
ani-tupi -r
# Listar fontes de anime disponíveis
ani-tupi --list-sources
# Limpar todo o cache
ani-tupi --clear-cache
# Limpar cache de um anime específico
ani-tupi --clear-cache "dandadan"
# Abrir o fluxo de mangá pelo comando principal
ani-tupi --manga
ani-tupi -m
# Ver versão local e comparar com a release remota
ani-tupi --version
# Verificar atualização pela CLI
ani-tupi update
⚙️ Configurar pela CLI
Agora você pode configurar o ani-tupi sem editar models/config.py:
ani-tupi config
No menu ani-tupi config:
- cada categoria representa uma classe de settings (
AnilistSettings,CacheSettings, etc.) - você escolhe a chave com
valor atual + descriçãodo que ela controla - antes de editar, a CLI mostra a documentação daquela configuração
- você informa o novo valor e confirma salvamento
- as alterações são persistidas no usuário em
~/.config/ani-tupi/settings.json
Precedência de configuração
O carregamento segue esta ordem:
- Variáveis de ambiente (
ANI_TUPI__...) - Configuração salva via
ani-tupi config - Valores padrão da aplicação
Se uma chave tiver variável de ambiente ativa, o menu mostra aviso de precedência.
💡 Dica para melhores resultados de busca: Tente usar o nome do anime em japonês ou romaji para maior precisão. Por exemplo:
- Em vez de "Attack on Titan", tente "Shingeki no Kyojin"
- Em vez de "My Hero Academia", tente "Boku no Hero Academia"
- Em vez de "Demon Slayer", tente "Kimetsu no Yaiba"
- Em vez de "Jujutsu Kaisen", mantenha como está (já é o título original)
Atalhos Durante Reprodução
| Atalho | Ação |
|---|---|
Shift+N |
Próximo episódio |
Shift+P |
Episódio anterior |
Shift+A |
Ativar auto-play |
✨ Features
🎬 Novos Episódios (AniList)
- Mostra animes com episódio novo e quanto você está atrasado
- Ordena por urgência e permite abrir para assistir direto
- Mantém títulos recém-finalizados por 60 dias
🏠 Biblioteca Local (Offline)
- Baixe episódios e organize por anime
- Suporta range de download (
5,1-12,5-,-12) - Paralelismo configurável para acelerar downloads
Configuração rápida:
export ANI_TUPI__ANIME__DOWNLOAD_DIRECTORY="~/Videos/Anime"
export ANI_TUPI__ANIME__MAX_PARALLEL_DOWNLOADS=4
export ANI_TUPI__ANIME__VIDEO_FORMAT="mp4"
✨ Integração com AniList (Recomendado!)
A integração com AniList.co permite sincronizar automaticamente seu progresso ao assistir anime e ler mangá.
📺 Anime
- 📈 Trending - Descubra os animes mais populares do momento
- 📺 Watching - Continue de onde parou (lista AniList)
- 📋 Planning - Veja animes que você planeja assistir
- ✅ Completed - Histórico de animes completos
- 🔄 Sincronização automática - Progresso atualiza no AniList após cada episódio
- 📝 Adição automática à Watching - Adiciona anime à sua lista ao começar a assistir
📚 Manga
- 📚 Trending Manga - Descubra os mangás mais populares do momento
- 📖 Reading - Acesse sua lista "Lendo" do AniList
- 🔄 Sincronização de capítulos - Atualiza progresso no AniList após confirmar leitura
- 📋 Status unificados - Veja animes e mangás juntos nas listas
💾 Recursos
- Mapeamento inteligente - Lembra do título correto para cada anime/mangá
- Cache inteligente - Carrega listas instantaneamente
- Menu de conta - Veja seu perfil e estatísticas
Setup rápido:
ani-tupi anilist auth # Login (apenas uma vez)
ani-tupi anilist # Navegar listas + trending
📖 Ler Mangá
Leia mangá do MangaDex direto do terminal com integração AniList!
Comando: manga-tupi
Fluxo rápido:
- Abra
manga-tupi - Digite nome do manga (fuzzy search automática)
- Escolha capítulo
- Leia no seu leitor PDF favorito
- Progresso sincroniza automaticamente com AniList
Leitores suportados: Zathura (⭐ recomendado), Evince, Okular, MuPDF, macOS Preview, xdg-open
Configuração:
export ANI_TUPI__MANGA__PDF_READER=zathura
export ANI_TUPI__MANGA__OUTPUT_DIRECTORY=~/Mangas
export ANI_TUPI__MANGA__CACHE_DURATION_HOURS=48
Troubleshooting
Token expirou:
ani-tupi anilist auth # Faça login novamente
Sincronização lenta:
ani-tupi --debug # Ver logs detalhados
Modo Desenvolvimento
Se está desenvolvendo (sem instalação global):
uv run ani-tupi # Executar
uv run main.py --debug # Com debug
uv run main.py -q "naruto" # Buscar direto
🔧 Para Desenvolvedores
Comandos Úteis
# Instalar/Reinstalar CLI global (PyPI)
uv tool install --upgrade ani-tupi
# Instalar a partir do checkout local (desenvolvimento)
python3 install-cli.py
# ou: uv tool install --force .
# Desinstalar CLI global
uv tool uninstall ani-tupi
# Instalar dependências (desenvolvimento)
uv sync
# Adicionar nova dependência
uv add nome-do-pacote
# Adicionar dependência de desenvolvimento
uv add --dev nome-do-pacote
Publicação PyPI (mantenedores)
Secrets necessários no repositório GitHub:
| Secret | Uso |
|---|---|
TESTPYPI_API_TOKEN |
Upload para TestPyPI |
PYPI_API_TOKEN |
Upload para PyPI oficial (após validação) |
Variável de repositório:
| Variável | Valor | Efeito |
|---|---|---|
PYPI_PUBLISH_ENABLED |
true |
Habilita upload para PyPI no workflow de release |
Fluxo recomendado:
- Criar token em test.pypi.org e salvar como
TESTPYPI_API_TOKEN - Disparar Actions → Publish TestPyPI (
workflow_dispatch) e confirmar instalação - Após validação, configurar
PYPI_API_TOKENe definirPYPI_PUBLISH_ENABLED=true
Por que UV?
UV é um gerenciador de pacotes Python extremamente rápido:
- ⚡ 10-100x mais rápido que pip
- 🔒 Lock file determinístico (
uv.lock) - 📦 Gerenciamento de venv automático
- 🌍 Multiplataforma (Linux, macOS, Windows)
- 🚀 Instalação zero-config
🐛 Problemas Conhecidos
"FileNotFoundError" ao salvar histórico
Corrigido na versão 0.1.0+. Atualize para a versão mais recente.
MPV não abre
Verifique se o mpv está instalado:
mpv --version
🤝 Contribuindo
Contribuições são bem-vindas! Abra uma issue ou pull request.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
📄 Licença
GPL-3.0 - veja o arquivo LICENSE para detalhes.
🎓 Propósito Educacional
Este projeto é fornecido exclusivamente para fins educacionais e de pesquisa.
ani-tupi foi desenvolvido como uma ferramenta didática para demonstrar:
- Arquitetura de aplicações em Python (MVCP)
- Web scraping e parsing de HTML
- Integração com APIs GraphQL
- Desenvolvimento de TUIs em Python
- Sistemas de plugins extensíveis
- Gestão de cache e requisições assíncronas
Bases Legais para Manutenção Pública
Este projeto é mantido publicamente com base nas seguintes disposições legais:
🇧🇷 Legislação Brasileira
Lei Federal Nº 9.610/98 (Lei de Direitos Autorais) - Art. 46:
"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..."
- Art. 46, IV: Permite reprodução para "fins exclusivamente escolares ou acadêmicos"
- 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..."
🌍 Legislação Internacional
DMCA (Digital Millennium Copyright Act) - Seção 1201(d):
"Para fins de segurança, pesquisa ou educação, a Biblioteca do Congresso pode examinar e autorizar contorno de proteção tecnológica..."
Diretiva Europeia 2001/29/EC (Diretiva de Copyright):
- Artigo 5(3) permite reprodução para fins de ilustração para fins educacionais
- Artigo 9 permite reprodução limitada para pesquisa
Convenção de Berna (Tratado Internacional):
- Artigo 10 permite uso de obras para fins educacionais e de pesquisa
⚖️ Princípio Legal Aplicável: Fair Use / Uso Justo
Este projeto se beneficia do princípio de "Fair Use" (uso justo), que permite uso de conteúdo protegido quando:
- Propósito: ✅ Educacional, não comercial
- Natureza: ✅ Ferramenta de aprendizado técnico
- Quantidade: ✅ Mínima necessária para demonstrar conceitos
- Impacto de Mercado: ✅ Sem prejuízo comercial aos titulares originais
Orientações de Uso
Este projeto é destinado para:
- ✅ Aprendizado: Estude como construir web scrapers e TUIs
- ✅ Pesquisa: Analise técnicas de integração com APIs
- ✅ Educação: Use como referência em cursos de Python
- ✅ Desenvolvimento: Base para seus próprios projetos educacionais
Este projeto não é destinado para:
- ❌ Redistribuição comercial de conteúdo
- ❌ Substituição dos serviços legítimos de streaming
- ❌ Contorno de proteções de direitos autorais com fins comerciais
Aviso Legal
Ao usar este projeto, você concorda que:
- É responsável pela conformidade com as leis locais
- Compreende que este é um projeto educacional
- Não usará para fins comerciais ou prejudiciais
- Respeitará os direitos dos detentores de conteúdo
Para questões legais específicas em sua jurisdição, consulte um advogado especializado em direitos autorais.
🙏 Agradecimentos
- Comunidade anime brasileira
- Desenvolvedores do mpv
- Projeto ani-cli (inspiração)
- Eduardo Nery — autor do projeto original ani-tupi, do qual este fork é derivado
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ani_tupi-2.3.6.tar.gz.
File metadata
- Download URL: ani_tupi-2.3.6.tar.gz
- Upload date:
- Size: 447.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05a3ce56529f7afd98ff8955670fd7e5d0d254e4b885e5d8b9e2e6dd0986f665
|
|
| MD5 |
a2c1f85efe9d688aee571636f39080b4
|
|
| BLAKE2b-256 |
8d515bb7952fae4db0170fb7f509696321034fd499b1504af3e8dd4c6f2fbddd
|
File details
Details for the file ani_tupi-2.3.6-py3-none-any.whl.
File metadata
- Download URL: ani_tupi-2.3.6-py3-none-any.whl
- Upload date:
- Size: 555.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cee4234656ffbfd87e0a164b59c030561c77f171dde4f40949736cd08700e9f3
|
|
| MD5 |
d4cb391b226e78e69cd02a6d8dd0f7d0
|
|
| BLAKE2b-256 |
a7f4c3f7d6dbd425630edc7567da70d9355275d6e3c1a4bca598ba8d783a0505
|