A fast, modular, terminal-based CLI for searching and streaming movies & TV series. Inspired by ani-cli.
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ ๐ฌ mov-cli โ your terminal cinema โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
| Feature | Status |
|---|---|
| Search movies & TV (TMDB) | โ |
| Rich interactive result tables | โ |
| Arrow-key / number selection | โ |
| Torrent sources (YTS + EZTV) | โ |
| mpv / VLC playback | โ |
| Magnet streaming (webtorrent / peerflix) | โ |
| SQLite search cache (TTL-based) | โ |
| Watch history | โ |
| Season / episode picker (TV) | โ |
| Trending movies & shows | โ |
| Pluggable provider system | โ |
| Config file | โ |
| Tool | Purpose | Install |
|---|---|---|
| Python 3.10+ | Runtime | โ |
| mpv or VLC | Media playback | mpv.io |
| webtorrent-cli or peerflix | Magnet streaming | npm i -g webtorrent-cli |
| TMDB API key | Search | themoviedb.org/settings/api |
# From PyPI (once published)
pip install mov-cli
# From source
git clone https://github.com/Maron09/Mov-cli.git
cd mov-cli
pip install -e .Register at https://www.themoviedb.org/settings/api (free, takes 30 seconds).
Option A โ environment variable (recommended)
export TMDB_API_KEY=your_key_here
# Add to ~/.bashrc or ~/.zshrc to persistOption B โ config file
mov-cli config set tmdb_api_key your_key_heremov-cli doctor# Search all types
mov-cli search "Inception"
# Search movies only
mov-cli search "The Dark Knight" --type movie
# Search TV shows
mov-cli search "Breaking Bad" --type tv
# Jump straight to S3E4
mov-cli search "The Office" --type tv --season 3 --episode 4mov-cli trending
mov-cli trending --type movie --window week --playmov-cli history
mov-cli history --limit 50
mov-cli history --clearmov-cli config show
mov-cli config set preferred_player vlc
mov-cli config set default_quality 1080p
mov-cli config set cache_ttl_hours 48mov-cli cache # show cache status
mov-cli cache --clear # wipe cached search resultsmov-cli doctor
mov-cli version$ mov-cli search "Interstellar"
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ ๐ฌ mov-cli โ your terminal cinema โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Searching for 'Interstellar'โฆ
โญโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโฎ
โ # โ Title โ Type โ Year โ Rating โ Overview โ
โโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโค
โ 1 โ Interstellar โ Movie โ 2014 โ 8.4/10 โ A team ofโฆ โ
โ 2 โ Interstellarโฆ โ TV โ 2007 โ 6.2/10 โ โฆ โ
โฐโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโฏ
Select title [1-2] (q to quit): 1
Fetching sources for Interstellarโฆ
โญโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโโฎ
โ # โ Title โ Quality โ Seeders โ Size โ
โโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโค
โ 1 โ Interstellar [1080p] [BLURAY] โ 1080p โ 4821 โ 2.2 GB โ
โ 2 โ Interstellar [720p] [WEB] โ 720p โ 2100 โ 1.1 GB โ
โ 3 โ Interstellar [4K] [REMUX] โ 4K โ 340 โ 55.0 GB โ
โฐโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโฏ
Select source [1-3] (q to quit): 1
โถ Launching mpv for Interstellar [1080p]โฆ
Config file: ~/.mov-cli/config.json
| Key | Default | Description |
|---|---|---|
tmdb_api_key |
"" |
TMDB API key (env: TMDB_API_KEY) |
preferred_player |
"mpv" |
"mpv" or "vlc" |
default_quality |
"1080p" |
Preferred quality hint |
player_args |
[] |
Extra flags passed to the player |
cache_enabled |
true |
Enable/disable search cache |
cache_ttl_hours |
24 |
Hours before cached results expire |
request_timeout |
10 |
HTTP timeout in seconds |
max_search_results |
10 |
Maximum TMDB results shown |
Environment variables override config file values:
TMDB_API_KEYMOVCLI_<KEY_UPPERCASE>(e.g.MOVCLI_PREFERRED_PLAYER=vlc)
mov_cli/
โโโ main.py โ Typer CLI entry point & command definitions
โโโ cli/
โ โโโ commands.py โ Interactive UI, table rendering, user prompts
โโโ services/
โ โโโ tmdb_service.py โ Async TMDB API client
โ โโโ torrent_service.pyโ Pluggable source providers (YTS, EZTV, โฆ)
โ โโโ player_service.py โ mpv / VLC launcher + torrent streamer detection
โโโ models/
โ โโโ media.py โ MediaResult, StreamSource, WatchHistoryEntry
โโโ utils/
โ โโโ cache.py โ SQLite cache & watch history
โ โโโ config.py โ Config file management
โโโ db/ โ SQLite database lives here at runtime
# mov_cli/services/torrent_service.py
class MyCustomProvider(SourceProvider):
name = "MyProvider"
async def fetch_sources(
self,
media: MediaResult,
season=None,
episode=None,
) -> list[StreamSource]:
# ... query your source ...
return [StreamSource(...)]
# Register it
aggregator.register(MyCustomProvider())# Install with dev extras
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Lint
ruff check mov_cli/mov-cli queries publicly available APIs and torrent indexes. It does not host, store, or distribute any copyrighted content. Users are responsible for complying with the laws of their jurisdiction.
MIT ยฉ mov-cli contributors