Files
2026-09-27 15:45:51 +08:00

1.9 KiB

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