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.

27.05.2023 - Anleitung aktualisiert, YoutubeDL-Material 4.3.2
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.20.0
8.19.4

PM2 installieren

$ npm install -g pm2

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-20230313-amd64-static/ffmpeg /usr/local/bin/
$ cp ffmpeg-git-20230313-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
2023.03.04

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) Kommt alles ins youtube Homeverzeichnis, als user youtube ausführen.

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

2023-05-27T12:21:45: PM2 log: Launching in no daemon mode
2023-05-27T12:21:45: PM2 log: [Watch] Start watching YoutubeDL-Material
2023-05-27T12:21:45: PM2 log: App [YoutubeDL-Material:0] starting in -fork mode-
2023-05-27T12:21:45: PM2 log: App [YoutubeDL-Material:0] online
(node:1449) DeprecationWarning: uuidv4() is deprecated. Use v4() from the uuid module instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
2023-05-27T10:21:47.705Z INFO: Beginning migration: 4.1->4.2+
2023-05-27T10:21:48.256Z ERROR: Invalid Operation, no operations specified
2023-05-27T10:21:48.258Z ERROR: Migration failed: 4.1->4.2+
2023-05-27T10:21:48.260Z INFO: Beginning migration: 4.2->4.3+
2023-05-27T10:21:48.454Z INFO: 4.2->4.3+ migration complete!
2023-05-27T10:21:48.454Z INFO: Checking if tasks manager role permissions exist for admin user...
2023-05-27T10:21:48.459Z INFO: Task manager permissions check complete!
2023-05-27T10:21:48.460Z INFO: Checking if archives have been migrated...
2023-05-27T10:21:48.464Z INFO: Archives migration complete!
2023-05-27T10:21:48.466Z INFO: Restarting server...
2023-05-27T12:21:48: PM2 log: App [YoutubeDL-Material:0] exited with code [1] via signal [SIGINT]
2023-05-27T12:21:48: PM2 log: App [YoutubeDL-Material:0] starting in -fork mode-
2023-05-27T12:21:48: PM2 log: App [YoutubeDL-Material:0] online
(node:1471) DeprecationWarning: uuidv4() is deprecated. Use v4() from the uuid module instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
2023-05-27T10:21:51.567Z INFO: YoutubeDL-Material v4.3.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

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 mb-press Antworten abbrechen