YoutubeDL-Material als YouTube Video Downloader

YoutubeDL-Material ist ein schönes und einfach zu bedienendes Webfrontend für die Kommandozeilentools youtube-dl, youtube-dlc und yt-dlp.

03.07.2022 - Anleitung aktualisiert, YoutubeDL-Material 4.3 (unterstützt jetzt auch yt-dlp!) :-]
29.01.2022 - youtube-dl ist elendig langsam! yt-dlp wird hier leider nicht unterstützt :(
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
  • MongoDB Datenbank
  • 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

Benötigte Pakete installieren.

$ apt install -y curl unzip

Node.js 16 installieren.

$ curl -sL https://deb.nodesource.com/setup_16.x | bash -
$ apt install -y nodejs

$ node -v && npm -v
v16.15.1
8.11.0

ffmpeg installieren. (ffmpeg static builds)

$ cd/tmp
$ wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
$ tar xf ffmpeg-git-amd64-static.tar.xz
$ cp ffmpeg-git-20220622-amd64-static/ffmpeg /usr/local/bin/
$ cp ffmpeg-git-20220622-amd64-static/ffprobe /usr/local/bin/

yt-dlp installieren. (youtube-dl ist elendig langsam)

$ curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
$ chmod a+rx /usr/local/bin/yt-dlp

$ yt-dlp --version
2022.06.29

MongoDB installieren. (empfohlen)

### MongoDB v5.0.9
$ curl -fsSL https://www.mongodb.org/static/pgp/server-5.0.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-5.gpg
$ echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | tee /etc/apt/sources.list.d/mongodb-org-5.0.list
$ apt update
$ apt install -y mongodb-org-server

### service starten und aktivieren
$ systemctl start mongod
$ systemctl enable mongod

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.

$ su youtube
youtube@ytdl:~$ cd ~
youtube@ytdl:~$ wget https://github.com/Tzahi12345/YoutubeDL-Material/releases/download/v4.3/youtubedl-material-v4.3.zip
youtube@ytdl:~$ unzip youtubedl-material-v4.3.zip

Config anpassen: ./youtubedl-material/appdata/default.json

{
 "YoutubeDLMaterial": {
   "Host": {
     "url": "http://IP-OR-DNS-NAME", # <-- IP oder FQDN setzen
     "port": "17442"
 },

 "Database": {
   "use_local_db": false, # <-- auf false setzen
   "mongodb_connection_string": "mongodb://127.0.0.1:27017/?compressors=zlib"
 },

 "Advanced": {
   "default_downloader": "yt-dlp", # <-- default ist yt-dlp
   "use_default_downloading_agent": true,

Abhängigkeiten für das Node.js Backend installieren.

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

YoutubeDL-Material sollte sich jetzt starten lassen.

youtube@ytdl:~$ cd /home/youtube/youtubedl-material
youtube@ytdl:~/youtubedl-material$ npm start
> backend@1.0.0 start
> pm2-runtime --raw pm2.config.js
2022-07-03T11:06:39: PM2 log: Launching in no daemon mode
2022-07-03T11:06:39: PM2 log: [Watch] Start watching YoutubeDL-Material
2022-07-03T11:06:39: PM2 log: App [YoutubeDL-Material:0] starting in -fork mode-
2022-07-03T11:06:39: PM2 log: App [YoutubeDL-Material:0] online
2022-07-03T11:06:41.769Z INFO: YoutubeDL-Material v4.3 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

Bei der 4.3er Version sind bisher keine Probleme aufgetreten und diese Anpassungen nicht notwendig.

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"

3 Gedanken zu „YoutubeDL-Material als YouTube Video Downloader“

  1. Bitte die Nightlies verwenden, es gibt demnächst wieder ein neues Release (4.2 ist ja schon etwas her und es ist wirklich SEHR viel in den Nightlies passiert seitdem!).

    Auf denen kann man dann allerdings auch gut bleiben. Release Channel ist halt gehäbiger.

    Antworten

Schreibe einen Kommentar zu Glassed Silver Antworten abbrechen