Collectez des informations vidéo sur "Chanter avec XX personnes" [Python] [API de données Youtube]

J'aime les vidéos de la série «Singing with XX», alors j'ai soudainement voulu collecter des informations sur les vidéos populaires de la série «Singing with XX» sur YouTube. Je n'ai pas d'utilisation spécifique, mais j'ai pensé que ce serait amusant d'analyser diverses choses telles que le type de parodie qui intéresse beaucoup de gens.

Donc, cette fois, j'ai essayé d'obtenir les informations vidéo de "Singing in XX series" en utilisant Python et YouTube Data API (v3). Pour être honnête, en termes de collecte d'informations vidéo, il n'y a rien de nouveau sur le site auquel j'ai fait référence (tout au plus, la différence dans les dernières informations de sortie), mais depuis que j'ai essayé d'utiliser l'API de données YouTube pour la première fois, cela Je vais l'écrire sous forme de mémorandum.

Site de référence

environnement

Confirmé pour travailler avec Google Colaboratory (à compter du 23 février 2020)

Préparation

Obtenez la clé API pour l'API de données YouTube (v3). La procédure est également disponible sur les sites de référence, je vais donc l'omettre ici. Il n'y a aucune restriction sur les clés API.

code

Les informations vidéo incluses dans les résultats de la recherche par la requête spécifiée sont acquises et émises en standard. Le code recueille des informations sur les joueurs de baseball à titre d'exemple.

from apiclient.discovery import build # pip install google-api-python-client
import datetime

YOUTUBE_API_KEY = '<Remplissez la clé API>'

query = 'J'ai essayé de chanter avec le nom du joueur de baseball'
max_pages = 16 #Nombre de pages à obtenir
maxResults = 50 #Le nombre de résultats de recherche à inclure par page. max est de 50

#Fonction pour obtenir des informations vidéo
def search_videos(query, max_pages=10,maxResults=50):
    youtube = build('youtube', 'v3', developerKey = YOUTUBE_API_KEY)

    search_request = youtube.search().list(
        part='id',
        q=query,
        type='video',
        maxResults=maxResults,
    )


    i = 0
    while search_request and i < max_pages:
        search_response = search_request.execute()
        video_ids = [item['id']['videoId'] for item in search_response['items']]

        videos_response = youtube.videos().list(
            part='snippet,statistics',
            id=','.join(video_ids)
        ).execute()

        yield videos_response['items']

        search_request = youtube.search().list_next(search_request, search_response)
        i += 1

#Extraire les informations souhaitées des informations vidéo acquises et les mettre dans la liste
#Cette heure, l'ID, l'URL, la date et l'heure de publication, l'ID de chaîne de l'affiche, le titre de la vidéo, le nombre de vues, la note élevée, la note faible, le nombre de favoris sont acquis et le temps d'exécution du programme est également ajouté.
for items_per_page in search_videos(query, max_pages, maxResults):
    for item in items_per_page:
        obj = {}
        obj['id'] = item['id']
        obj['url'] = 'http://youtube.com/watch?v='+obj['id']
        snippet = item['snippet']
        for key in ['publishedAt','channelId','title']:
            obj[key] = snippet[key]
        statistics = item['statistics']
        for key in ['viewCount','likeCount','dislikeCount','favoriteCount','commentCount']:
            obj[key] = statistics[key] if key in statistics else "NA"
        obj['timestamp'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        print(",".join(['"'+obj[v]+'"' for v in obj]))

Cette fois, nous avons obtenu l'identifiant, l'URL, la date et l'heure de publication, l'identifiant de la chaîne de l'affiche, le titre de la vidéo, le nombre de vues, la note élevée, la note faible, le nombre de favoris et le nombre de commentaires. Je ne sais pas quel est le «compte préféré». Je l'ai eu au cas où car il était inclus dans les données, mais tout était à 0.

La sortie finale était la sortie standard (impression) et je l'ai copiée dans Google SpreadSheet telle quelle. Il semble que ce qui suit est collé スクリーンショット 2020-02-23 15.15.42.png

Quand j'ai vérifié visuellement les résultats, il semblait qu'il y avait du bruit comme une vidéo d'une émission de baseball ou une série que j'ai essayé de chanter sans rapport, donc je dois le supprimer manuellement. De plus, si vous souhaitez acquérir de manière plus complète, il semble préférable d'exécuter le programme avec un autre mot de recherche tel que "Yakyuta" et d'ajouter uniquement ceux dont l'ID vidéo ne chevauche pas les résultats d'acquisition jusqu'à présent.

C'est tout pour le codage. À l'avenir, je pense qu'il serait intéressant de retranscrire les mots utilisés dans les paroles des airs et d'analyser les types d'airs susceptibles de devenir populaires. Cela ne semble pas être)

Recommended Posts

Collectez des informations vidéo sur "Chanter avec XX personnes" [Python] [API de données Youtube]
Obtenez des données Youtube avec python
Gestion de vidéos YouTube avec Python 3
Jouez avec l'API de données YouTube v3 à l'aide du client Python de l'API Google
Collectez des informations sur les produits et traitez les données à l'aide de l'API de recherche de produits Rakuten [Python]
[Python] J'ai essayé d'obtenir diverses informations en utilisant l'API de données YouTube!
Collecter des informations sur Twitter avec Python (API Twitter)
Obtenez des données alimentaires avec l'API Amazon (Python)
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Recommandation d'Altair! Visualisation des données avec Python
[Python] Obtenez des informations sur le package Python avec l'API PyPI
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
[Python] Obtenez tous les commentaires à l'aide de Youtube Data Api
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Obtenez des informations sur le processeur de Raspberry Pi avec Python
[Python] Mention à plusieurs personnes avec l'API de Slack
Défiez l'analyse des composants principaux des données textuelles avec Python
Obtenez des commentaires et des abonnés avec l'API de données YouTube
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
[Bases de la science des données] Collecte de données depuis RSS avec python
Analyse de données avec python 2
Analyse de données avec Python
Essayez de gratter les données COVID-19 Tokyo avec Python
Remarques sur la gestion de grandes quantités de données avec python + pandas
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
Débarrassez-vous des données sales avec Python et les expressions régulières
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
[Homologie] Comptez le nombre de trous dans les données avec Python
Obtenez des données de l'API d'analyse avec le client API Google pour python
Implémentez la normalisation du prétraitement des données d'entraînement Python avec scikit-learn [fit_transform]
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
Résumé de base de la manipulation de données avec Python Pandas - Première moitié: création et manipulation de données
Exemple de données créées avec python
Utiliser l'API Trello avec python
Utiliser l'API Twitter avec Python
Obtenir des informations avec l'API Zabbix
API Web avec Python + Falcon
Appelez l'API avec python3.
Utiliser l'API subsonique avec python3
Obtenez des informations sur l'alambic avec Python
Lire des données json avec python
Collectons automatiquement les informations de l'entreprise (données XBRL) à l'aide de l'API EDINET (4/10)
Implémentation de CRUD à l'aide de l'API REST avec Python + Django Rest framework + igGrid
Exercice pratique d'analyse de données avec Python ~ 2016 New Coder Survey Edition ~
Exemple à utiliser après l'authentification OAuth de l'API BOX avec Python
Informations sur la carte de base à l'aide de la conversion Geotiff Python des données numériques d'élévation
Exploration avec Python et Twitter API 2-Implémentation de la fonction de recherche d'utilisateurs
Liens vers des personnes qui commencent tout juste l'analyse de données avec python
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python