Skip to main content

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

Demo

📋 Requisitos

  • Python 3.12+ (obrigatório)
  • mpv (player de vídeo)
  • Zathura (leitor de PDF para mangá - recomendado)
  • Firefox (opcional, para alguns scrapers)
  • git (para clonar o repositório)

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. 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 com pip (dentro de um venv)
pip install ani-tupi

Atualizar para a versão mais recente:

uv tool install --upgrade ani-tupi
# ou: pip install --upgrade ani-tupi

Rollout TestPyPI: enquanto a publicação oficial no PyPI é validada, mantenedores podem testar com Publish TestPyPI (GitHub Actions) e instalar via índice de teste. Após a validação, uv tool install ani-tupi passará a resolver do PyPI oficial.

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 script
  • git - para clonar o repositório
  • Python 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

⚙️ 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ção do 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:

  1. Variáveis de ambiente (ANI_TUPI__...)
  2. Configuração salva via ani-tupi config
  3. 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:

  1. Abra manga-tupi
  2. Digite nome do manga (fuzzy search automática)
  3. Escolha capítulo
  4. Leia no seu leitor PDF favorito
  5. 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:

  1. Criar token em test.pypi.org e salvar como TESTPYPI_API_TOKEN
  2. Disparar Actions → Publish TestPyPI (workflow_dispatch) e confirmar instalação
  3. Após validação, configurar PYPI_API_TOKEN e definir PYPI_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.

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/MinhaFeature)
  3. Commit suas mudanças (git commit -m 'Adiciona MinhaFeature')
  4. Push para a branch (git push origin feature/MinhaFeature)
  5. 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:

  1. Propósito: ✅ Educacional, não comercial
  2. Natureza: ✅ Ferramenta de aprendizado técnico
  3. Quantidade: ✅ Mínima necessária para demonstrar conceitos
  4. 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)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ani_tupi-1.2.1.tar.gz (448.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ani_tupi-1.2.1-py3-none-any.whl (548.4 kB view details)

Uploaded Python 3

File details

Details for the file ani_tupi-1.2.1.tar.gz.

File metadata

  • Download URL: ani_tupi-1.2.1.tar.gz
  • Upload date:
  • Size: 448.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","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

Hashes for ani_tupi-1.2.1.tar.gz
Algorithm Hash digest
SHA256 f11a15dc8144629de13e8066e3062519de4153f91f76e94864c334bec9b80313
MD5 8779ffbccc159976e39c4c578c3f4eb3
BLAKE2b-256 81d39942341bfce0df6081d307461641cdc71e326b521e37763aadce4febcbc8

See more details on using hashes here.

File details

Details for the file ani_tupi-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: ani_tupi-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 548.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","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

Hashes for ani_tupi-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7f4d01b83551e2e27af315e7ea24826d295dcf143baa6094097d0288e9e538bf
MD5 ea7cf6958e34cce597945540e162bc95
BLAKE2b-256 457f3b3cef2148199bb215ff270ceea4d7dc70bea78ea3cb086981a96b704880

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page