Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

anime-mpv-cli

Client terminal qui parse un site d'agrégation d'anime (compatible Anime-Sama/voiranime), choisit l'épisode, et le lance dans mpv — sans jamais ouvrir de navigateur (zéro pub, zéro popup, zéro lecteur cassé).

$ vrcli
? Que veux-tu faire ?
 ▶ Continuer One Piece S03E14
 🔍 Rechercher un anime
 📚 Parcourir le catalogue
 🗓 Planning du jour
 ⏹ Quitter

⚠️ Avertissement légal. Ce projet est un client HTTP générique à usage strictement personnel et éducatif. Il ne stocke pas, ne re-diffuse pas, ne contourne aucune protection DRM ; il automatise les clics que tu ferais toi-même dans un navigateur. Le parseur HTML cible la famille Anime-Sama (voiranime.rip est l'URL par défaut, modifiable via vrcli config set base_url ...). Tu es seul responsable de vérifier la légalité de ton usage dans ta juridiction et le respect des CGU du site que tu pointes. Les auteurs déclinent toute responsabilité quant à l'usage qui peut être fait de ce logiciel.

Fonctionnalités

  • Recherche dans le catalogue du site configuré (vrcli search <query>)
  • Liste de saisons / épisodes d'un anime (vrcli info, vrcli episodes)
  • Lecture mpv directe avec headers HTTP corrects (vrcli play)
  • Reprise auto depuis le dernier épisode regardé (vrcli resume)
  • Mode interactif (sans argument) : recherche, choix, lecture, enchaînement
  • Historique local SQLite (vrcli history, --continue-watching)
  • Extraction d'URL brute pour yt-dlp / curl (vrcli stream --json)
  • Bypass anti-blocage : Chrome TLS impersonation (curl_cffi) puis fallback proxy serveur si l'ISP coupe la connexion
  • Architecture extensible : un host vidéo = un extractor plug-in (Sibnet, Vidmoly fournis)

Installation

Prérequis :

  • Python 3.10+
  • mpv sur le PATH (winget install mpv / brew install mpv / apt install mpv)
git clone https://github.com/Zeyneell/anime-mpv-cli.git
cd anime-mpv-cli
pip install -e .

Deux commandes équivalentes sont installées : vrcli (court) et voiranime.

Choisir le site source

L'URL du site est configurable. Aucun site n'est forcé dans le code, mais le parseur HTML est calibré pour les templates de la famille Anime-Sama (voiranime.rip et clones).

vrcli config set base_url https://<ton-site>/

Ou via la variable d'environnement VRCLI_BASE_URL.

Utilisation

Mode interactif (le plus simple)

vrcli

Te propose : continuer un anime entamé, chercher, parcourir, planning.

Sous-commandes

# Recherche
vrcli search one piece
# Saisons d'un anime
vrcli info one-piece
# Liste des épisodes d'une saison
vrcli episodes one-piece -s 3
# Lecture directe
vrcli play one-piece -s 3 -e 14 --lang vostfr
# Reprendre le dernier anime
vrcli resume
# Reprendre un anime précis
vrcli resume one-piece
# Historique
vrcli history
vrcli history --continue-watching
vrcli history-clear
# Planning du jour
vrcli planning
# Extraire juste l'URL (pour yt-dlp, curl, etc.)
vrcli stream one-piece -s 3 -e 14 --json

Téléchargement avec yt-dlp

vrcli ne télécharge pas — mpv suffit. Pour télécharger, branche vrcli stream sur yt-dlp :

vrcli stream one-piece -s 3 -e 14 --json \
 | jq -r '.url, (.headers | to_entries | map("--add-header=\(.key):\(.value)") | join(" "))' \
 | xargs yt-dlp

Configuration

vrcli config show # Affiche la conf
vrcli config path # Chemin du fichier
vrcli config set default_lang vf
vrcli config set base_url https://<ton-site>/
vrcli config set mpv_path "C:/Program Files/mpv/mpv.exe"
vrcli config set proxy "http://user:pass@host:port"
vrcli config set use_jina_fallback true

Le fichier vit sous %APPDATA%/voiranime-cli/config.json (Windows) ou ~/.config/voiranime-cli/config.json (Linux/Mac).

Variables d'environnement (override ponctuel)

Variable Effet
VRCLI_BASE_URL URL de base du site
VRCLI_PROXY Proxy HTTP/SOCKS
VRCLI_MPV Chemin vers mpv
VRCLI_LANG Langue par défaut (vostfr/vf)

Architecture

src/voiranime_cli/
├── cli.py # Commandes click
├── client.py # HTTP : curl_cffi (TLS Chrome) + fallback proxy serveur
├── scraper.py # Parseurs catalogue / anime / saison / épisode
├── extractors/ # Plug-ins par host (sibnet, vidmoly, ...)
├── player.py # Lancement mpv + arguments
├── history.py # SQLite : historique, reprise, continue watching
├── config.py # Fichier conf + paths cross-platform
├── ui.py # Rich tables + questionary prompts
└── models.py # Dataclasses (AnimeCard, Season, Episode, Stream...)

Ajouter un host vidéo

  1. Créer src/voiranime_cli/extractors/<name>.py avec une classe qui hérite de Extractor, expose matches(url) et resolve(url) -> Stream.
  2. L'ajouter à la liste _REGISTRY dans extractors/__init__.py.
  3. Ajouter un sample HTML dans tests/fixtures/ et un test dans tests/test_extractors.py.

Bypass réseau

Plusieurs ISP français interdisent l'accès direct à certains sites (RST sur SNI). Le client essaie dans l'ordre :

  1. Connexion directe via curl_cffi (impersonate Chrome TLS, défie les checks Cloudflare basiques)
  2. Proxy HTTP/SOCKS si config.proxy est défini
  3. Fallback proxy serveur (r.jina.ai) si la connexion directe échoue

🔒 Le fallback envoie l'URL ciblée à un service tiers (Jina) qui la log probablement. Désactivable avec vrcli config set use_jina_fallback false si tu préfères que la commande échoue plutôt que de passer par un tiers.

Tests

pip install -e ".[dev]"
pytest -q

Le suite est offline : tous les parseurs et extracteurs tournent contre des copies HTML capturées dans tests/fixtures/.

Licence

MIT — voir LICENSE.

About

Terminal client to search, browse and watch anime in mpv from Anime-Sama-compatible sites — no browser, no ads.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /