[PYTHON] Obtenez des commentaires et des abonnés avec l'API de données YouTube

Ce que je voulais faire

Pour un groupe d'utilisateurs qui déplacent des commentaires vers un canal spécifique, obtenez le canal que chaque utilisateur a enregistré. Est-il possible d'estimer la clientèle de cette manière? Supposition. S'il y a plusieurs utilisateurs qui ont enregistré le même canal, il est possible que la base de clients soit ceux qui sont intéressés par les sujets de ce canal. (Il n'a pas été vérifié si la clientèle peut être estimée, je la posterai donc quelque part si possible)

Expliquer

  1. Comment joindre des commentaires à des vidéos publiées sur une chaîne spécifique
  2. Comment faire enregistrer le canal par le canal spécifié

Je l'ai déjà expliqué, alors ne l'expliquez pas cette fois.

La description

1. Comment joindre des commentaires à des vidéos publiées sur une chaîne spécifique

import requests
import pandas as pd

def get_comment_info(channel_id, pageToken):
    comment_url = "https://www.googleapis.com/youtube/v3/commentThreads"
    param = {
        'key': 【Browser Key】
        , 'allThreadsRelatedToChannelId': channel_id
        , 'part': 'replies, snippet'
        #Si vous n'avez pas besoin d'obtenir l'arborescence des réponses, vous n'avez pas besoin de réponses
        , 'maxResults': '50'
        , 'pageToken': pageToken
    }

    req = requests.get(comment_url, params=param)
    return req.json()

comment_df = pd.DataFrame([]*3, columns=["video_id", "author_name", "channel_id"])

for comment_thread in req["items"]:
    video_id = comment_thread["snippet"]["videoId"]
    
    author_name = comment_thread["snippet"]["topLevelComment"]["snippet"]["authorDisplayName"]
    author_channel = comment_thread["snippet"]["topLevelComment"]["snippet"]["authorChannelId"]["value"]
    comment_df = comment_df.append(pd.DataFrame([[video_id, author_name, author_channel]], columns=["video_id", "author_name", "channel_id"]))
    
    if "replies" in comment_thread and "comments" in comment_thread["replies"]:
        for replies in comment_thread["replies"]["comments"]:
            author_name = replies["snippet"]["authorDisplayName"]
            author_channel = replies["snippet"]["authorChannelId"]["value"]
            comment_df = comment_df.append(pd.DataFrame([[video_id, author_name, author_channel]], columns=["video_id", "author_name", "channel_id"]))

Les points sont les deux suivants

De plus, dans l'exemple ci-dessus, seuls le nom du canal et le channel_id de la personne qui a commenté sont acquis, mais si vous souhaitez acquérir le texte du commentaire, vous pouvez l'acquérir ci-dessous.

Veuillez consulter ce document pour plus de détails ou pour une utilisation légèrement différente. Par exemple, cette fois, nous spécifions channel_id pour obtenir des commentaires associés à toutes les vidéos publiées sur cette chaîne, mais il est également possible de ne spécifier que des vidéos spécifiques. https://developers.google.com/youtube/v3/docs/commentThreads?hl=ja

2. Comment enregistrer la chaîne par la chaîne spécifiée

def get_subscription_info(channel_id, pageToken):
    subscription_url = 'https://www.googleapis.com/youtube/v3/subscriptions'
    param = {
        'key': 【Browser Key】
        , 'channelId': channel_id
        , 'part': 'snippet'
        , 'maxResults': '50'
        , 'pageToken': pageToken
    }

    req = requests.get(subscription_url, params=param)
    return req.json()

subscription_df = pd.DataFrame([]*3, 
    columns=["channel_id", "subscript_channel_name", "subscript_channel_id"])

#Passer une chaîne vide à pageToken revient à ne rien spécifier
# 1.Si vous exécutez le code que vous avez entré_id_list = comment_df["channel_id"].unique()devenir
for channel_id in channel_id_list:

    pageToken = ""
    while True:
        req = get_subscription_info(channel_id, pageToken)

        if "items" in req:
            for item in req["items"]:
                subscript_channel_name = item["snippet"]["title"]
                subscript_channel_id = item["snippet"]["resourceId"]["channelId"]
                subscription_df = subscription_df.append(
                    pd.DataFrame(
                        [[channel_id, subscript_channel_name, subscript_channel_id]]
                        , columns=["channel_id", "subscript_channel_name", "subscript_channel_id"]
                    )
                )


        #Si le nombre d'éléments restants dépasse maxResults, nextPageToken sera retourné.
        if "nextPageToken" in req:
            pageToken = req["nextPageToken"]
            print(channel_id, pageToken)
        else:
            break

