4
votes

Utilisation de Pytube pour télécharger une playlist à partir de YouTube

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')


5 commentaires

"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


3 Réponses :


8
votes

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


2 commentaires

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.



4
votes
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

3 commentaires

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 /…



6
votes

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)


1 commentaires

Essayer ceci sur une liste de lecture avec plus de 1500 vidéos et je ne parviens à en tirer que 55 URL ... des suggestions?