vfauth / youtube-dl-nas

youtube download queue websocket server with login for private NAS.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GitHub license Docker Pulls Shield

youtube-dl-nas

simple youtube download micro web queue server. To prevent a queue attack when using NAS as a server, a making account was created when creating a docker container, and a new UI was added. This Queue server based on python3 and debian Linux. https://hub.docker.com/r/modenaf360/youtube-dl-nas/

screenshot1

Update Info

  • 2018.09.28 : [Add functional option] Resolution selectable, Downloaded result html table representation
  • 2018.10.01 : [Minor Patch] Patching worker thread dead symptom when moving the browser during download, add resolution 1440p, 2160p(4k)
  • 2018.10.06 : [Patch] Prevent thread death due to websocket exception in walker thread after download, add REST API
  • 2018.11.08 : [Patch] binary excution error update, : 'youtube_dl.utils.RegexNotFoundError: Unable to extract Initial JS player signature function name'. some url like(https://youtu.be/), Handling Variables on Application Ports for Using the docker Network Host Mode,Specify release version in html page
  • 2019.02.13 : [Patch] binary excution error update, : 'caused by ExtractorError("Could not find JS function 'encodeURIComponent'; please report this issue on https://yt-dl.org/bug ..'. Binary Excution file update docker rebuild,Specify release version in html page
  • 2019.04.25 : [Patch] Failed to fetch jessie backports repository patch during build Dockerfile, Add Scheduler update "pip install -U youtube-dl" once a day.You no longer need to update pip youtube-dl when inexecutable in the container.
  • 2020.02.10 : [Patch] Modifying so this will work behind HTTPS as well.

You can check the status of download queue processing in real time using websocket from the message below the text box.

screenshot

How to use this image

To run docker, excute this command in a ternimal:

The docker volume parameter -v is used by the queue operation to process the downloaded mount path to the host server

  • downloaded docker volume path : '/downfolder'
  • MY_ID, MY_PW : Required variables when you login validation, The start character '!' '$' '&' is does not apply.
  • TZ : optional variable.

docker options are as follows,

Variables Description
-v host:guest /downfolder (do not change guest location. expose volume mount to host server)
-d background run
-p host:guest expose port conainer core-os port to your os (port fowarding)
-e MY_ID using it login id, linux environment variables, do not use start character '!' '$' '&'
-e MY_PW using it login password, linux environment variables , do not use start character '!' '$' '&'
-e TZ take it to user country, linux environment variables
-e APP_PORT optinal variable. default is 8080
To run docker, excute this command in a ternimal:
docker run -d --name youtube-dl -e MY_ID=modenaf360 -e MY_PW=1234  -v /volume2/youtube-dl:/downfolder -p 8080:8080 modenaf360/youtube-dl-nas
If want set TimeZone, example using in South-Korea web content
docker run -d --name youtube-dl -e TZ=Asia/Seoul -e MY_ID=modenaf360 -e MY_PW=1234 -v /volume2/youtube-dl:/downfolder -p 8080:8080 modenaf360/youtube-dl-nas
example, how to using docker host network and changing the application port :
# use --net=host -e APP_PORT=custom_port
docker run -d --name youtube-dl --net=host -e APP_PORT=9999 -e MY_ID=modenaf360 -e MY_PW=1234  -v /volume2/youtube-dl:/downfolder modenaf360/youtube-dl-nas

Request restful API & Response

curl -X POST http://localhost:8080/youtube-dl/rest \
  -d '{
	"url":"https://www.youtube.com/watch?v=s9mO5q6GiAc",
	"resolution":"best", 
	"id":"iamgroot",
	"pw":"1234"
}'
{
    "success": true,
    "msg": "download has started",
    "Remaining downloading count": "7"
}

If you want to get into docker container os, excute this command [1] :

docker exec -i -t youtube-dl /bin/bash
Example, when using synology docker provisioning platform
  • docker volume mount setting

screenshot1

  • ID, Password setting to docker environment screenshot1

Reference

[1]. https://docs.docker.com/engine/reference/commandline/cli/#environment-variables

About

youtube download queue websocket server with login for private NAS.

License:MIT License


Languages

Language:Python 28.7%Language:Smarty 26.0%Language:JavaScript 24.6%Language:CSS 14.2%Language:Dockerfile 4.7%Language:Shell 1.8%