Very spartan Web and REST interface for downloading youtube videos onto a server. bottle
+ youtube-dl
.
This example uses the docker run command to create the container to run the app. Here we also use host networking for simplicity. Also note the -v
argument. This directory will be used to output the resulting videos
docker run -d --net="host" --name youtube-dl -v /home/core/youtube-dl:/youtube-dl kmb32123/youtube-dl-server
This is an example service definition that could be put in docker-compose.yml
. This service uses a VPN client container for its networking.
youtube-dl:
image: "kmb32123/youtube-dl-server"
network_mode: "service:vpn"
volumes:
- /home/core/youtube-dl:/youtube-dl
restart: always
You must create your .env file copying .env.example file and make sure you use correct data in the following variables (data used when you created previous database):
CLA_GENERATOR_USER='dummy'
CLA_GENERATOR_PASS='gaseosa1234'
DOWNLOAD_PATH = '/youtube-dl/'
If you have python ^3.3.0 installed in your PATH you can simply run like this, providing optional environment variable overrides inline.
sudo YDL_SERVER_PORT=8123 python3 -u ./youtube-dl-server.py
Downloads can be triggered by supplying the {{url}}
of the requested video through the Web UI or through the REST interface via curl, etc.
Just navigate to http://{{host}}:8080/youtube-dl
and enter the requested {{url}}
.
curl -X POST --data-urlencode "url={{url}}?format=bestvideo&filename=video1&base_url=http://my.strapi.instance&collectionId=123" http://{{host}}:8080/youtube-dl/q
fetch(`http://${host}:8080/youtube-dl/q`, {
method: "POST",
body: new URLSearchParams({
url: url,
format: "bestvideo",
filename:"video1",
base_url:"http://my.strapi.instance",
collectionId: 123
}),
});
Add the following bookmarklet to your bookmark bar so you can conviently send the current page url to your youtube-dl-server instance.
javascript:!function(){fetch("http://${host}:8080/youtube-dl/q",{body:new URLSearchParams({url:window.location.href,format:"bestvideo", filename:"video1", base_url:"http://my.strapi.instance", collectionId: 123}),method:"POST"})}();
The server uses bottle
for the web framework and youtube-dl
to handle the downloading. The integration with youtube-dl makes use of their python api.
This docker image is based on python:alpine
and consequently alpine:3.8
.