Utilisez l'API Subscriptions avec la traduction japonaise en tant que sous-catégorie https://developers.google.com/youtube/v3/docs/subscriptions?hl=ja

Quant à savoir comment l'utiliser, j'ai expliqué comment obtenir videoId à partir de playlistId avant, mais l'atmosphère est similaire à cela. https://qiita.com/miyatsuki/items/c221b48830db2b0a9eba#12-%E3%83%97%E3%83%AC%E3%82%A4%E3%83%AA%E3%82%B9%E3%83%88id%E3%81%8B%E3%82%89%E5%8B%95%E7%94%BB%E3%81%AEid%E3%82%92%E5%8F%96%E5%BE%97

En particulier,

Recommended Posts

Obtenez des commentaires et des abonnés avec l'API de données YouTube
Obtenez des commentaires sur youtube Live avec [python] et [pytchat]!
Obtenez le nombre d'abonnés Youtube
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Obtenez des vacances avec l'API Google Agenda
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Obtenez l'objet et le corps de Gmail avec Python et l'API Gmail
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
[CGI] Exécutez le programme Python du serveur avec Vue.js + axios et obtenez les données de sortie
Appelez l'API avec python3.
Obtenez un classement avec l'API Rakuten
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Obtenez des données à l'aide de l'API du ministère des Affaires intérieures et des Communications
Débarrassez-vous des données sales avec Python et les expressions régulières
Résolvez le livre en spirale (algorithme et structure de données) avec python!
Rationalisez la collecte d'informations avec l'API Twitter et les robots Slack
Obtenez des champs de chat en direct YouTube en temps réel avec l'API
Obtenez des données de l'API d'analyse avec le client API Google pour python
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
Fabriquez un thermomètre BLE et obtenez la température avec Pythonista3
Obtenez la météo en utilisant l'API et laissez Raspberry Pi parler!
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Jouez avec l'API de données YouTube v3 à l'aide du client Python de l'API Google
Obtenez le prix d'achat et de vente de la monnaie virtuelle avec l'API de l'échange Zaif et créez un graphique
Obtenir des données Salesforce à l'aide de l'API REST
Obtenez le nombre de PV d'articles Qiita que vous avez publiés avec l'API
Bénéficiez de l'environnement le plus puissant avec VS Code, Remote-Containers et Remote Docker-Daemon
Obtenez les données de graduation complètes pour bitflyer
Obtenez des conversions et des revenus avec l'API Google Analytics et faites un rapport à Slack
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Obtenez la météo avec les requêtes Python
Obtenez la météo avec les requêtes Python 2
[Python] Obtenez des données économiques avec DataReader
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Accordez un jeton d'accès avec la commande curl et POST l'API
Obtenez des données Amazon à l'aide de Keep API # 1 Obtenez des données
[Python] J'ai essayé d'obtenir diverses informations en utilisant l'API de données YouTube!
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
Collectez des informations vidéo sur "Chanter avec XX personnes" [Python] [API de données Youtube]
Comment obtenir la différence de date et d'heure en secondes avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
[Mémo personnel] Obtenez des données sur le Web et faites-en un DataFrame
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Envoyer et recevoir des données d'image au format JSON en Python sur le réseau
Lisez l'image du graphique avec OpenCV et obtenez les coordonnées du point final du graphique
Recevez des nouvelles de chacune des trois principales entreprises de téléphonie mobile en utilisant Django et l'API News
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
Tracez plusieurs cartes et données en même temps avec matplotlib de Python
Obtenez des données supplémentaires vers LDAP avec python
Construction de pipeline de données avec Python et Luigi
Accéder à l'API Docker Remote avec des requêtes
[Note] Obtenir des données de PostgreSQL avec Python
Obtenez des données alimentaires avec l'API Amazon (Python)
Obtenez la liste des colonnes et la liste des données de CASTable
J'ai essayé d'utiliser l'API de données YOUTUBE V3
[Python] Récupère le nom de la variable avec str
Obtenez des données de Cloudant avec le flacon Bluemix
Obtenez les débats parlementaires via l'API
Obtenez les données de l'API Google Fit en Python