YoutubeDL-Material als YouTube Video Downloader

YoutubeDL-Material ist ein schönes und einfach zu bedienendes Webfrontend für das Kommandozeilentool youtube-dl.

14.09.2021 - Anleitung aktualisiert (installiert unter Debian 11 Bullseye)
  • 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 11.

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.22.6

$ npm -v
6.14.15

Die installierte und verlinkte Python Version überprüfen. (/usr/bin/env python)

$ which python
$ which python2
$ which python3
/usr/bin/python3

Da nur Python 3 installiert ist, muss der link zu python aktualisiert werden.

$ apt install python-is-python3

$ which python
/usr/bin/python3

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
2021.06.06

Benutzer anlegen. (sollte später nicht als root laufen)

$ adduser youtube

YoutubeDL-Material installieren. (immer die aktuellste Version nehmen) Als Benutzer youtube ausführen, kommt alles ins Homeverzeichnis.

youtube@host:~$ cd /home/youtube
youtube@host:~$ wget https://github.com/Tzahi12345/YoutubeDL-Material/releases/download/v4.2/youtubedl-material-v4.2.zip
youtube@host:~$ unzip youtubedl-material-v4.2.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.

youtube@ytdl:~$ cd youtubedl-material/appdata
youtube@ytdl:~$ npm install
youtube@ytdl:~$ npm audit fix

YoutubeDL sollte sich jetzt starten lassen.

youtube@ytdl:~$ npm start
> backend@1.0.0 start /home/youtube/youtubedl-material
> nodemon -q app.js
2021-09-14T18:13:44.125Z INFO: youtube-dl successfully updated!
2020-09-14T19:12:44.129Z INFO: YoutubeDL-Material v4.2 started on PORT 17442

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 ist über: http://ip-adresse:17442 erreichbar.

Anpassungen

Fehlermeldung:
/usr/bin/env: python: No such file or directory

$ apt install python-is-python3

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"

Schreibe einen Kommentar