Je souhaite télécharger une playlist YouTube à l'aide de la bibliothèque PyTube . Actuellement, je ne peux télécharger qu'une seule vidéo à la fois. Je ne peux pas télécharger plus d'une vidéo à la fois.
Actuellement, mon implémentation est
>> Download is complete
Cela donne le résultat suivant
import pytube link = input('Please enter a url link\n') yt = pytube.YouTube(link) stream = yt.streams.first() finished = stream.download() print('Download is complete')
3 Réponses :
Vous pouvez importer une Playlist
pour y parvenir. Il n'y a aucune référence à la liste de lecture dans la redoc, bien qu'une section du dépôt GitHub se trouve ici . La source du script se trouve dans le repo ici .
from pytube import Playlist playlist = Playlist('https://www.youtube.com/watch?v=58PpYacL-VQ&list=UUd6MoB9NC6uYN2grvUNT-Zg') print('Number of videos in playlist: %s' % len(playlist.video_urls)) playlist.download_all()
REMARQUE: j'ai trouvé que la méthode de prise en charge Playlist.video_urls
ne fonctionne pas. Cependant, les vidéos sont toujours téléchargées, comme en témoigne ici
La liste playlist.video_urls
est remplie par la méthode populate_video_urls ()
, qui est appelée par playlist.download_all ()
. L'appel de populate_video_urls ()
semble remplir la liste comme prévu.
playlist.download_all () est désormais obsolète et ne fonctionne pas.
https://www.youtube.com/watch?v=HjuHHI60s44 https://www.youtube.com/watch?v=Z40N7b9NHTE https://www.youtube.com/watch?v=FvziRqkLrEU https://www.youtube.com/watch?v=XN2-87haa8k https://www.youtube.com/watch?v=VgI4UKyL0Lc https://www.youtube.com/watch?v=BvPIgm2SMG8 https://www.youtube.com/watch?v=DpdmUmglPBA https://www.youtube.com/watch?v=BmVmJi5dR9c https://www.youtube.com/watch?v=pYNuKXjcriM https://www.youtube.com/watch?v=EWONqLqSxYc https://www.youtube.com/watch?v=EKmLXiA4zaQ https://www.youtube.com/watch?v=-DHCm9AlXvo https://www.youtube.com/watch?v=7cRaGaIZQlo https://www.youtube.com/watch?v=ZkcEB96iMFk https://www.youtube.com/watch?v=5Fcf-8LPvws https://www.youtube.com/watch?v=xWLgdSgsBFo https://www.youtube.com/watch?v=QcKYFEgfV-I https://www.youtube.com/watch?v=BtSQIxDPnLc https://www.youtube.com/watch?v=O5kh_-6e4kk https://www.youtube.com/watch?v=RuWVDz-48-o https://www.youtube.com/watch?v=-yjc5Y7Wbmw https://www.youtube.com/watch?v=C5T59WsrNCU https://www.youtube.com/watch?v=MWldNGdX9zE
Les 2 exemples précédents ne fonctionnent pas pour moi. Je reçois le message: Nombre de vidéos dans la playlist: 0 C: \ Users \ ... \ test.py:4: DeprecationWarning: Appel à la fonction obsolète download_all (Cette fonction sera supprimée à l'avenir. Veuillez parcourir .vidéos). playlist.download_all ('out /') C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ pytube \ contrib \ pl aylist.py:216: DeprecationWarning: Appel à la fonction obsolète _path_num_prefix_generator (Cette fonction sera supprimée à l'avenir .). prefix_gen = self._path_num_prefix_generator (reverse_numbering)
J'ajoute que j'ai vérifié que l'url des exemples a vraiment plus de 0 vidéos (et j'ai essayé avec une autre URL de playlist, sans effets). Et j'utilise pytube3 9.6.4
La réponse à mon problème a été trouvée ici: stackoverflow.com/ questions / 62661930 /…
Les solutions ci-dessus ne fonctionnent plus. Voici un code qui télécharge le flux sonore des vidéos référencées dans une playlist Youtube. Pytube3 est utilisé, pas pytube. Notez que la liste de lecture doit être publique pour que le téléchargement réussisse. De plus, si vous souhaitez télécharger la vidéo complète au lieu de la piste sonore uniquement, vous devez modifier la valeur de la constante de balise Youtube. Le correctif de la liste Playlist.videos vide a été extrait de ce message Stackoverflow: La liste de lecture PyTube3 renvoie une liste vide a > import re
from pytube import Playlist
YOUTUBE_STREAM_AUDIO = '140' # modify the value to download a different stream
DOWNLOAD_DIR = 'D:\\Users\\Jean-Pierre\\Downloads'
playlist = Playlist('https://www.youtube.com/playlist?list=PLzwWSJNcZTMSW-v1x6MhHFKkwrGaEgQ-L')
# this fixes the empty playlist.videos list
playlist._video_regex = re.compile(r"\"url\":\"(/watch\?v=[\w-]*)")
print(len(playlist.video_urls))
for url in playlist.video_urls:
print(url)
# physically downloading the audio track
for video in playlist.videos:
audioStream = video.streams.get_by_itag(YOUTUBE_STREAM_AUDIO)
audioStream.download(output_path=DOWNLOAD_DIR)
Essayer ceci sur une liste de lecture avec plus de 1500 vidéos et je ne parviens à en tirer que 55 URL ... des suggestions?
"il montre une erreur" n'est pas une description du problème. Veuillez inclure le traçage complet dans votre message.
Je viens d'exécuter votre code, cela fonctionne bien.
Mais il ne télécharge qu'une seule vidéo à la fois, mais je veux télécharger une liste de lecture entière à la fois @Glazbee
J'ai posté une réponse pour vous.
pytube n'est plus maintenu, pensez à utiliser pytube3 à la place