MPV Tracker
Terminal UI and CLI tool for tracking watched episodes in local series or anime directories.
It keeps a global library index in SQLite and writes per-series playback state
inside the tracked directory itself in .mpv-tracker.json.
Links
- PyPI: https://pypi.org/project/mpv-tracker/
- Project metadata: pyproject.toml
- README: README.md
Installation
Python 3.12 or newer is required.
Run Without Installing Globally
Use uvx to run the latest published version directly:
uvx mpv-tracker
Install With pipx
pipx is a good fit if you want an isolated global command:
pipx install mpv-tracker
mpv-tracker
Install With pip
If you prefer plain pip, install the package into your current environment:
pip install mpv-tracker
mpv-tracker
If you want a user-local install without pipx, you can also use:
python -m pip install --user mpv-tracker
mpv-tracker
TUI
Run mpv-tracker with no arguments to open the Textual interface.
The TUI is built around a few main screens:
Library: browse tracked series, open details, add/edit/remove entries, open MAL account settings, and open application settings.Series Detail: inspect watched count, resume state, MAL linkage, playback preferences, and episode-level progress.MAL: authenticate in the browser, inspect the current MAL account, and manage linked anime metadata.
Typical workflow:
- Launch the app with
mpv-tracker - Press
ato add a series directory - Press
Enteron a series to open the detail view - Select an episode and press
porEnterto play it withmpv - Return to the detail view to inspect updated progress, MAL metadata, and score controls
Useful TUI features:
- Per-series chapter-start preferences for fresh episodes
- MAL browser authentication from inside the TUI
- Linked MAL anime metadata with cached score, rank, popularity, synopsis, titles, genres, studios, and related info
- Direct MAL score updates from the detail view
- Browser-open actions for MAL profile and anime pages
- Built-in help screen on
hor?
Progress is persisted through the same .mpv-tracker.json state file used by
the CLI.
Showcase
Demo
This repo includes vhs tapes you can use to generate short terminal demos:
demo/showcase.tape: main TUI flow using a tracked MAL-linked seriesdemo/mal-auth.tape: MAL settings/authentication screen walkthroughdemo/add-series.tape: add a new MAL-linked series from inside the TUI
Example commands:
vhs demo/showcase.tape
vhs demo/mal-auth.tape
vhs demo/add-series.tape
CLI Commands
add
- Prompts for title, directory, and optional slug when not passed as arguments.
- Stores the tracked series in a SQLite library database.
list
- Shows every tracked series with watched episode count vs total discovered files.
- Shows the currently resumed episode and time offset when present.
watch <slug> [episode]
- Resolves the tracked series by slug.
- Starts
mpvon the tracked directory as a playlist and jumps to the resumed episode, next unwatched episode, or the explicitly selected episode. - Polls MPV over its IPC socket and updates
.mpv-tracker.jsonroughly once per second so resume data survives abrupt closes.
Episode discovery currently scans only the top level of the tracked directory and sorts video files by filename.
Development
This project uses uv for dependency and virtualenv management. Useful commands:
- Create/activate a virtualenv and install dependencies:
uv sync - Run the linter:
uv run ruff check - Run type checks:
uv run mypy - Install local helpers:
uv sync --group local - Run everything in one go:
uv run ruff check && uv run mypy
Pre-commit
uv run prek install
Packaging
Builds are handled by hatchling through uv:
uv build
Metadata
Release files for mpv-tracker 1.5.0
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 | Actions |
|---|---|---|---|---|
| mpv_tracker-1.5.0.tar.gz | 41.6 kB | Without provenance | Details for mpv_tracker-1.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mpv_tracker-1.5.0-py3-none-any.whl | Python 3 | none | any | Details for mpv_tracker-1.5.0-py3-none-any.whl |
Total release size: 89.3 kB
Release files / mpv_tracker-1.5.0.tar.gz
| Download URL | mpv_tracker-1.5.0.tar.gz |
|---|---|
| Size | 41.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e6b6bae732d8be90798603c1c907a5ea626b904e0ed9aca41fe3ba7d145dbb1
|
|
BLAKE2b-256 checksum How to use checksums |
ba84247c20beb3b7f7e83d3581b036523a62a49d417730dbd87a8c2438efd902
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Manjaro Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mpv_tracker-1.5.0-py3-none-any.whl
| Download URL | mpv_tracker-1.5.0-py3-none-any.whl |
|---|---|
| Size | 47.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f85c9f5e8d7a86a393e3ba57e7d2058115936c4134db3721dc021c552c843b04
|
|
BLAKE2b-256 checksum How to use checksums |
8802c2812156295cbb0f922895a9da00fd0bebe7cf9911f04f3f8865ed2f1d34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Manjaro Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for mpv-tracker 1.5.0
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.