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"
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.
Danke für die Info. Werde ich mal ausprobieren. :)
Hab jetzt die 4.3 installiert. yt-dlp wird unterstützt, perfekt!