# 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: ```bash 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: ```bash python -m pip install -e ./N_m3u8DL_py -e ./m3u8downloaderd ``` Start the service: ```bash 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: ```bash PYTHONPATH=N_m3u8DL_py/src:m3u8downloaderd/src python -m pytest m3u8downloaderd/tests ```