Obtenez des données Youtube en Python à l'aide de l'API Youtube Data

introduction

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.

référence

J'ai fait référence à ce qui suit lors de l'utilisation de l'API Youtube Data.

API prête à l'emploi

Inscription à l'API de données Youtube

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 obtenir des informations de l'API en Python

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.

Obtenez des informations vidéo avec l'API de données 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.

Obtenez des vidéos avec des titres contenant des mots clés spécifiques par ordre de nombre de vues

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.

Obtenez des informations sur de nombreuses vidéos à la fois

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.

スクリーンショット 2019-12-16 20.00.14.png

Obtenez le nombre de vues d'une vidéo

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.

スクリーンショット 2019-12-16 20.06.04.png

Essayez de visualiser

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)

スクリーンショット 2019-12-16 20.30.14.png

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.

スクリーンショット 2019-12-16 20.30.37.png

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

Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
[Python] Obtenez tous les commentaires à l'aide de Youtube Data Api
Obtenez des données LEAD à l'aide de l'API REST de Marketo en Python
Obtenez les données de l'API Google Fit en Python
Obtenez des commentaires YouTube en Python
Obtenez des données Youtube avec python
Obtenir l'URL de l'image à l'aide de l'API Flickr en Python
[Python] J'ai essayé d'obtenir diverses informations en utilisant l'API de données YouTube!
[Python] Obtenez des données insight à l'aide de l'API Google My Business
Obtenez des données LeapMotion en Python.
Obtenir des données Salesforce à l'aide de l'API REST
Acquisition de données à l'aide de l'API googlemap de python
Obtenir des données de Quandl en Python
Obtenez des données Amazon à l'aide de Keep API # 1 Obtenez des données
Jouez avec l'API de données YouTube v3 à l'aide du client Python de l'API Google
Obtenez des données supplémentaires vers LDAP avec python
Fonctionnement de la souris à l'aide de l'API Windows en Python
Essayez d'utiliser l'API Kraken avec Python
J'ai essayé d'utiliser l'API de données YOUTUBE V3
Recevoir des e-mails à l'aide de l'API Gmail en Java
Tweet à l'aide de l'API Twitter en Python
Créer une feuille de calcul Google à l'aide de l'API Python / Google Data
Nettoyage des données à l'aide de Python
Obtenir la date en Python
API C en Python 3
Obtenez des données de séries chronologiques de k-db.com avec Python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Jugons les émotions à l'aide de l'API Emotion en Python
Comment obtenir des données d'article à l'aide de l'API Qiita
Essayez d'utiliser l'API ChatWork et l'API Qiita en Python
Essayez d'utiliser l'API DropBox Core avec Python
Hit API de Mastodon en Python
Gérer les données ambiantes en Python
Créer un bot de collecte de données en Python à l'aide de Selenium
Obtenez le mois dernier en Python
Importez un fichier JPG à l'aide de l'API Google Drive en Python
Afficher les données UTM-30LX en Python
Enregistrez collectivement des données dans Firestore à l'aide d'un fichier csv en Python
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
Obtenez des données du module GPS à 10 Hz avec Python
Obtenir la taille du terminal en Python
Obtenir explicitement EOF en python
OpenVINO utilisant l'API Python d'Inference Engine dans un environnement PC
Obtenez des commentaires et des abonnés avec l'API de données YouTube
Obtenez des données via l'API Salesforce (API en masse) en Python et chargez-les dans BigQuery
API Blender Python dans Houdini (Python 3)
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
Obtenez des notes Evernote en Python
Analyse de données à l'aide de pandas python
Traduit à l'aide de googletrans en Python
Utilisation du mode Python dans le traitement
Obtenez des synonymes japonais avec Python
Télécharger en tant que données ouvertes à l'aide de l'API CKAN en Python et lier automatiquement avec les actions Github
J'ai essayé de rechercher des vidéos à l'aide de l'API de données Youtube (débutant)
Obtenez des données à l'aide de l'API du ministère des Affaires intérieures et des Communications
Gonfler des données textuelles par retranslation à l'aide de Google Traduction en Python
Sortie de données Excel en écriture séparée à l'aide de Python3 + xlrd + mecab
Appuyez sur REST en Python pour obtenir des données de New Relic