Seite 1 von 2
pytube
Verfasst: Sonntag 23. Januar 2022, 18:15
von AndiS
Hallo Forum.
folgende Frage in die Runde .. ich möchte Youtube-Videos auf meine lokale Festplatte runterladen.. kappt auch prima als Script! Wenn ich daraus eine EXE via pyinstaller mache, dann bekomme ich immer den Hinweis "Video nicht gefunden!", obwohl das Video exisiert! Hat jemand vielleicht eine Idee wo hier der Fehler liegt? Gruß, Andi
Code: Alles auswählen
import sys
from pytube import YouTube
if len(sys.argv) < 3:
print('\nFormat: youtube.exe <Link zum Youtube-Video> <Zielordner>\n')
sys.exit(0)
try:
url = sys.argv[1]
dl = sys.argv[2]
youtube = YouTube(url)
print(f'\nTitel: {youtube.title}')
youtube.streams.get_highest_resolution().download(dl)
print('\n')
except:
print('Video wurde nicht gefunden!')
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 18:20
von __deets__
Du solltest als erstes mal das try/except wegschmeissen. So wie das da steht, faengt das *jeden* Fehler ab, den du (oder der Paketierer) gemacht hat, und man kann nicht mehr rausfinden, was eigentlich los ist. Als Faustregel fuer Anfaenger: Fehler nie allgemein abfangen, sondern immer nur so spezifisch wie moeglich!
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 18:22
von pillmuncher
Herzlichen Glückwunsch! Du hast gerade herausgefunden, warum es keine gute Idee ist, nackte except-Statements zu verwenden. Statt dessen schreib hin, welche Ausnahmen du konkret erwartest. Oder, falls du keine erwartest, lass den try-except-Block weg, damit die Ausnahme ausgegeben wird.
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 19:10
von AndiS
Hallo,
Okay -Verstanden! Und wie mache ich am besten die Existenz eines Videos abzufragen?
Grüße, Andi
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 19:11
von __deets__
Den Fehler eben spezifisch abfangen. Der steht dann ja in der Fehlermeldung.
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 19:35
von AndiS
Hallo,
da würde mir z.B. „requests“ einfallen und abfragen , ob „200“ Ja/Nein!
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 21:07
von kbr
Nein. Nimm erst einmal, wie schon mehrfach erwähnt, try/except weg und lass dir ausgeben, warum es knallt.
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 21:36
von AndiS
Sorry,
hier die Fehlermeldung: pytube.exceptions.VideoUnavailable: jNqhUIYZM22 is unavailable
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 21:45
von sparrow
Und genaud die Exception-Class musst du abfangen.
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 21:59
von AndiS
Und wie kann man die Exception-Class abfragen?? Sorry, wenn ich es wüsste, dann würde ich nicht fragen!

Re: pytube
Verfasst: Sonntag 23. Januar 2022, 22:08
von sparrow
Wenn es an diesen absoluten Basics fehlt, verweise ich mal auf das
offizielle Tutorial.
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 22:33
von AndiS
Hallo,
laut Doku unter "
https://pytube.io/en/latest/user/exceptions.html" müsste es so funktionieren. Leider bei mir nicht!
Bei mir kommt immer noch der Fehler:
pytube.exceptions.VideoUnavailable: c4hbRjT1j22 is unavailable
Code: Alles auswählen
try:
yt = YouTube(url)
except VideoUnavailable:
print(f'Video {url} wurde nicht gefunden!')
else:
print(f'Titel: {yt.title}')
yt.streams.get_highest_resolution().download(dl)
print('\nFertig.')
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 22:55
von rogerb
Du hast die Exception um den falschen Code gelegt. Der Fehler tritt auf, wenn versucht wird, die streams nachzuladen.
Aber abgesehen davon:
Wenn ich "
https://www.youtube.com/watch?v=c4hbRjT1j22" in den Browser kopiere, kommt die Meldung: Das Video ist nicht mehr verfügbar.
Es scheint wirklich nicht verfügbar zu sein. Oder wie lautet die url?
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 23:08
von AndiS
Hallo,
Danke für die Info! Die URL vom Video ist bewusst falsch! Stattdessen soll die Fehlermeldung: "Video {url} wurde nicht gefunden!" erscheinen...
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 23:11
von rogerb
dann müsste der Auschnitt von oben wohl so aussehen:
Code: Alles auswählen
yt = YouTube(url)
try:
print(f'Titel: {yt.title}')
yt.streams.get_highest_resolution().download(dl)
except VideoUnavailable:
print(f'Video {url} wurde nicht gefunden!')
else:
print('\nFertig.')
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 23:26
von AndiS
Hallo,
leider erscheint der Fehler: except VideoUnavailable:
NameError: name 'VideoUnavailable' is not defined
Code: Alles auswählen
url = sys.argv[1]
dl = sys.argv[2]
yt = YouTube(url)
try:
print(f'Titel: {yt.title}')
yt.streams.get_highest_resolution().download(dl)
except VideoUnavailable:
print(f'Video {url} wurde nicht gefunden!')
else:
print('\nFertig.')
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 23:44
von rogerb
Re: pytube
Verfasst: Sonntag 23. Januar 2022, 23:45
von pillmuncher
Naja, wenn du einen Namen aus einem Modul verwenden willst, musst du ihn halt auch importieren. Vermutlch so:
Re: pytube
Verfasst: Montag 24. Januar 2022, 17:46
von AndiS
Hallo,
danke für die tatkräftige Unterstützung. Leider kommt immer noch folgender Fehlercode:
raise exceptions.VideoUnavailable(video_id=self.video_id)
pytube.exceptions.VideoUnavailable: LovsHHk3t22 is unavailable
Hier mal der ganze Quellcode:
Code: Alles auswählen
import sys
from pytube import YouTube
from pytube.exceptions import VideoUnavailable
if len(sys.argv) < 3:
print('\nFormat: youtube.exe <Link zum Youtube-Video> <Zielordner>\n')
sys.exit(0)
url = sys.argv[1]
dl = sys.argv[2]
yt = YouTube(url)
print(f'Titel: {yt.title}')
try:
yt.streams.get_highest_resolution().download(dl)
except VideoUnavailable:
print(f'Video {url} wurde nicht gefunden!')
else:
print('\nFertig.')
Vielen Dank, Andi.
Re: pytube
Verfasst: Montag 24. Januar 2022, 17:48
von __deets__
Bitte die GANZE Fehlermeldung posten. Denn sonst muss man raten.
Wenn ich das tue, dann denke ich mal, dass auch das
yt = YouTube(url)
in deinen try-Block gehoert.