cli tool for watching anime
Project description
anicli-ru
CLI приложение и локальный вебсервер для поиска и просмотра аниме из терминала с русской озвучкой или субтитрами. Поддерживает unix, linux, windows 10/11 (через windows terminal)
Demonstration
CLI:
https://github.com/user-attachments/assets/77298253-4e3d-4420-8891-ee821d4834a6
WEB:
https://github.com/user-attachments/assets/d8bf90aa-a2df-48fe-a625-5e3a30a5cf67
Index
Установка
- Требуется python 3.9 или выше
- Для CLI требуется mpv видеоплеер
- Проект поставляется через pip, рекомендуется устанавливать через uv или pipx
- Минимальная установка, только CLI клиент
- UV -
uv tool install anicli-ru(рекомендуется) - PIPX -
pipx install anicli-ru
- UV -
Опциональные зависимости:
-
Установка всех зависимостей (CLI + webserver + browser cookie extractor)
uv tool install anicli-ru[all]pipx install anicli-ru[all]
-
Извлечение cookies из браузера в клиент (используется для редкого обхода ddos-guard/cloudflare, требуется зависимость rookiepy)
uv tool install anicli-ru[cookies]pipx install anicli-ru[cookies]
-
Локальный веб клиент
uv tool install anicli-ru[web]pipx install anicli-ru[cookies]
-
termux webclient (TODO, untested)
TODO: add install script for termux (кто протестирует - можете закинуть PR с shell скриптом установки)
Предполагаю, что локальный клиент должен работать в android termux эмуляторе. Для работоспособности требуются следующие зависимости:
pkg install python-dev libxml2-dev libxslt-dev libiconv-dev
Затем скачать проект, установить пакеты и запустить
API interface
Клиент и парсеры умышленно разделены в отдельные репозитории: чтобы мне было удобнее экспериментировать и исправлять и сторонним пользователям использовать в проекте.
Если только нужны готовые парсеры и API интрефейс, используйте библиотеку https://github.com/vypivshiy/anicli-api
Usage
Для вывода информации о коммандах используйте:
anicli-ru --help
доступных опции:
anicli-ru cli --help
Вывод установленной версии клиента и API
anicli-ru version
Check Updates
работает если установлен через uv или pipx, иначе необходимо вручную обновлять
Проверить обновления
anicli-ru check-updates
Установить обновления:
anicli-ru update
принудительно переустановить:
anicli-ru update --force
CLI
Реализован поверх prompt-toolkit, визуализация вывода идёт через rich, воспроизведение видео через mpv плеер.
Вывод всех доступных источников:
Дополнительная информация об источниках описана в anicli-api/source-description
anicli-ru cli
Запуск поиска при старте.
anicli-ru cli -s animego --search isekai
Запуск ongoing при старте
anicli-ru cli -s animego --ongoing
Понижение качества доступных видео (выбирает самый ближайший)
# например, для kodik это 360, для dreamcast - 1080
anicli-ru cli -s animego -q 360
interface
- Нажимайте
<tab>кнопку или начинайте вводить - выведутся доступные команды - search, ongoing - есть простой фильтр по названию тайтла - вводите символы в назваии тайтла - они поднимутся вверх в автодополнении
Episodes:
Для эпизодов есть фильтр по номерам. Индекс начинается с 1.
Примеры:
- выбрать 1, 3 и 5 эпизод:
1 3 5
- выбрать 1, 3 и с 5 по 10:
1 3 5-10
- если ошибетесь и добавите лишние данные - фильтр откорректируется автоматически:
например при вводе
1 1 2 3 1-2
финальный фильтр:
1-3
- Воспроизведение серии видео
- создаёт временный файл-плейлист.
- в unix/linux записывает в директорию
/tmp, - в windows - в директорию
%TMP%(по умолчаниюC:\Users\<USERNAME>\AppData\Local\Temp)
- в unix/linux записывает в директорию
- размер плейлиста зависит от ключа
--m3u-size(по умолчанию, значение 6). - не рекомендуется увеличивать значение если не планируете всё смотеть "в один присест", так как ссылки на видео живут примерно 24 часа
- автоматически собирает плейлист на основе значений источника и даббера.
- Например, если вы выбрали Ongoing и озвучку "Субтитры", а для последнего он отсутвует (но есть Animevost) - поток прервётся.
WEB
[!warning] Реализован для локального использования, категорически не рекомендуется применять в production и(или) публичной сети. Не рассчитан для выполнения 24/7
Да я ваибкодил его, но также затерпел и вайбдебажил и вайбтестил его
Простой вебклиент со статическим рендером страниц и встроенным reverse-proxy трансляции видео в плеер.
Стек сервера:
- backend: fastapi
- frontend: pure js, water.css
- видеоплеер - Artplayer.js и плагины hls.js, dash.js
- не применяются базы данных - данные кешируются в ОЗУ процесса сервера
Для запуска требуется установить зависимость:
- uv tool install ani-cli-ru[web]
- pipx install ani-cli-ru[web]
запускать командой:
anicli-ru web
Для прочих настроек (ip, port, ttl) введите
anicli-ru web --help
Входить по ссылке со сгенерированным токеном или сканировать QR код. Пример вывода ссылки для входа:
Server started at: http://127.0.0.1:8000/?token=HSB6l1qzoBogpPNpBakXhA
В search/ongoing/episode страницах доступны фильтры по заголовку и номерам эпизодов. Синтаксис поиска номера эпизода идентичен как в CLI
Command Reference
Commands
version
Description: Напечатать версию приложения и anicli-api
Usage:
anicli version
update
Description: Обновить приложение
[!note] Работает если установлено в pipx или uv, в обычном pip нужно обновлять вручную
Usage:
anicli update [--force]
Options:
--force: Принудительно обновить api и клиент
check-updates
Description: Проверить наличие обновлений на pypi
Usage:
anicli check-updates
web
Description: Запустить локальный сервер (experimental, LOCAL USE ONLY)
Usage:
anicli web [OPTIONS]
Options:
-h, --host TEXT: IP host (default: 127.0.0.1)-p, --port INTEGER: Port (default: 8000)-mw, --max-workers INTEGER: Uvicorn max workers (default: 1)-c, --chunk-size TEXT: Размер чанка видеопотока для трансляции в вебплеер. Поддерживает суффиксы: k/K (kbytes), m/M (mbytes), или число (bytes) (по умолчанию: 1M - 1 мегабайт)-s, --source TEXT: Источник (можно переключить в веб интерфейсе)--ttl TEXT: Cache TTL - через сколько уничтожишь извлеченные объекты. Поддерживает суффиксы: h/H (hours), m/M (minutes), или число (seconds) (default: 12h)
cli
Description: Запуск интерактивного cli приложения (требуется mpv видеоплеер) Usage:
anicli cli [OPTIONS]
Required Options:
-s, --source TEXT: Источник (можно изменить в приложении)
Optional Options:
-q, --quality INTEGER: Качество видео по умолчанию. Если оно недоступно - выберет близжайшее значение. (default: 2060)--search TEXT: При запуске вывести результат поиска тайтлов по запросу--ongoing: При запуске вывести доступные онгоинги-mo, --mpv-opts TEXT: Дополнительные MPV опции. Должны быть одной строкой. Пример:"-config=/.config/mpv/mpv.conf --no-audio"--m3u-size INTEGER: Максимальный размер плейлиста (slice-play) (default: 6). Не рекомендуется увеличивать размер - извлечённые ссылки имеют срок жизни и не живут долго!--timeout INTEGER: HTTP client timeout (seconds) (default: 60)--proxy TEXT: Прокси для клиента. поддерживает http(s), socks4/5. Имеет формат scheme://user:password@host:port--cookies-from-browser TEXT: Извлечь cookies из браузера и загрузить в httpx клиент. Требуется зависимостьanicli[cookies]--cookies PATH: прочитать cookie из файла (должны быть в netscape формате)-H, --header TEXT: Добавить http заголовки в клиент, можно передать несколько раз (формат: Key=Value)--header-file PATH: Путь до файла с заголовками headers (формат на одну строку:, Key=Value)
Notes
- The
webcommand is experimental and intended for local network use only, not suitable for production deployment - The
clicommand requires an MPV player to be installed and available in your system PATH - Both
--searchand--ongoingoptions cannot be used simultaneously in the cli command - Chunk size and TTL options support various suffixes for convenience:
- Chunk size: k/K for kilobytes, m/M for megabytes, or plain integer for bytes
- TTL: h/H for hours, m/M for minutes, or plain integer for seconds
License
GPL3
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 anicli_ru-6.1.0.tar.gz.
File metadata
- Download URL: anicli_ru-6.1.0.tar.gz
- Upload date:
- Size: 573.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4ad08157bd02e528a1a993279e874cd88680ea7104af47e4f1494c2d1624686
|
|
| MD5 |
79fc2d2bf25351a7649012b77d3eeef9
|
|
| BLAKE2b-256 |
0d4d635a38446f3b4b6d749c2228eec9294f64a301affb515294f4bc63ef4be3
|
File details
Details for the file anicli_ru-6.1.0-py3-none-any.whl.
File metadata
- Download URL: anicli_ru-6.1.0-py3-none-any.whl
- Upload date:
- Size: 526.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be4065d79807baeef8b9fdbe183a5bfdf2020c483585b7f6427944acbe2d969a
|
|
| MD5 |
590d46d5f7ca6cbc09c00fcfe81cff26
|
|
| BLAKE2b-256 |
b740894d20882a9e5ddf5a5ce29dacd6ddbebf37b767acef860fe8edcb6ed017
|