Skip to content

youtube download queue websocket server with login for private NAS.

License

Notifications You must be signed in to change notification settings

rleconte/youtube-dl-nas

 
 

Repository files navigation

GitHub license Docker Pulls Shield Docker Stars 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

  • 2023.02.19 : [Patch] Changed the executable from youtube-dl to yt-dlp for fixed error about 'Unable to extract uploader id' and download speed..
  • 2022.09.29 : [Patch] Check for updates essential packages on first startup container.
  • 2022.09.28 : [Patch] Clears URL input when submitting the form.
  • 2021.12.09 : [Patch] Fix proxy setting bug
  • 2021.05.03 : [Patch] Fix random mkv or mp4 format when specifying resolution
  • 2020.11.13 : [Patch] Added docker optinal variable to support youtube-dl proxy
  • 2020.08.12 : [Patch] Added audio-mp3 option
  • 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.04.07 : [Patch] Audio only option for web-ui and REST call. Change username field type for compatiblity
  • 2020.02.10 : [Patch] Modifying so this will work behind HTTPS as well.
  • 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
  • 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
  • 2018.10.06 : [Patch] Prevent thread death due to websocket exception in walker thread after download, add REST API
  • 2018.10.01 : [Minor Patch] Patching worker thread dead symptom when moving the browser during download, add resolution 1440p, 2160p(4k)
  • 2018.09.28 : [Add functional option] Resolution selectable, Downloaded result html table representation**

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

Run with docker-compose

Copy the environment template template.env to .env and edit this file with the required settings. Then run docker-compose up -d

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'
  • USERNAME, PASSWORD : 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 USERNAME using it login id, linux environment variables, do not use start character '!' '$' '&'
-e PASSWORD 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
-e PROXY optinal variable. set youtube-dl proxy, default is ""
To run docker, excute this command in a ternimal:
docker run -d --name youtube-dl -e USERNAME=modenaf360 -e PASSWORD=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 USERNAME=modenaf360 -e PASSWORD=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 USERNAME=modenaf360 -e PASSWORD=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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 30.0%
  • Smarty 26.1%
  • JavaScript 24.4%
  • CSS 14.0%
  • Dockerfile 3.4%
  • Shell 2.1%