Unofficial wrapper for moviebox.ph - search, discover and download movies, tv-series and their subtitles.
Project description
moviebox-api
Unofficial wrapper for moviebox.ph - search, discover and download movies, tv-series and their subtitles.
Features
- Search & download movies, tv-series and their subtitles.
- Native pydantic modelling of responses
- Fully asynchronous with synchronous support for major operations
Installation
Run the following command in your terminal:
$ pip install "moviebox-api[cli]"
# For developers
$ pip install moviebox-api
Termux
pip install moviebox-api --no-deps
pip install 'pydantic==2.9.2'
pip install rich click bs4 httpx throttlebuster
Usage
Developers
from moviebox_api import MovieAuto
async def main():
auto = MovieAuto()
movie_file, subtitle_file = await auto.run("Avatar")
print(movie_file.saved_to, subtitle_file.saved_to, sep="\n")
# Output
# /.../Avatar - 1080P.mp4
# /.../Avatar - English.srt
if __name__ == "__main__":
import asyncio
asyncio.run(main())
Perform download with progress hook
from moviebox_api import DownloadTracker, MovieAuto
async def callback_function(progress: DownloadTracker):
percent = (progress.downloaded_size / progress.expected_size) * 100
print(f">>[{percent:.2f}%] Downloading {progress.saved_to.name}", end="\r")
if __name__ == "__main__":
import asyncio
auto = MovieAuto(caption_language=None)
asyncio.run(auto.run(query="Avatar", progress_hook=callback_function))
More Control
Prompt for item confirmation prior to download
Movie
# $ pip install 'moviebox-api[cli]'
from moviebox_api.cli import Downloader
async def main():
downloader = Downloader()
movie_file, subtitle_files = await downloader.download_movie(
"avatar",
)
print(movie_file, subtitle_files, sep="\n")
if __name__ == "__main__":
import asyncio
asyncio.run(main())
TV-Series
# $ pip install 'moviebox-api[cli]'
from moviebox_api.cli import Downloader
async def main():
downloader = Downloader()
episodes_content_map = await downloader.download_tv_series(
"Merlin",
season=1,
episode=1,
limit=2,
# limit=13 # This will download entire 13 episodes of season 1
)
print(episodes_content_map)
if __name__ == "__main__":
import asyncio
asyncio.run(main())
For more details youn can go through the full documentation
Commandline
# $ python -m moviebox_api --help
Usage: moviebox [OPTIONS] COMMAND [ARGS]...
Search and download movies/tv-series and their subtitles. envvar-prefix :
MOVIEBOX
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
download-movie Search and download movie.
download-series Search and download tv series.
homepage-content Show contents displayed at landing page
item-details Show details for a particular movie/tv-series
mirror-hosts Discover Moviebox mirror hosts [env: MOVIEBOX_API_HOST]
popular-search Movies/tv-series many people are searching now
Download Movie
$ python -m moviebox_api download-movie <Movie title>
# e.g python -m moviebox_api download-movie Avatar
# python -m moviebox_api download-movie --help
Usage: moviebox download-movie [OPTIONS] TITLE
Search and download movie.
Options:
-y, --year INTEGER Year filter for the movie to proceed with
[default: 0]
-q, --quality [worst|best|360p|480p|720p|1080p]
Media quality to be downloaded [default:
BEST]
-d, --dir DIRECTORY Directory for saving the movie to [default:
/home/smartwa/git/smartwa/moviebox-api]
-D, --caption-dir DIRECTORY Directory for saving the caption file to
[default:
/home/smartwa/git/smartwa/moviebox-api]
-m, --mode [start|resume|auto] Start the download, resume or set
automatically [default: auto]
-x, --language TEXT Caption language filter [default: English]
-M, --movie-filename-tmpl TEXT Template for generating movie filename
[default: %(title)s (%(release_year)d) -
%(resolution)dP.%(ext)s]
-C, --caption-filename-tmpl TEXT
Template for generating caption filename
[default: %(title)s (%(release_year)d) -
%(lanName)s.%(ext)s]
-t, --tasks INTEGER RANGE Number of tasks to carry out the download
[default: 2; 1<=x<=1000]
-P, --part-dir DIRECTORY Directory for temporarily saving the
downloaded file-parts to [default:
/home/smartwa/git/smartwa/moviebox-api]
-E, --part-extension TEXT Filename extension for download parts
[default: .part]
-N, --chunk-size INTEGER Streaming download chunk size in kilobytes
[default: 256]
-B, --merge-buffer-size INTEGER RANGE
Buffer size for merging the separated files
in kilobytes [default : CHUNK_SIZE]
[1<=x<=102400]
-c, --colour TEXT Progress bar display colour [default: cyan]
-A, --ascii Use unicode (smooth blocks) to fill the
progress-bar meter
-z, --disable-progress-bar Do not show download progress-bar
--leave / --no-leave Keep all leaves of the progress-bar
[default: no-leave]
--caption / --no-caption Download caption file [default: caption]
-O, --caption-only Download caption file only and ignore movie
-S, --simple Show download percentage and bar only in
progressbar
-T, --test Just test if download is possible but do not
actually download
-V, --verbose Show more detailed interactive texts
-Q, --quiet Disable showing interactive texts on the
progress (logs)
-Y, --yes Do not prompt for movie confirmation
-h, --help Show this message and exit.
Download Series
$ python -m moviebox_api download-series <Series title> -s <season number> -e <episode number>
# e.g python -m moviebox_api download-series Merlin -s 1 -e 1
# python -m moviebox_api download-series --help
Usage: moviebox download-series [OPTIONS] TITLE
Search and download tv series.
Options:
-y, --year INTEGER Year filter for the series to proceed with :
0 [default: 0]
-s, --season INTEGER RANGE TV Series season filter [1<=x<=1000;
required]
-e, --episode INTEGER RANGE Episode offset of the tv-series season
[1<=x<=1000; required]
-l, --limit INTEGER RANGE Total number of episodes to download in the
season [default: 1; 1<=x<=1000]
-q, --quality [worst|best|360p|480p|720p|1080p]
Media quality to be downloaded [default:
BEST]
-x, --language TEXT Caption language filter [default: English]
-d, --dir DIRECTORY Directory for saving the series file to
[default:
/home/smartwa/git/smartwa/moviebox-api]
-D, --caption-dir DIRECTORY Directory for saving the caption file to
[default:
/home/smartwa/git/smartwa/moviebox-api]
-m, --mode [start|resume|auto] Start new download, resume or set
automatically [default: auto]
-L, --episode-filename-tmpl TEXT
Template for generating series episode
filename [default: %(title)s
S%(season)dE%(episode)d -
%(resolution)dP.%(ext)s]
-C, --caption-filename-tmpl TEXT
Template for generating caption filename
[default: %(title)s S%(season)dE%(episode)d
- %(lanName)s.%(ext)s]
-t, --tasks INTEGER RANGE Number of tasks to carry out the download
[default: 2; 1<=x<=1000]
-P, --part-dir DIRECTORY Directory for temporarily saving the
downloaded file-parts to [default:
/home/smartwa/git/smartwa/moviebox-api]
-E, --part-extension TEXT Filename extension for download parts
[default: .part]
-N, --chunk-size INTEGER Streaming download chunk size in kilobytes
[default: 256]
-B, --merge-buffer-size INTEGER RANGE
Buffer size for merging the separated files
in kilobytes [default : CHUNK_SIZE]
[1<=x<=102400]
-c, --colour TEXT Progress bar display color [default: cyan]
-A, --ascii Use unicode (smooth blocks) to fill the
progress-bar meter
-z, --disable-progress-bar Do not show download progress-bar
--leave / --no-leave Keep all leaves of the progressbar
[default: no-leave]
--caption / --no-caption Download caption file [default: caption]
-O, --caption-only Download caption file only and ignore movie
-S, --simple Show download percentage and bar only in
progressbar
-T, --test Just test if download is possible but do not
actually download
-V, --verbose Show more detailed interactive texts
-Q, --quiet Disable showing interactive texts on the
progress (logs)
-Y, --yes Do not prompt for tv-series confirmation
-h, --help Show this message and exit.
Further info
[!TIP] Shorthand for
$ python -m moviebox_apiis simply$ moviebox
Moviebox.ph has several other mirror hosts, in order to set specific one to be used by the script simply expose it as environment variable using name MOVIEBOX_API_HOST. For instance, in Linux systems one might need to run $ export MOVIEBOX_API_HOST="h5.aoneroom.com"
Disclaimer
"All videos and pictures on MovieBox are from the Internet, and their copyrights belong to the original creators. We only provide webpage services and do not store, record, or upload any content." - moviebox.ph as on Sunday 13th, July 2025
Long live Moviebox spirit.
Made with ❤️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file moviebox_api-0.2.4.tar.gz.
File metadata
- Download URL: moviebox_api-0.2.4.tar.gz
- Upload date:
- Size: 154.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4be2a949ee92d5fdf470b4335775355661aa5a4b85da6fd442e15afd500a06a0
|
|
| MD5 |
ec99e3df93442036d1984a0a523cadee
|
|
| BLAKE2b-256 |
dc9faa97242ed505d99c66073fb2ccc101bf514cb19e778308adb3b13c100328
|
File details
Details for the file moviebox_api-0.2.4-py3-none-any.whl.
File metadata
- Download URL: moviebox_api-0.2.4-py3-none-any.whl
- Upload date:
- Size: 48.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef99a0abd192f4a320bc4e3f5b1fc04b03db80480d17917f07db2d667b5285a8
|
|
| MD5 |
85746f013e83637287a91f1ecdbd78a7
|
|
| BLAKE2b-256 |
dcac69b3a3fe5f03fbd2a940821a2c8af853cb1ed188183040ca9dc588797a20
|