YoutubeDL-Material ist ein schönes und einfach zu bedienendes Webfrontend für das Kommandozeilentool youtube-dl.
- einzelne Videos von YouTube herunterladen
- Playlists von YouTube herunterladen
- automatischer download von Kanälen
- heruntergeladene Videos im Browser wiedergeben
- heruntergeladene Videos auf den PC speichern
- komplette Steuerung und Konfiguration über ein Webinterface
- Docker Unterstützung
- …
Mit Docker ist die Anwendung natürlich schnell und einfach aufgesetzt. Ich installiere es aber selber in einem LXC Container mit Debian 10.
Installation
Abhängigkeiten installieren.
$ apt install -y curl ffmpeg
Node.js 12 installieren.
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - $ apt install -y nodejs $ nodejs -v v12.20.0 $ npm -v 6.14.8
Aktuellen youtube-dl installieren.
$ curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl $ chmod a+rx /usr/local/bin/youtube-dl $ youtube-dl --version 2020.12.31
Benutzer anlegen. (sollte später nicht als root laufen)
$ adduser youtube
YoutubeDL-Material installieren. (immer die aktuellste Version nehmen)
# kommt ins Homeverzeichnis des users youtube $ cd /home/youtube $ wget https://github.com/Tzahi12345/YoutubeDL-Material/releases/download/v4.2/youtubedl-material.zip $ unzip youtubedl-material.zip
Config anpassen: ./youtubedl-material/appdata/default.json
{ "YoutubeDLMaterial": { "Host": { "url": "http://IP-OR-DNS-NAME", "port": "17442" "Downloader": { "path-audio": "audio/", "path-video": "video/", "default_file_output": "", "use_youtubedl_archive": false, "custom_args": "-f bestvideo[ext=mp4]+bestaudio[ext=m4a]/best" # optional (siehe Videoformat)
Abhängigkeiten für das Node.js Backend installieren.
$ cd youtubedl-material/appdata $ npm install
YoutubeDL sollte sich jetzt starten lassen.
$ npm start > backend@1.0.0 start /home/youtube/youtubedl-material > nodemon -q app.js 2020-12-27T19:27:56.521Z INFO: youtube-dl successfully updated! 2020-12-27T19:27:56.526Z INFO: YoutubeDL-Material v4.2 started on PORT 17442
Berechtigungen anpassen.
$ chown -R youtube:youtube /home/youtube/youtubedl-material
Startscript für den systemd erstellen: /etc/systemd/system/youtubedl-material.service
[Unit] Description = YoutubeDL-Material After = network.target [Service] Environment = NODE_PORT=17442 Type = simple Restart = on-failure WorkingDirectory = /home/youtube/youtubedl-material ExecStart = npm start StandardOutput = syslog StandardError = syslog SyslogIdentifier = YoutubeDL-Material User = youtube Group = youtube [Install] WantedBy = multi-user.target
Den Service aktivieren und starten.
$ systemctl enable youtubedl-material.service $ systemctl start youtubedl-material.service
Das Webfrontend erreicht man über: http://ip-adresse:17442
Anpassungen
Fehlermeldung:
WARNING: Assuming –restrict-filenames since file system encoding cannot encode all characters. Set the LC_ALL environment variable to fix this.
$ dpkg-reconfigure locales
Ich aktiviere und setze hier en_GB.UTF-8 als default.
Reboot und die Fehlermeldung ist verschwunden.
Videoformat:
Einige Videos werden im MKV-Format heruntergeladen und sind dadurch im Webinterface nicht sichtbar.
Mit diesem Eintrag in der default.json, wird das Format fest auf MP4 gesetzt. Damit gab es bisher keine Probleme mehr.
"custom_args": "-f bestvideo[ext=mp4]+bestaudio[ext=m4a]/best"