DASH 下载需额外安装 yt-dlp 和 ffmpeg;封面图依赖终端图形协议,不支持时自动降级为文本;Homebrew 首次安装可能需执行 brew trust mesamirh/moviebox-tui。
MovieBox-Tui
mesamirhApache-2.0活跃维护在终端里搜索、下载并串流电影、剧集和直播电视,调用本地播放器(如 mpv)直接播放,适合喜欢命令行操作的用户。
Terminal interface to find, download, and stream movies, TV shows, and live TV using local media players.
brew tap mesamirh/moviebox-tui https://github.com/mesamirh/MovieBox-Tui
brew install moviebox-tui
moviebox-tuiREADME 未说明显存或 GPU 要求;需本地安装 mpv、VLC 或 IINA 等外部播放器,封面图需终端支持 Kitty、Sixel 或 iTerm2 协议。
终端里搜片、下载、播放的 TUI 工具,调用本地播放器看影视和直播
在终端里搜索、下载并串流电影、剧集和直播电视,调用本地播放器(如 mpv)直接播放,适合喜欢命令行操作的用户。
核心能力
- 多源聚合搜索电影、剧集、动漫和 Stremio 插件
- 支持 M3U 直播源导入、频道分类与 EPG
- 播放前可选 4K/1080p/720p 等清晰度
- 一键调用 mpv、VLC 或 IINA 播放并转发认证头
- 多段并发下载,支持 HTTP Range 断点续传
容易踩的坑
- v0.1.29最新正式版2026-11-05 · 2026-11-05 13:19 UTC
Fixed
- Providers & Stream Resolution:
- Restored MovieBox TV series streaming by generating and attaching the official
X-Client-BuildAPK certificate stamp with signed requests. - Preserved multi colon and namespaced media identifiers (such as Kitsu anime IDs) in Stremio addon stream aggregation.
- Replaced hard assertions on HTTP client builders with safe fallbacks in MovieBox, CircleFTP, and DhakaFlix clients.
- Restored MovieBox TV series streaming by generating and attaching the official
- Networking & DNS:
- Added runtime fallback to public DNS (Cloudflare, Google, Quad9) in
FallbackResolverwhen primary system DNS lookup fails or is blocked by an ISP.
- Added runtime fallback to public DNS (Cloudflare, Google, Quad9) in
- Media Playback & Sidecar Proxy:
- Handled poisoned watchdog activity locks gracefully in the stream proxy sidecar loop to prevent unwrap crashes.
- Standardized cross-platform temporary subtitle cleanup path joins to eliminate forward-slash path issues on Windows.
- Test Infrastructure:
- Synchronized environment dependent player tests with
ENV_MUTEXand probed Android intent openers dynamically to eliminate parallel test race conditions.
- Synchronized environment dependent player tests with
Changed
- Dependencies & Build Infrastructure:
- Upgraded
unicode-widthto 0.2.3,logto 0.4.35, andzipto 9.2.1 (#234).
- Upgraded
- Providers & Stream Resolution:
- v0.1.282026-10-29 · 2026-10-29 08:32 UTC
查看更新说明
Fixed
- Providers & Stream Resolution:
- Extracted signed CDN MP4 streams from MovieBox subject detector links (
/subject-api/get), restoring movie streaming and multi-resolution playback after upstream restricted play-info with deprecation clips. - Reported explicit error causes when MovieBox serves placeholder clips instead of generic "no streams available", and surfaced upstream HTTP failure statuses directly to the user.
- Extracted signed CDN MP4 streams from MovieBox subject detector links (
- Download Engine & Batch Queue:
- Recorded only flushed bytes to
.part.jsonsegment progress during downloads, preventing aborted or paused workers from leaving zero-byte gaps and file corruption on resume.
- Recorded only flushed bytes to
Changed
- Dependencies & Build Infrastructure:
- Upgraded
tokioto 1.54.1,scraperto 0.29.0,lruto 0.19.0,zipto 9.1.0,sha2to 0.11.1,opento 5.4.5,libcto 0.2.191, andserde_jsonto 1.0.154.
- Upgraded
- Providers & Stream Resolution:
- v0.1.272026-10-23 · 2026-10-23 08:34 UTC
查看更新说明
Fixed
- Media Playback & Subtitle Engine:
- Removed
--play-and-exitfrom VLC player invocations so the player stays active across adaptive and HLS chunk transitions. - Reset legacy Android player defaults in graphical X11 and Wayland sessions so native Linux players take precedence over external Android intent dialogs.
- Prioritized native Linux media player paths over foreign container fallbacks on Linux systems and preserved dynamic auto-player resolution for unconfigured sessions.
- Removed
- Providers & Stream Resolution:
- Recovered playable signed MP4 streams via
/resource-position/v2when MovieBox returns deprecation notice clips, querying exact seasons and episodes and reporting accurate file sizes. - Stripped the DASH
Refererheader on direct MP4 streams to prevent CDN HTTP 429 throttling. - Bumped the MovieBox stream cache schema to
v2_to discard stale cached deprecation notices. - Filtered out unhosted MovieBox
/hls/signed cookie targets in manifest resolution, which stops unplayable H.264 stream entries from failing with HTTP 404 during downloads or media playback.
- Recovered playable signed MP4 streams via
- Download Engine & Batch Queue:
- Fixed season batch downloads by arming
is_waiting_for_download_streamduring queue steps, eliminating immediate empty-list download calls that aborted multi-episode queues. - Reset the download resolution state lock on 4KHDHub resolver timeouts and errors so failed mirror resolutions do not block subsequent download attempts.
- Added sequential single-connection fallback to the internal HTTP downloader when multi-worker segmented range requests receive HTTP 403, 429, or network disconnects.
- Fixed season batch downloads by arming
Added
- In-App Updater Lifecycle:
- Tracked target executable path before staging updates and resolved deleted inode suffixes (
(deleted)) on Linux to restart the new binary automatically after popup self-update. - Scoped Snap package detection to
SNAP_NAMEmatchingmoviebox-tuito prevent false positive Snap environment detection when launched inside unrelated host sandboxes.
- Tracked target executable path before staging updates and resolved deleted inode suffixes (
Changed
- Dependencies & Build Infrastructure:
- Upgraded
zipto 9.0.5,rustlsto 0.23.46,quinn-prototo 0.11.19,rustls-webpkito 0.103.16, andwebpki-rootsto 1.0.10, resolving RustSec security advisories. - Upgraded
sha2to 0.11 with chunked streaming hash updates, preserving non-blocking checksum verification for release archives. - Upgraded
dirsto 7.0,futuresto 0.3.34, andzipto 8.6 across platform config paths, async tasks, and updater archive extraction.
- Upgraded
- Media Playback & Subtitle Engine:
- v0.1.262026-10-01 · 2026-10-01 05:42 UTC
查看更新说明
Fixed
- Media Playback & Subtitle Engine:
- Preserved native Windows
\path separators for--sub-filein VLC (C:\...) and passed--no-one-instanceon Windows and Linux so running VLC windows keep subtitle, header, and resume flags. - Stripped query strings and fragments before parsing subtitle extensions (
.srt,.vtt,.ass,.ssa,.sub) so signed CloudFront and OSS URLs keep their true format and DASH MIME type. - Pre-downloaded subtitles locally for
mpvwith remote URL fallback, parallelized subtitle downloads withStreamRelaysidecar startup, appended an 8-char URL hash to subtitle filenames, and sanitized commas in--script-opts. - Mounted
xdg-cache/moviebox-tui:ro,xdg-data/moviebox-tui, and/tmp:roinflatpak runwhile keeping custom user Flatpak flags so sandboxedmpvandVLCcan read subtitles and write watch progress. - Served Termux private-storage subtitles over the local
StreamRelay/sub/loopback endpoint when Android shared storage is unavailable, and restricted startup subtitle cleanup to internal cache and temp folders. - Parsed player
stderrand exit codes to report specific failure reasons (HTTP 403,HTTP 404,HTTP 410, timeout, connection refused), and added deterministic cross-platform contract integration tests (tests/player_contract.rs) asserting VLC Win32/UNC paths, IINA CLI option schemas, and header support across OSes. - Unified IINA command construction with standard
--mpv-*argument schemas across platforms, and restricted macOS IINA header disqualification to GUI app fallbacks missing command line tools. - Standardized player display labels to uppercase acronyms (MPV, IINA, VLC) across player selection popups, settings, and notifications.
- Preserved native Windows
- StreamRelay Proxy & Downloader:
- Forwarded
User-AgentandRefererwhile isolating stream cookies (Cookie: Edge-Cache-Cookie=...) to same-host requests acrossStreamRelay, subtitle pre-downloads, and media downloads. - Capped
.m4ssegment chunk fetching inStreamRelayto batches of 16 concurrentRangerequests, registered in-flight segment wait futures under lock, and requiredhttp://orhttps://schemes on/proxy?url=routes. - Increased MovieBox DASH
yt-dlp--concurrent-fragmentsfrom8to32(3.77 MiB/s -> 11.13 MiB/s,+195%live CDN throughput) and scaled the direct HTTP multi-segment engine to 4 to 16 workers withRange: bytes=0-0size discovery, 1 MiB write buffers, and a single end-of-filesync_dataflush. - Reported specific subtitle and DASH download errors (HTTP status, timeout, missing
yt-dlpvsffmpeg) and matched"at"after"of"inyt-dlpprogress lines.
- Forwarded
- Providers & Disk Cache:
- Removed the broad
"notice"substring filter in MovieBox stream adaptation while keeping/notice.mp4and known deprecation hashes, which restores streams for titles like Red Notice and Burn Notice. - Advanced the active MovieBox host index immediately on connection or HTTP retry errors, removed the duplicate
/subject-api/resourcepreflight round-trip inInitStreamPool, and removed the 120ms delay on cached episode switches. - Streamed 4KHDHub mirror resolution directly into preflight probes via
FuturesUnorderedwithout waiting for slow mirrors, cached fetched detail pages acrossdetailsandreleasesin 4KHDHub, Dramachi, and CircleFTP, and bounded CircleFTPHEADsize probes to 1.2 seconds. - Required a leading
'S'prefix in 4KHDHub season count parsing so release years after"Score"do not parse as season counts, and cached static HTML selectors in 4KHDHub parsers. - Matched Dramachi episode numbers across Unicode boundaries and quality suffixes, parallelized Stremio addon movie/series catalog searches and M3U playlist loads, and inserted
/manifest.jsonbefore query parameters in addon URLs. - Evicted cached poster images only when file age exceeds the 30-day TTL so valid cache files survive minor cloc
- Removed the broad
- Media Playback & Subtitle Engine:
- v0.1.252026-09-27 · 2026-09-27 15:07 UTC
查看更新说明
Fixed
- Search Navigation & Pagination Engine:
- Gated background search pagination in
src/tui/app/navigation.rsso arrow navigation on result sets smaller than the visible viewport never triggers background page fetches. - Added
search_exhaustedtracking insrc/tui/state.rsandsrc/tui/app/requests.rs, stopping pagination crawls when provider search returns fewer than 15 items or zero query-matching results. - Preserved stable card slot positions during search pagination in
src/tui/app/requests.rsby appending subsequent page items to the list rather than re-sorting the entire array out from under the cursor. - Removed redundant "Provider: {name}" status message override from the search bar on provider switch in
src/tui/app/navigation.rs, preserving the clean search placeholder while the active provider pill displays on the right.
- Gated background search pagination in
- Media Playback & Buffering Engine:
- Prioritized native desktop media players (
mpv,VLC) over Android intent openers insrc/player.rswhen an active X11/Wayland display server ($DISPLAY,$WAYLAND_DISPLAY) is detected, preventing Ubuntu Xfce (udroid/PRoot) and Termux:X11 desktop sessions from dispatching playback to external Android app choosers. - Routed DASH
.mpdstreams through the localStreamRelayproxy (src/proxy.rs,src/tui/app/playback.rs) across all media players (mpv,IINA,VLC,AndroidIntent), caching rewritten.mpdmanifests in RAM, warm-prefetching initialization and opening segments on sidecar startup, fetching.m4ssegments via concurrent95 KBHTTPRangesub-requests (0.286sper segment vs3.120s), and prefetching both the next 3 video segments (N+1..N+3) and synchronized audio segments (chunk-stream3-N..N+1). - Tuned
mpvandIINAplayback flags (--hwdec=auto-safe,--stream-buffer-size=4M,--cache-secs=120,--cache-pause-wait=3,--cache-pause-initial=no, and--ytdl=noon non-DASH direct streams) insrc/player.rs, reducing 1080p cold-seek latency at01:00:00from11.96sto3.87sand boosting read-ahead buffer fill rate from1 MB(9.3s) to7 MB(53s). - Replaced aggressive VLC buffering flags (
--network-caching=10000,--adaptive-logic=nearoptimal) with--network-caching=3000,--file-caching=3000,--http-reconnect, and--adaptive-logic=predictiveinsrc/player.rsto stop demuxer stream restarts and reconnect cleanly on dropped HTTP streams. - Enforced
max_heightresolution limits in the loopback stream proxy manifest rewriter (src/proxy.rs,src/main.rs,src/tui/app/playback.rs), pruning representations exceeding the chosen ceiling so Android players and VLC respect 480p and 720p selections. - Parsed signed expiration timestamps (
:t=) from MovieBoxEdge-Cache-Cookieheaders insrc/cache.rsalongside CloudFront policies, automatically invalidating stale stream cache entries within 60 seconds of expiration to prevent HTTP 403 playback crashes. - Persisted selected stream filenames (
stream_filename) in watch history (src/history.rs,src/player/tracker.rs,src/tui/app/playback.rs) and auto-focused matching stream rows on load (src/tui/app/requests.rs,src/tui/app/system.rs), restoring the user's previously chosen quality mirror when resuming multi-stream releases. - Enabled TCP nodelay (
stream.set_nodelay(true)) and per-chunk immediate flushes on the localStreamRelayproxy insrc/proxy.rs, eliminating 100–300ms time-to-first-frame buffering delays on loopback sockets. - Implemented negative caching (
Option<Option<String>>) for media player detection (MPV_CACHED,VLC_CACHED,IINA_CACHED) insrc/player.rs, eliminating redundant filesystem scans and registry lookups when players are absent. - Throttled Lua tracker periodic disk sync in
src/player/tracker.rswhen playback is paused or positional change is sub-second, cutting SSD writes by up to 90% during playback pauses. - Removed duplicate redundant `history
- Prioritized native desktop media players (
- Search Navigation & Pagination Engine:
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
MovieBox-TUI
Terminal interface to find, download, and stream movies, TV shows, and live TV using local media players.
English • বাংলা • हिन्दी • Español
Features
- Streaming: Movies, TV series, anime, Asian dramas, and community Stremio addons across multiple native providers.
- Live TV: M3U playlist import with channel categories, EPG support, and search.
- Resolution Picker: Direct stream quality selection (
4K,1080p,720p,480p,Auto) before playback. - Hardware Players: Direct launch in
mpv,VLC, orIINAwith custom auth header and cookie forwarding. - Batch Downloader: Multi-segment concurrent downloader with HTTP range pause and resume for episodes and full seasons.
- Subtitle Picker: Multi-language subtitle tracks extracted and selectable via an interactive picker before playback or download.
- Terminal UI: Vim navigation, mouse interaction, slash command palette (
/help,/settings), and 9 built-in themes. - Cover Art: Native Kitty, Sixel, and iTerm2 poster rendering with automatic text fallback.
- Resume & Library: Home deck with continue-watching timestamps, watch history, and favorites stored strictly on local disk. Zero telemetry.
Prerequisites
- Media Player:
mpv,VLC, orIINA(macOS) / any external video player (Android). - Posters: Terminal with Sixel, Kitty, or iTerm2 support (Ghostty, Kitty, WezTerm, iTerm2, foot, Windows Terminal v1.22+).
- DASH Downloads:
yt-dlpandffmpeg(required only for MovieBox DASH downloads).
Installation
macOS & Linux
If you have Homebrew on macOS:
brew tap mesamirh/moviebox-tui https://github.com/mesamirh/MovieBox-Tui
brew install moviebox-tui
Note: If Homebrew prompts for tap verification on initial install, run
brew trust mesamirh/moviebox-tui.
Direct install via Terminal (macOS & Linux, no package manager needed):
curl -fsSL https://raw.githubusercontent.com/mesamirh/MovieBox-Tui/main/install.sh | bash
Windows
If you have Scoop (recommended):
scoop bucket add moviebox https://github.com/mesamirh/MovieBox-Tui
scoop install moviebox-tui
Direct install via PowerShell (no package manager needed):
irm https://raw.githubusercontent.com/mesamirh/MovieBox-Tui/main/install.ps1 | iex
SmartScreen prompt: If Windows displays "Windows protected your PC", click More info → Run anyway.
Android (Termux)
pkg update && pkg install -y curl tar termux-tools termux-am
curl -fsSL https://raw.githubusercontent.com/mesamirh/MovieBox-Tui/main/install.sh | bash
termux-setup-storage
cargo install moviebox-tui --locked
From source:
git clone https://github.com/mesamirh/MovieBox-Tui.git
cd MovieBox-Tui
cargo build --release --locked
sha256sum -c SHA256SUMS --ignore-missing
gh attestation verify <archive-file> -R mesamirh/MovieBox-Tui
Re-run install command (curl ... | bash or irm ... | iex) and select 2) Uninstall.
Or via package manager:
brew uninstall moviebox-tui # Homebrew
scoop uninstall moviebox-tui # Scoop
cargo uninstall moviebox-tui # Cargo
Quick Start
moviebox-tui
- Type to search, press
Enterto play. - Press
?for shortcuts, or type/settingsfor preferences.
Documentation
Full documentation at mesamirh.github.io/MovieBox-Tui or docs/:
| Guide | Description |
|---|---|
| Keyboard & Controls | Keybindings, vim navigation, and shortcuts |
| Configuration | Settings, themes, and environment variables |
| Content Providers | Native scrapers (MovieBox, 4KHDHub, Dramachi, BDIX) |
| Stremio Addons | Community addon configuration and streaming |
| Hardware Players | Player detection, launch options, and flags |
| Live TV & IPTV | M3U playlist import and channel streaming |
| Batch Downloads | HTTP range engine, pause, and resume |
Contributing
Review CONTRIBUTING.md before submitting pull requests. Report bugs via GitHub Issues.
| Asset | Address |
|---|---|
| USDT (TRC20) | TL4yW73qmbKZpBWwbEFgjBpwVkPDFTkJgV |
| Bitcoin (BTC) | 3MEAtqtRWrQBhnaMi3Zuf5nt2efNUS2LUQ |
| Ethereum (EVM) | 0x7ea20d5fa29d87f33195f5a3b211ff94038d794c |
| Solana (SOL) | 6ctm5WFv73MNywoCKAz3xK72yizSspHa72rFNygooU6 |
Privacy
Zero telemetry, analytics, or user tracking. History, favorites, and config remain local.
License
Dual-licensed under MIT or Apache-2.0.
Disclaimer
MovieBox-TUI does not host or store media. It plays publicly available streams. Users must comply with local laws.