Skip to main content

A small local web UI for ani-cli.

Project description

ani-gui

license: GPL-3.0 PyPI version python 3.6+ zero dependencies GitHub release GitHub stars last commit

A small local web UI for ani-cli.

It searches the same AllAnime API that ani-cli uses (so it can show a proper list of series and an episode grid), and hands playback off to your installed ani-cli binary — so all the stream-extraction and player logic stays in one place and keeps working as ani-cli updates.

Features

  • Search with cover art (AniList / MyAnimeList / Wikipedia fallback), sub/dub toggle, episode grid
  • Play or download any episode in your chosen player (mpv / IINA / VLC)
  • Continue Watching — resumes the next episode from ani-cli's history
  • Quality selection (best / 1080 / 720 / 480 / worst)
  • Update & health check — flags ani-cli and ani-gui updates, missing binaries, or no player
  • Zero third-party dependencies; single Python file + single HTML file

Requirements

  • ani-cli installed and working (it handles playback)
  • python3 (standard library only — no pip installs)
  • A player ani-cli knows about (mpv / IINA / VLC) for watching

Install & run

pipx — recommended. Isolated environment, handles PATH automatically:

brew install pipx && pipx ensurepath     # first time only
pipx install ani-gui
ani-gui

Homebrew (macOS / Linux) — see Formula/ani-gui.rb:

brew install rickwiththeportalgun/tap/ani-gui
ani-gui

pip — works but may need a PATH tweak. On macOS, pip3 installs scripts to ~/Library/Python/3.x/bin, which isn't on PATH by default. Add it to your shell config if you go this route:

pip3 install ani-gui
# If "command not found", add the scripts dir to PATH:
export PATH="$HOME/Library/Python/$(python3 -c 'import sys;print(sys.version_info.minor)')/bin:$PATH"
echo 'export PATH="$HOME/Library/Python/$(python3 -c "import sys;print(sys.version_info.minor)")/bin:$PATH"' >> ~/.zshrc
ani-gui

From source (no install):

./ani-gui

macOS .app (double-click, no terminal):

sh packaging/macos/make-app.sh    # builds dist/ani-gui.app

Running ani-gui starts a local server and opens http://127.0.0.1:17390 in your browser. Options: --port, --host, --no-browser (or ANI_GUI_PORT).

ani-gui is a localhost tool — it opens a player on the machine running it, so it isn't a shared website. See DISTRIBUTION.md.

Use

Search tab

  1. Type a search and hit Search (toggle Sub/Dub as needed).
  2. Click a series to load its episodes (cover art shown for each result).
  3. Click an episode, pick a quality, then Play (or Download).

Continue Watching tab

Reads ani-cli's watch history and shows each series with its cover and the next unwatched episode. Resume plays that next episode in one click. Series you're caught up on are shown but disabled.

Playback opens in your usual ani-cli player. Downloads go to ani-cli's download directory (ANI_CLI_DOWNLOAD_DIR, defaults to the current dir).

How it works

  • GET /api/search and GET /api/episodes call the AllAnime GraphQL API directly. Covers are proxied through GET /api/cover (with a Wikipedia fallback when the API provides no artwork). Results are filtered/ordered to match ani-cli's own -S numbering.
  • GET /api/continue parses ani-cli's history file ($ANI_CLI_HIST_DIR or ~/.local/state/ani-cli/ani-hsts) and resolves each show's cover + next episode.
  • POST /api/play runs ani-cli -S <n> -e <ep> -q <quality> [--dub] [-v] "<query>" with stdin closed, so ani-cli resolves the stream, launches the player detached, then exits cleanly. Pass player: "vlc" for VLC.
  • POST /api/resume looks up the show's search position by id (so the -S number is correct) and plays the next episode.
  • GET /api/version reports ani-gui / ani-cli versions, whether an update is available, and which players are installed.
  • GET /docs serves the project landing page with install instructions and links back to the app.

Troubleshooting

  • "ani-cli isn't installed" — install it (brew install ani-cli or see the upstream repo) and make sure it's on your PATH, then reload.
  • "No video player found" — install mpv or iina.
  • Play does nothing / black screen — a specific source may be down. Try a different quality, or pick another search result. (Same behavior as ani-cli.)
  • Continue tab is slow — it makes one API call per history entry; large histories take a moment.

FAQ

Can I host this so people use it from a browser, like a website? Not as-is. ani-gui launches a local player (mpv / iina) on the machine running the server, so if you host it remotely the video opens on the server, not the visitor's screen. It's designed as a localhost tool — each person runs it on their own computer. See DISTRIBUTION.md for packaging options and what a truly hosted, in-browser-playback version would require.

Contributing

Issues and PRs welcome — see CONTRIBUTING.md and the Code of Conduct.

Files

  • ani_gui/server.py — zero-dependency Python backend
  • ani_gui/index.html — single-file frontend
  • ani-gui — source launcher (python3 -m ani_gui)
  • pyproject.toml — packaging / console entry point
  • Formula/ani-gui.rb — Homebrew formula template
  • packaging/macos/make-app.sh — builds a double-clickable .app
  • docs/index.html — project homepage (GitHub Pages)

License

GPL-3.0, matching upstream ani-cli (ani-gui replicates ani-cli's public AllAnime API constants and mirrors its result ordering).

ani-gui is an independent front-end and is not affiliated with the ani-cli project. It streams nothing itself — playback is delegated to ani-cli.

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

ani_gui-0.3.3.tar.gz (40.5 kB view details)

Uploaded Source

Built Distribution

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

ani_gui-0.3.3-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file ani_gui-0.3.3.tar.gz.

File metadata

  • Download URL: ani_gui-0.3.3.tar.gz
  • Upload date:
  • Size: 40.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for ani_gui-0.3.3.tar.gz
Algorithm Hash digest
SHA256 4fa21717977f74bf47b5811f571e52e3f8eddf2a1f1d37e6bfb43ef9de6f33bf
MD5 837120b8aa658c78d65a8658c9a4df71
BLAKE2b-256 003eebeb0adb6df2202aa58665ae50cacd611839ac67dba16f086fc3f75ee1d6

See more details on using hashes here.

File details

Details for the file ani_gui-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: ani_gui-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for ani_gui-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0d4ad2cfab3398c96044c2a1049151e53d344753aae94b3cea83b2ff80ddba00
MD5 407c510ea74be3c90db0ae87048c558c
BLAKE2b-256 98b9c3192ab4d0ff236bdd1b071cda705b478552f517234e491f4c10a8d22982

See more details on using hashes here.

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