Go to file
Benexl 7943dcc3db Merge pull request #110 from theobori/fix/ruff-check-errors
Fixed the `ruff check` command line errors
2025-07-30 22:38:25 +03:00
2025-07-29 15:42:58 +03:00
2025-07-24 15:04:13 +03:00
2025-07-24 14:43:15 +03:00
2025-07-24 15:04:13 +03:00
2024-12-02 22:26:03 +03:00
2025-07-28 12:36:49 +03:00
2025-07-24 15:04:13 +03:00
2025-07-27 18:39:39 +02:00
2025-07-29 18:52:31 +03:00
2024-08-05 09:47:00 +03:00
2025-07-29 18:52:31 +03:00
2024-08-21 11:42:48 +03:00
2025-07-29 17:25:48 +03:00
2024-10-18 22:37:14 +03:00
2025-07-29 18:51:09 +03:00

FastAnime

Your browser anime experience, from the terminal.

PyPI - Downloads GitHub Actions Workflow Status Discord GitHub Issues or Pull Requests PyPI - License Static Badge

fastanime

Screenshots Media Results Menu: image Episodes Menu with Preview: image
Riced Preview Examples

Anilist Results Menu (FZF): image

Episodes Menu with Preview (FZF): image

No Image Preview Mode: image

Desktop Notifications + Episodes Menu: image

Installation

Windows Linux/BSD Arch Linux MacOS Android

The app runs wherever Python 3.10+ is available. On Android, you can use Termux. For installation help, join our Discord.

Installation on NixOS

Static Badge

nix profile install github:Benexl/fastanime

Installation on Arch Linux

Static Badge

Install from the AUR using an AUR helper like yay or paru.

# Stable version (recommended)
yay -S fastanime

# Git version (latest commit)
yay -S fastanime-git

The recommended installation method is with uv, a fast Python package manager.

# Install with all optional features (recommended for the full experience)
uv tool install "fastanime[standard]"

# Stripped-down installations
uv tool install fastanime  # Core functionality only
uv tool install "fastanime[download]"  # For advanced downloading
uv tool install "fastanime[discord]"   # For Discord Rich Presence
uv tool install "fastanime[notifications]" # For desktop notifications

Other Installation Methods

pipx or pip
pipx install "fastanime[standard]"

Using pip

pip install "fastanime[standard]"
Bleeding Edge & Building from Source

Installing the Bleeding Edge Version

Download the latest fastanime_debug_build artifact from the GitHub Actions page, then:

unzip fastanime_debug_build.zip
uv tool install fastanime-*.whl

Building from Source

Requirements: Git, Python 3.10+, and uv.

git clone https://github.com/Benexl/FastAnime.git --depth 1
cd FastAnime
uv tool install .
fastanime --version

Tip

Enable shell completions for a much better experience by running fastanime completions and following the on-screen instructions for your shell.

External Dependencies

For the best experience, install these external tools:

  • Required for Streaming:
    • mpv - The primary media player.
  • Recommended for UI & Previews:
    • fzf - For a powerful fuzzy-finder interface.
    • chafa or kitty's icat - For image previews in the terminal.
  • Recommended for Downloads & Features:
    • ffmpeg - Required for downloading HLS streams.
    • webtorrent-cli - For streaming torrents.
    • syncplay - To watch anime together with friends.
    • feh or kitty's icat - For the experimental manga mode.

Usage

FastAnime offers a rich interactive TUI for browsing and a powerful CLI for scripting and automation.

Global Options

Most options can be passed directly to the fastanime command to override your config for that session.

  • --provider <allanime|animepahe>: Choose the streaming site to use.
  • --selector <fzf|rofi|default>: Choose the UI backend.
  • --preview, --no-preview: Enable/disable image and info previews (requires fzf).
  • --dub, --sub: Set preferred translation type.
  • --icons, --no-icons: Toggle UI icons.
  • --log, --log-file: Enable logging to stdout or a file for debugging.
  • --rich-traceback: Show detailed, formatted tracebacks on error.

Main Commands

  • fastanime anilist: The main entry point for the interactive TUI. Browse, search, and manage your lists.
  • fastanime registry: Manage your local database of anime. Sync, search, backup, and restore.
  • fastanime download: Scriptable command to download specific episodes.
  • fastanime search: Scriptable command to find and stream episodes directly.
  • fastanime config: Manage your configuration file.
  • fastanime update: Update FastAnime to the latest version.
  • fastanime queue: Add episodes to the background download queue.
  • fastanime worker: Run the background worker for downloads and notifications.

Deep Dive: fastanime anilist (Interactive TUI)

This is the primary way to use FastAnime. Simply run fastanime anilist to launch a rich, interactive terminal experience. From here you can:

  • Browse trending, popular, and seasonal anime.
  • Manage your personal lists (Watching, Completed, etc.) after logging in with fastanime anilist auth.
  • Search for any anime in the AniList database.
  • View detailed information, characters, recommendations, reviews, and airing schedules.
  • Stream or download episodes.

anilist search Subcommand

A powerful command to filter the AniList database directly from your terminal.

