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
Metadata
Release files for anicli-ru 6.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| anicli_ru-6.1.3.tar.gz | 601.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| anicli_ru-6.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / anicli_ru-6.1.3.tar.gz
| Download URL | anicli_ru-6.1.3.tar.gz |
|---|---|
| Size | 601.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b6517e8f9d3ccd5393c53bd24beec18554b564cfae82aa6f4b00cea6c624694b
|
|
BLAKE2b-256 checksum How to use checksums |
2394c025996a94054cfa103dff057c5fe23ec0eff2c98df48536e3ecfe4ae28b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / anicli_ru-6.1.3-py3-none-any.whl
| Download URL | anicli_ru-6.1.3-py3-none-any.whl |
|---|---|
| Size | 527.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
50b1b203d8de96e1c1cb22d2f90c78fb780dad0c78532abbd2bf26377a7b9634
|
|
BLAKE2b-256 checksum How to use checksums |
a0074a132f07da6438dda928882934ee3f6f0193e58771d9191d9bbf13f96bab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for anicli-ru 6.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.