
Ist es möglich, eine öffentliche YouTube-Wiedergabeliste als MP3-Dateien mit einem lokalen Ordner zu synchronisieren?
Schlüsseleigenschaften:
- MP3-Datei zum lokalen Ordner hinzufügen, wenn ein neues Video zur Playlist hinzugefügt wird
- MP3-Datei im lokalen Ordner löschen, wenn entsprechendes Video aus der Playlist entfernt wird
Antwort1
Sie können entwederDasGitHub-Repository, das genau das zu tun scheint, was Sie möchten.
Oder Sie können einfach youtube-dl
with verwenden --download-archive
, wie auf der Manpage von youtube-dl zu sehen, obwohl dadurch keine Videos entfernt werden:
Wie lade ich nur neue Videos aus einer Playlist herunter?
Verwenden Sie die Download-Archivierungsfunktion. Mit dieser Funktion sollten Sie zunächst die komplette Wiedergabeliste herunterladen,
--download-archive path/to/download/archive/file.txt
wobei die Kennungen aller Videos in einer speziellen Datei aufgezeichnet werden. Bei jedem nachfolgenden Durchlauf mit derselben Funktion--download-archive
werden nur neue Videos heruntergeladen und alle zuvor heruntergeladenen Videos übersprungen. Beachten Sie, dass nur erfolgreiche Downloads in der Datei aufgezeichnet werden.Beispielsweise
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
wird zuerst die komplette PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re-Wiedergabeliste heruntergeladen und eine Datei archive.txt erstellt. Bei jedem nachfolgenden Durchlauf werden nur neue Videos heruntergeladen, falls welche vorhanden sind:
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
Antwort2
Dies ist eher ein Workaround als eine direkte Antwort, aber wenn es für Sie ok ist, gelegentlich einige der älteren Playlist-Dateien erneut herunterzuladen, können Sie einen Cronjob einrichten, um Dateien in einem Zielverzeichnis zu suchen und zu löschen find
.
Sie sollten die Wiedergabeliste überprüfen und abschätzen, wie lange Dateien normalerweise darin verbleiben, bevor sie verschwinden, und diese Anzahl von Tagen als Variable verwenden. Hier in meinem Beispiel habe ich 30 Tage gewählt.
Hier ist ein Beispiel für ein Bash-Skript, das cron als @daily-Job ausführen kann:
#! /bin/bash
# Delete all files in a directory older than 30 days
# (careful, this is recursive and will delete files in subdirectories)
find /PATH/TO/youtube-dl-playlist-files -mtime +30 -delete
Alle Dateien, die sich noch auf der Wiedergabeliste befinden, aber älter als 30 Tage sind, werden gelöscht und youtube-dl lädt sie beim nächsten Ausführen erneut herunter. Das ist nicht optimal, kann aber gut genug sein.