Terminal-based anime discovery and streaming tool
Project description
Kuro Anime
Terminal-based anime discovery and streaming tool. Search anime, browse airing shows, view details, download episodes, and stream them — all from your terminal.
Features
- Search — Find any anime by title; persistent short codes for instant lookups
- Currently Airing — Browse the latest releases with pagination
- Detailed Info — Synopsis, genres, relations, recommendations, metadata
- Episode Listings — Browse episodes with pagination and sort order
- Streaming — Interactive episode/quality picker → mpv
- Download — Extract video URLs or batch-download episodes
- Doctor —
kuro doctorchecks all system dependencies with install instructions - Shell Completion —
kuro completion bash|zsh|fishgenerates completion scripts - History —
kuro historytracks recent searches, watches, and downloads
Installation
Requires Python 3.10+, mpv (for kuro watch), and ffmpeg (for kuro download).
pip install kuro-anime
To install from source:
git clone https://github.com/awtawsif/kuro_anime.git
cd kuro_anime
pip install .
Configuration
Create ~/.kuro_anime/config.toml to customize defaults:
[defaults]
output_dir = "~/Videos" # download destination
quality = "best" # or "1080", "720", etc.
player = "mpv" # video player binary
[download]
filename_template = "{title} - EP{episode:02d}.mp4"
CLI flags override config values when both are supplied.
Quick Start
# Search for an anime (generates short codes)
kuro search "One Piece"
# View details using a short code
kuro detail onpi
# Browse episodes and watch
kuro watch onpi
# See what's currently airing
kuro airing --page 1
Commands
kuro search <query>
Search anime by title. Displays results with short codes and saves them to state.
kuro search "Frieren"
kuro airing [--page N]
Browse currently airing anime with pagination. Assigns short codes for each entry.
kuro airing --page 1
kuro detail <anime-id>
Show full anime info: synopsis, metadata, relations, and recommendations.
Anime IDs can be a short code (onpi), a UUID (37aeb550-...), or a kebab-case slug (one-piece). Short codes persist across sessions and never require re-searching.
kuro detail onpi # short code
kuro detail one-piece # slug
kuro episodes <anime-id> [--page N] [--sort episode_asc|episode_desc]
List episodes with pagination.
kuro episodes onpi --page 1 --sort episode_desc
kuro watch <anime-id> [episode_id] [--episode / -e]
Interactive episode and quality picker. Extracts the video URL and streams it via mpv.
kuro watch onpi
kuro watch onpi --episode 5 # skip to episode 5
kuro download <anime-id> [episode_id] [--episode / -e] [--output / -o] [--batch / -b]
Download video files. Auto-named {Title} - EP{num:02d}.mp4.
kuro download onpi # interactive picker
kuro download onpi -b 1-10 # batch episodes 1-10
kuro download onpi -b 1-5,8,10-12 -o ./eps/ # batch with custom dir
kuro doctor
Check all system dependencies and configuration. Prints a summary table with pass/fail per check.
kuro doctor
kuro completion bash|zsh|fish
Print a shell completion script. Source it in your shell config:
eval "$(kuro completion bash)" # bash
eval "$(kuro completion zsh)" # zsh
kuro completion fish | source # fish
kuro history [--limit N] [--clear]
Show recent searches, watches, and downloads, or clear history.
kuro history # last 20 entries
kuro history --limit 5 # last 5 entries
kuro history --clear # erase all history
All commands accept --json for machine-readable JSON output.
State
Persisted to ~/.kuro_anime/state.json. Short codes, session mappings, a kwik-cache, and activity history live there. Delete the file to reset all state.
FAQ
"mpv not found": Install mpv — sudo apt install mpv (Debian/Ubuntu), brew install mpv (macOS), sudo dnf install mpv (Fedora).
"ffmpeg not found": Install ffmpeg — sudo apt install ffmpeg (Debian/Ubuntu), brew install ffmpeg (macOS), sudo dnf install ffmpeg (Fedora).
"Could not resolve": The identifier wasn't a short code, UUID, or matching slug. Run kuro search <query> first.
License
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 kuro_anime-1.7.0.tar.gz.
File metadata
- Download URL: kuro_anime-1.7.0.tar.gz
- Upload date:
- Size: 34.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bb97ea18b75bdce07f8a396e1a1e4cef88fadd3045e77ebe8025e078e83b4bd
|
|
| MD5 |
5cd0129a83b26da717a597f9b27e9b78
|
|
| BLAKE2b-256 |
d7f02105889d17473181ed91cd37f59bba84a44f46a5e3da8a978340bb76f5c3
|
Provenance
The following attestation bundles were made for kuro_anime-1.7.0.tar.gz:
Publisher:
publish.yml on awtawsif/kuro_anime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kuro_anime-1.7.0.tar.gz -
Subject digest:
7bb97ea18b75bdce07f8a396e1a1e4cef88fadd3045e77ebe8025e078e83b4bd - Sigstore transparency entry: 1689843932
- Sigstore integration time:
-
Permalink:
awtawsif/kuro_anime@fb1d02f5e3360f84585cde67b0a98f72c270a2fb -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/awtawsif
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fb1d02f5e3360f84585cde67b0a98f72c270a2fb -
Trigger Event:
push
-
Statement type:
File details
Details for the file kuro_anime-1.7.0-py3-none-any.whl.
File metadata
- Download URL: kuro_anime-1.7.0-py3-none-any.whl
- Upload date:
- Size: 38.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38ae971a0b54ce08e9829ad88659a9a9ecafb38181db252b04afb67f9d5a621d
|
|
| MD5 |
2ada7be70e8e7b42dc8575e3d0b44d18
|
|
| BLAKE2b-256 |
be70a36b3d760e7bcb565a30aca0fe8bb6a2467011be4a466d14f2346982e2c3
|
Provenance
The following attestation bundles were made for kuro_anime-1.7.0-py3-none-any.whl:
Publisher:
publish.yml on awtawsif/kuro_anime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kuro_anime-1.7.0-py3-none-any.whl -
Subject digest:
38ae971a0b54ce08e9829ad88659a9a9ecafb38181db252b04afb67f9d5a621d - Sigstore transparency entry: 1689844241
- Sigstore integration time:
-
Permalink:
awtawsif/kuro_anime@fb1d02f5e3360f84585cde67b0a98f72c270a2fb -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/awtawsif
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fb1d02f5e3360f84585cde67b0a98f72c270a2fb -
Trigger Event:
push
-
Statement type: