m3u8downloaderd
m3u8downloaderd is an in-memory local-network web interface for the adjacent
N_m3u8DL_py package. It requires Python 3.10+ and a system ffmpeg.
Docker
From the repository root, start the service and build its image when needed:
docker-compose up
Open http://127.0.0.1:8000. Downloaded files are written to the repository's
downloads/ directory. Use docker-compose down to stop the service.
Install both local packages into the same environment:
python -m pip install -e ./N_m3u8DL_py -e ./m3u8downloaderd
Start the service:
python -m m3u8downloaderd \
--host 0.0.0.0 \
--port 8000 \
--download-root /tmp \
--max-active-downloads 2 \
--max-active-ffmpeg 2
The service exposes no authentication. Use it only on a trusted network. The
folder chooser is restricted to --download-root and its descendants.
Tasks, progress, history, and settings exist only while the process is running;
restarting the service clears them. Downloaded media files remain on disk.
--max-active-downloads sets the initial video download concurrency.
--max-active-ffmpeg sets the initial ffmpeg post-processing concurrency; when
omitted, it defaults to the download concurrency. Both can be changed while the
service is running from the Settings tab, independently, with a supported range
of 1 to 32. Finished segment downloads enter a FIFO ffmpeg queue so slow media
processing does not occupy download slots. Runtime logs are available in the
Log tab and remain in memory only.
Each queued or active task can be paused from the task list. A pause waits for an active segment request to finish, retains downloaded segments, and stops active ffmpeg work. Resuming returns segment downloads to the download queue; ffmpeg work restarts its per-video post-processing from the beginning.
Run tests from the repository root:
PYTHONPATH=N_m3u8DL_py/src:m3u8downloaderd/src python -m pytest m3u8downloaderd/tests