(Youtube-dl Version: 2021.06.06)
Wie kann ich mit youtube-dl verhindern, dass "unlisted" Videos von Youtube herunter geladen werden? ("unlisted" ist quasi eine Mischung aus "private" und "public" und bedeutet das Video ist nicht öffentlich, mit Kenntniss der Video ID lässt es sich aber trotzdem aufrufen, die ID finde ich mit youtube-dl herraus)
Der Befehl
1 | --match-filter "availability = 'unlisted'" |
funktioniert einwandfrei um ausschließlich die versteckten "unlisted" Videos herunterzuladen. Aber welchen Befehl benötige ich, um das Umgekehrte zu erreichen? Also "unlisted" Videos auszuschließen? (z.B. angenommen man möchte eine ganze Playlist herunterladen aber ohne die "unlisted" Videos darin)
Es funktioniert weder
1 | --match-filter "availability = 'public'" |
noch
1 | --match-filter "availability != 'unlisted'" |
Bei ersterem bin ich mir ohnenhin unsicher, weil ich nicht weiß, wie youtube seine "public" Videos tatsächlich taggt. (scheinbar nicht mit "public" 😛 ) Aber warum zweiteres nicht funktioniert ist mir unklar, denn laut Manpage soll das genauso funktionieren. Bei einem "public" Testvideo wird der Befehl von youtube-dl einwandfrei bearbeitet aber das Video dann trotzdem geskipped, mit der Antwort "does not match Filter "availability != 'unlisted'" ", was ja aber der Fall sein sollte, meiner Meinung nach (denn das Video ist ja ungleich "unlisted", nämlich "public").
Für die "Lesebegeisterten" hier mein genaues Problem, bzw. der ursprüngliche Text, weil ich so gerne Romane schreibe... (der Übersicht halber in Form eines Zitats angefügt):
Ich habe mir Bash-Skripte geschrieben, die über Systemd gesteuert automatisiert die neusten Videos von bestimmten Youtube Kanälen herunter laden.
Nun habe ich aktuell aber einen speziellen Fall, wo auf einem Kanal die Videos erst als "unlisted" hochgeladen und erst Stunden später richtig veröffentlicht werden. Während der "unlisted" Phase kodiert youtube scheinbar das Video, denn sobald es als "unlisted" verfügbar wird, liegt nur das 360p Format vor und später kommen dann die höheren Auflösungen hinzu. Ich kenne mich mit youtube nicht ausreichend aus, glaube aber der Kanalbetreiber weiß nicht so ganz was er tut (denn auf anderen Kanälen habe ich dieses Phänomen nicht, dort habe ich sofort die volle Auflösung Sekunden nachdem das Video online geht, vermutlich weil die Betreiber den Release des Videos besser planen oder Youtube priorisiert seine Ressourcen zwischen den Kanälen unterschiedlich k.A.).
Ich möchte daher verhindern, dass die neusten Videos ausschließlich in 360p herunter geladen werden. (denn die landen dann in der Archiv-Liste und werden später nicht nochmal in höherer Auflösung herunter geladen, bzw. erfahre ich nicht, wann das Video tatsächlich public gegangen ist)
Jetzt könnte ich natürlich in meinem Script youtube-dl anweisen, das Video nur dann herrunter zu laden, sobald es in 1080p oder 4k verfügbar ist. Da ich speziell auf diesem Kanal aber gleichzeitig einwenig (mangels ausreichend HTML Kentnissen noch recht stümperhaft) Datenanalyse betreibe und Videos dennoch sofort heruntergeladen werden sollen, egal in welchem Format sie als erstes vorliegen (u.A. auch falls diese z.B. kurz darauf wieder gelöscht werden), möchte ich die Videos in "unlisted" und "listed" seperat herunterladen. Der Befehl "--download-archive" ist in diesem Fall leider auch Fluch und Segen zugleich.
Oder in Kurzform: Das neuste Video eines Kanals soll generell sofort herunter geladen werden (was aktuell der Fall ist). Wenn es aber ein "unlisted" Video ist und später zu einem "public" wird, soll die Public Version ebenfalls nochmal herunter geladen werden. Da auf die Videoformate kein Verlass ist (manchmal liegen "unlisted" Videos sofort in höheren Auflösungen vor) kann ich mich danach nicht richten (sonst könnte ich für das 360p und das 1080p Format z.B. eine seperate "Archive"-Liste anlegen).