Récemment, j'étudie si diverses données peuvent être acquises à l'aide de l'API. J'ai recherché et pratiqué comment obtenir des informations telles que le nombre de vues et les goûts de vidéos à l'aide de l'API Youtube Data, alors je les ai écrites sous forme de mémorandum.
J'ai fait référence à ce qui suit lors de l'utilisation de l'API Youtube Data.
Pour obtenir l'API de données Youtube, vous avez d'abord besoin d'un compte Google. Suivez les étapes ci-dessous pour enregistrer l'API Yotube Data et obtenir une clé API.
-Créer un nouveau projet après avoir accédé à Google Cloud Platform
Obtenez la bibliothèque pour ici. Il peut être installé avec pip comme indiqué ci-dessous.
pip install google-api-python-client
Vous êtes maintenant prêt à utiliser l'API Youtube.
Ci-dessous, nous utiliserons l'API Youtube Data pour acquérir des informations vidéo. Veuillez consulter Référence API de données Youtube pour obtenir des informations spécifiques.
Récemment, je suis accro aux jeux de société, alors j'aimerais obtenir des informations vidéo relatives aux jeux de société par ordre décroissant du nombre de vues.
from apiclient.discovery import build
YOUTUBE_API_KEY = 'Entrez votre clé API'
youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY)
search_response = youtube.search().list(
part='snippet',
#Spécifiez la chaîne de caractères que vous souhaitez rechercher
q='Jeu de plateau',
#Obtenu par ordre décroissant de vues
order='viewCount',
type='video',
).execute()
Il est possible d'acquérir des informations vidéo au format JSON en utilisant le script ci-dessus. Jetons un coup d'œil aux informations de la vidéo la plus jouée du jeu de société.
search_response['items'][0]
{'kind': 'youtube#searchResult',
'etag': '"p4VTdlkQv3HQeTEaXgvLePAydmU/0dlj0cjWp5akSv64R8VxJM--3Ok"',
'id': {'kind': 'youtube#video', 'videoId': 'ASusE5qjoAg'},
'snippet': {'publishedAt': '2019-05-31T11:58:15.000Z',
'channelId': 'UCutJqz56653xV2wwSvut_hQ',
'title': '[Viser la commercialisation] Contre-littérature! Jeu de société Gachinko faisant la confrontation!',
'description': 'Tokai On Air Je ne dis plus "Veuillez vous abonner à la chaîne" ou "Merci pour votre bonne évaluation", mais j'ai dit après tout...',
'thumbnails': {'default': {'url': 'https://i.ytimg.com/vi/ASusE5qjoAg/default.jpg',
'width': 120,
'height': 90},
'medium': {'url': 'https://i.ytimg.com/vi/ASusE5qjoAg/mqdefault.jpg',
'width': 320,
'height': 180},
'high': {'url': 'https://i.ytimg.com/vi/ASusE5qjoAg/hqdefault.jpg',
'width': 480,
'height': 360}},
'channelTitle': 'Tokai à l'antenne',
'liveBroadcastContent': 'none'}}
La vidéo de Tokai On Air était numéro un. Après tout, c'est très populaire ... Cependant, le script ci-dessus ne peut obtenir que 5 informations à la fois, pas le nombre spécifique de vues vidéo.
J'ai créé une fonction qui acquiert un grand nombre de vidéos à la fois, extrait uniquement les informations nécessaires de la valeur de retour et la dépose dans une trame de données. C'est ici.
#Obtenez des informations sur 5 nombres en num
#Les autres paramètres sont les mêmes que les paramètres pour obtenir des informations de l'API
def get_video_info(part, q, order, type, num):
dic_list = []
search_response = youtube.search().list(part=part,q=q,order=order,type=type)
output = youtube.search().list(part=part,q=q,order=order,type=type).execute()
#Comme vous ne pouvez obtenir que 5 éléments à la fois, répétez-le plusieurs fois
for i in range(num):
dic_list = dic_list + output['items']
search_response = youtube.search().list_next(search_response, output)
output = search_response.execute()
df = pd.DataFrame(dic_list)
#Obtenez un videoId unique pour chaque vidéo
df1 = pd.DataFrame(list(df['id']))['videoId']
#Obtenez un videoId unique pour chaque vidéo Obtenez uniquement les informations vidéo dont vous avez besoin
df2 = pd.DataFrame(list(df['snippet']))[['channelTitle','publishedAt','channelId','title','description']]
ddf = pd.concat([df1,df2], axis = 1)
return ddf
Exécutons la fonction ci-dessus. Cette fois, je vais essayer d'obtenir 100 vidéos liées aux jeux de société dans l'ordre décroissant du nombre de vues.
get_video_info(part='snippet',q='Jeu de plateau',order='viewCount',type='video',num = 20)
De cette façon, nous avons pu mettre 100 informations vidéo dans une trame de données.
Ensuite, obtenez le nombre de fois où la vidéo a été lue. Vous devez utiliser une méthode différente de celle que vous avez utilisée précédemment. Obtenez le nombre de fois où la vidéo a été lue et attachez-la à la trame de données que vous venez de créer.
#Créez une fonction pour obtenir le nombre spécifique de vues et de goûts de la vidéo en entrant le videoId
def get_statistics(id):
statistics = youtube.videos().list(part = 'statistics', id = id).execute()['items'][0]['statistics']
return statistics
df_static = pd.DataFrame(list(df['videoId'].apply(lambda x : get_statistics(x))))
df_output = pd.concat([df,df_static], axis = 1)
df_output
Avec ce genre de ressenti, j'ai pu obtenir le nombre de vues, de likes, de commentaires, etc. de la vidéo.
Visualisons-le facilement. J'ai essayé de représenter graphiquement le nombre cumulé de vues pour chaque chaîne dans les vidéos parmi les 100 meilleures vues. Cliquez ici pour les résultats.
df_output.groupby('channelTitle').sum().sort_values(by = 'viewCount', ascending = False).plot( kind='bar', y = 'viewCount', figsize = (25,10), fontsize = 20)
Après tout, une vidéo Youtuber populaire a un nombre de vues exceptionnel, donc le top est une série de chaînes bien connues. Si vous représentez le nombre de vidéos publiées pour chaque chaîne dans le top 100 des vidéos les plus vues, vous pouvez voir différents paysages.
Une chaîne inconnue appelée "Gorgeous Video" est arrivée en premier. "Superbe vidéo" est comme la magnifique chaîne Youtube de cet artiste. Il semble qu'il donne énergiquement des vidéos de jeux de société.
Next Vous pouvez obtenir diverses données intéressantes comme celle-ci. J'aimerais jouer avec lui en utilisant l'API Youtube Data.
Recommended Posts