[PYTHON] Télécharger en masse TOP10 vues à partir d'une chaîne Youtube

Ceci est le premier message sur Qiita. Fondamentalement, je prévois de l'utiliser comme un mémorandum. J'étudie toujours Python, veuillez donc signaler toute précipitation concernant le code.

De plus, concernant les droits d'auteur, etc., nous reconnaissons que cela est possible dans le cadre d'une utilisation privée, mais veuillez indiquer s'il y a un problème.

Préparation

Tout d'abord, accédez à https://console.cloud.google.com/ pour créer un projet, activez l'API de données Youtube à partir de la bibliothèque et ajoutez des informations d'identification (clé API).

Ensuite, installez la bibliothèque requise pour utiliser l'API Youtube Data et installez Youtube_DL requis pour enregistrer la vidéo.

pip install google-api-python-client
pip install youtube-dl

code

Une fois installée, importez d'abord la bibliothèque et affectez-la à chaque variable.

from apiclient import discovery
import youtube_dl

DEVELOPER_KEY = "" #Clé API ici
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
ydl_opts = {
   'format': 'bestaudio/best',
   'postprocessors': [
       {'key': 'FFmpegExtractAudio',
       'preferredcodec': 'mp3',
        'preferredquality': '192'},
       {'key': 'FFmpegMetadata'},
   ],
} # youtube-Convertir des vidéos téléchargées avec DL en musique

Si vous souhaitez télécharger des vidéos au lieu de la musique, vous pouvez vider ytdl_opts.

Ensuite, obtenez l'URL de la vidéo la plus lue sur la chaîne de 0 à 10.

def youtube_search(channelId):
 videos = [] #Liste à mettre l'URL
 youtube = discovery.build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
   developerKey=DEVELOPER_KEY)

 search_response = youtube.search().list(
   part="snippet",
   channelId= channelId,
   maxResults=10,
   order="viewCount",
 ).execute() #Recherchez 10 vidéos dans l'ordre du nombre de vues après avoir spécifié la chaîne avec l'API
 
 for search_result in search_response.get("items", []):
   if search_result["id"]["kind"] == "youtube#video":
     print("https://www.youtube.com/watch?v=" + search_result['id']['videoId'])
     videos.append(search_result["id"]["videoId"]) #Ajouter une URL aux vidéos

 return videos

En passant, le nombre de recherches peut être spécifié arbitrairement jusqu'à maxResults = 0-50.

Téléchargez toutes les vidéos avec la dernière URL répertoriée

def download_video(video_list):
 for i, videoId in enumerate(video_list): #Tourner le numéro d'index et l'élément en même temps
   # ydl_opts['outtmpl'] = "music{}".format(str(i)) + '.%(ext)s' #Si vous souhaitez faciliter la compréhension de l'ordre du nombre de vues, ici#Si vous supprimez de la musique0-10.mp3(mp4)Peut être téléchargé comme
   ydl = youtube_dl.YoutubeDL(ydl_opts)
   ydl.extract_info("https://www.youtube.com/watch?v={}".format(videoId), download=True)

# ytdl_opts=...La partie indique le format du nom de fichier.

#Si vous effacez la musique[0-10].mp3(mp4)Vous pouvez le télécharger au format.

dernier

Un formulaire qui peut être utilisé en exécutant le code tel quel

from apiclient import discovery
import youtube_dl

DEVELOPER_KEY = "YOUR_API_KEY" #Veuillez entrer la clé API ici
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
ydl_opts = {
   'format': 'bestaudio/best',
   'postprocessors': [
       {'key': 'FFmpegExtractAudio',
       'preferredcodec': 'mp3',
        'preferredquality': '192'},
       {'key': 'FFmpegMetadata'},
   ],
} # youtube-Convertir des vidéos téléchargées avec DL en musique

def youtube_search(channelId):
 videos = [] #Liste à mettre l'URL
 youtube = discovery.build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
   developerKey=DEVELOPER_KEY)

 search_response = youtube.search().list(
   part="snippet",
   channelId= channelId,
   maxResults=10,
   order="viewCount",
 ).execute() #Recherchez 10 vidéos dans l'ordre du nombre de vues après avoir spécifié la chaîne avec l'API
 
 for search_result in search_response.get("items", []):
   if search_result["id"]["kind"] == "youtube#video":
     print("https://www.youtube.com/watch?v=" + search_result['id']['videoId'])
     videos.append(search_result["id"]["videoId"]) #Ajouter une URL aux vidéos

 return videos

def download_video(video_list):
 for i, videoId in enumerate(video_list): #Tourner le numéro d'index et l'élément en même temps
   # ydl_opts['outtmpl'] = "music{}".format(str(i)) + '.%(ext)s' #Si vous souhaitez faciliter la compréhension de l'ordre du nombre de vues de chaque vidéo, cliquez ici#Si vous supprimez de la musique0-10.Peut être téléchargé en mp3
   ydl = youtube_dl.YoutubeDL(ydl_opts)
   ydl.extract_info("https://www.youtube.com/watch?v={}".format(videoId), download=True)

if __name__ == '__main__':
 channel = input("Veuillez saisir l'identifiant de la chaîne:")
 videos = youtube_search(channel)
 download_video(videos)
 print('Le téléchargement est terminé.')

Cet article se termine ici. Merci beaucoup.

Recommended Posts

Télécharger en masse TOP10 vues à partir d'une chaîne Youtube
Télécharger des vidéos de YouTube (youtube-dl)
Identifiez la chaîne YouTube de la vidéo Hikakin à partir d'images miniatures à l'aide de CNN
Téléchargez les n principales recherches d'images Google
Utilisez boto pour télécharger le fichier depuis S3.