Simple Web UI to queue downloads using the great YoutubeDL.
cp .env.template .env
Modify the file to fit your needs.
Create formats to download just an audio only file or for selecting specific video resolutions/formats.
python manage.py recreate-db
python manage.py format add
Read more about valid format configurations for youtube-dl here and valid output templates here.
In one terminal start the webserver process
python manange.py run
In a second terminal start the download task process
python manage.py celery-worker
Create a network drive to store downloaded files. On each worker mount the
storage in the local ./downloads
directory so that all workers can save to it.
curl -XPOST -d "url=$url" http://ip:5000/api/add
curl -GET http://ip:5000/api/downloads
curl -XDELETE http://ip:5000/api/remove/<id>
curl -XPOST http://ip:5000/api/restart/<id>
- Extended API
- Download Format Selection
- Download hours (I have slow internet connection)
- Download directory selection
- Playlist or single video download
- Format management and ordering
- Filter downloads by status/path
- Proper Docker deployment
- Alert on frontend when
youtube-dl
fails (likely needs updating) - Download file from browser
- Watch output directories for removed files then remove item from store
I am not sure if these ideas should be built into this project or if another project should be started that uses this project simply as an API for downloading. Perhaps an RSS feed already exists that can be read from or use Youtube API... but that seems overkill.
- Watch a public youtube playlist for changes then download
- Watch youtube channel for updates and then download
- Extend playlist download selection see here