# Search for anime from 2024, sorted by popularity, that is releasing and not on your list
fastanime anilist search -y 2024 -s POPULARITY_DESC --status RELEASING --not-on-list

# Find the most popular movies with the "Fantasy" genre
fastanime anilist search -g Fantasy -f MOVIE -s POPULARITY_DESC

# Dump search results as JSON instead of launching the TUI
fastanime anilist search -t "Demon Slayer" --dump-json

anilist download Subcommand

Combines the power of anilist search with the download command, allowing you to batch-download based on filters.

# Download episodes 1-12 of all fantasy anime that aired in Winter 2024
fastanime anilist download --season WINTER -y 2024 -g Fantasy -r "0:12"

Deep Dive: fastanime registry (Local Database)

FastAnime maintains a local registry of your anime for offline access, enhanced performance, and powerful data management.

  • registry sync: Synchronize your local data with your remote AniList account.
  • registry stats: Show detailed statistics about your viewing habits.
  • registry search: Search your locally stored anime data.
  • registry backup: Create a compressed backup of your entire registry.
  • registry restore: Restore your data from a backup file.
  • registry export/import: Export your data to JSON/CSV for use in other applications.

These commands are designed for automation and quick access.

download Examples

# Download the latest 5 episodes of One Piece
fastanime download -t "One Piece" -r "-5"

# Download episodes 1 to 24, merge subtitles, and clean up original files
fastanime download -t "Jujutsu Kaisen" -r "0:24" --merge --clean

search (Binging) Examples

# Start binging an anime from the first episode
fastanime search -t "Attack on Titan" -r ":"

# Watch the latest episode directly
fastanime search -t "My Hero Academia" -r "-1"

MPV IPC Integration

When use_ipc is enabled, FastAnime provides powerful in-player controls without closing MPV.

Key Bindings

  • Shift+N: Play the next episode.
  • Shift+P: Play the previous episode.
  • Shift+R: Reload the current episode.
  • Shift+A: Toggle auto-play for the next episode.
  • Shift+T: Toggle between dub and sub.

Script Messages (MPV Console)

  • script-message select-episode <number>: Jump to a specific episode.
  • script-message select-server <name>: Switch to a different streaming server.

Configuration

FastAnime is highly customizable via its configuration file, located at ~/.config/fastanime/config.ini (path may vary by OS). Run fastanime config --path to find the exact location on your system.

A default configuration file with detailed comments is created on first run. You can edit it with fastanime config or use the interactive wizard with fastanime config --interactive.

Default Configuration (`config.ini`)
[general]
# The preferred watch history tracker (local,remote) in cases of conflicts
preferred_tracker = local
# The pygment style to use
pygment_style = github-dark
# The spinner to use
preferred_spinner = smiley
# The media database API to use (e.g., 'anilist', 'jikan').
media_api = anilist
# The default anime provider to use for scraping.
provider = allanime
# The interactive selector tool to use for menus.
selector = fzf
# Automatically select the best-matching search result from a provider.
auto_select_anime_result = True
# Display emoji icons in the user interface.
icons = True
# Type of preview to display in selectors.
preview = full
# The command-line tool to use for rendering images in the terminal.
image_renderer = icat
# The external application to use for viewing manga pages.
manga_viewer = feh
# Automatically check for new versions of FastAnime on startup.
check_for_updates = True
# Enable caching of network requests to speed up subsequent operations.
cache_requests = True
# Maximum lifetime for a cached request in DD:HH:MM format.
max_cache_lifetime = 03:00:00
# Attempt to normalize provider titles to match AniList titles.
normalize_titles = True
# Enable Discord Rich Presence to show your current activity.
discord = False
# Number of recently watched anime to keep in history.
recent = 50

[stream]
# The media player to use for streaming.
player = mpv
# Preferred stream quality.
quality = 1080
# Preferred audio/subtitle language type.
translation_type = sub
# The default server to use from a provider. 'top' uses the first available.
server = TOP
# Automatically play the next episode when the current one finishes.
auto_next = False
# Automatically resume playback from the last known episode and position.
continue_from_watch_history = True
# Which watch history to prioritize: local file or remote AniList progress.
preferred_watch_history = local
# Automatically skip openings/endings if skip data is available.
auto_skip = False
# Percentage of an episode to watch before it's marked as complete.
episode_complete_at = 80
# The format selection string for yt-dlp.
ytdlp_format = best[height<=1080]/bestvideo[height<=1080]+bestaudio/best
# Prevent updating AniList progress to a lower episode number.
force_forward_tracking = True
# Default behavior for tracking progress on AniList.
default_media_list_tracking = prompt
# Preferred language code for subtitles (e.g., 'en', 'es').
sub_lang = eng
# Use IPC communication with the player for advanced features like episode navigation.
use_ipc = True

Contributing

Pull requests are highly welcome! Please read our Contributing Guidelines to get started with setting up a development environment and understanding our coding standards.

Disclaimer

Important

This project scrapes public-facing websites (allanime, animepahe). The developer(s) of this application have no affiliation with these content providers. This application hosts zero content. Use at your own risk.

Full Disclaimer

Description
Languages
Python 99.3%
Shell 0.4%
Nix 0.3%