Skip to main content

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.

PyPI version Python version License

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
  • Doctorkuro doctor checks all system dependencies with install instructions
  • Shell Completionkuro completion bash|zsh|fish generates completion scripts
  • Historykuro history tracks recent searches, watches, and downloads
  • Config Initkuro init generates a commented default configuration

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

A default config is auto-generated on first run. Edit ~/.kuro_anime/config.toml to customize:

[defaults]
output_dir = "~/Videos"        # download destination
quality = "best"               # preferred resolution: "best", "1080", "720", etc.
language = "jpn"               # preferred audio language: "jpn", "eng", etc.
player = "mpv"                 # video player binary (mpv, vlc, iina, etc.)

[download]
filename_template = "{title} - EP{episode:02d}.mp4"

You can also run kuro init --force to regenerate the default config. 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

kuro init [--force]

Generate a commented default configuration file at ~/.kuro_anime/config.toml. Run with --force to overwrite an existing config.

kuro init         # create config if missing
kuro init --force # overwrite existing config

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

GNU General Public License v3.0

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

kuro_anime-1.7.2.tar.gz (35.7 kB view details)

Uploaded Source

Built Distribution

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

kuro_anime-1.7.2-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file kuro_anime-1.7.2.tar.gz.

File metadata

  • Download URL: kuro_anime-1.7.2.tar.gz
  • Upload date:
  • Size: 35.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kuro_anime-1.7.2.tar.gz
Algorithm Hash digest
SHA256 7736343f1b5b139ed96676d596502e1520afa9c0f6d0644722fd94852d1b82ba
MD5 e1706ceee61f364b4fa649da28292649
BLAKE2b-256 34e89a74f9b7f5c151f6eb0e05591cbd90a3c70a11c0471153beb09d55ac19d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for kuro_anime-1.7.2.tar.gz:

Publisher: publish.yml on awtawsif/kuro_anime

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kuro_anime-1.7.2-py3-none-any.whl.

File metadata

  • Download URL: kuro_anime-1.7.2-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kuro_anime-1.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2467aa7e6e5c0a854b78b9c8bd85c82bdeda9c5150601be43cd2de98b7e2aeea
MD5 f1271389a281d01a705291dabb0fbe68
BLAKE2b-256 265e466b662d59259bb07b3c8a6eec0fb4c3cdc79f3888a1b39979dc25345178

See more details on using hashes here.

Provenance

The following attestation bundles were made for kuro_anime-1.7.2-py3-none-any.whl:

Publisher: publish.yml on awtawsif/kuro_anime

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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