[Python] Obtenez tous les commentaires à l'aide de Youtube Data Api

introduction

Je regarde souvent Youtube, mais si vous faites défiler les commentaires sur le site Youtube, les données suivantes seront acquises dans une certaine mesure et affichées. Si c'est une vidéo populaire, il y a plus de 1000 commentaires, mais il est difficile de tous les voir, donc c'est environ 100 du haut (par ordre d'évaluation de tri) que vous voyez réellement.

J'ai été impressionné par la vidéo de "[Comment gagner GACKT] Parler de la migration à l'étranger, du mode de vie, des affaires, des bénévoles --Youtube", alors veuillez commenter Je voulais tous les voir. Donc, j'ai pensé que si j'utilisais l'API Youtube Data, je pourrais obtenir tous les commentaires et les voir tous en même temps, alors j'ai essayé.

Sondage

Activation de la clé API

C'est la première fois que j'utilise l'API de données Youtube. Pour utiliser l'API de données Youtube, vous devez activer la clé API, j'ai donc renvoyé au site suivant. Obtenez des commentaires Youtube Live à l'aide de l'API de données Youtube

Google Colaboratory Cette fois, je voulais permettre à quiconque d'obtenir facilement des commentaires, et je voulais utiliser "Google Colaboratory", qui peut être utilisé immédiatement si j'avais un compte Google, donc je voulais utiliser Python comme langage de programmation.

Le site suivant correspondait exactement à votre demande. Obtenez des commentaires YouTube en Python

Obtenez des commentaires

J'ai ouvert Google Colaboratory, collé "getYouTubeComments.py" du site ci-dessus avec un copier-coller, réécrit la clé API et l'ID VIDEO, et je l'ai exécuté. J'ai pu obtenir un commentaire, mais lorsque je compare les commentaires de l'action cible, il manque quelque chose. Il y a un commentaire enfant par réponse dans le commentaire, mais ce programme n'a pas pu obtenir le commentaire enfant.

Obtenir les commentaires des enfants

Comment obtenir les commentaires des enfants? Je peux toujours obtenir le nombre de réponses, donc je comprends que si le nombre de réponses est de 1 ou plus, je devrais recevoir les commentaires des enfants. J'ai cherché et trouvé le site suivant, et le langage de programmation est PHP, mais tout ce que j'ai besoin de savoir, c'est comment cela fonctionne. Obtenez tous les commentaires YouTube - Bouillie endormie

Dans le cas des commentaires enfants, il peut être obtenu en passant l'ID parent (parentId) comme paramètre à la méthode comments.

Commentaire https://www.googleapis.com/youtube/v3/commentThreads
Commentaire enfant https://www.googleapis.com/youtube/v3/comments

spécification

La différence avec le programme référencé est que vous pouvez obtenir le nom d'utilisateur et les commentaires enfants en attribuant des numéros de série.

Les sauts de ligne de commentaire sont remplacés par des espaces demi-largeur au niveau du délimiteur de tabulation. Le format du commentaire est «html» ou «texte brut», mais il s'agit de «texte brut». L'ordre est «pertinence», par ordre décroissant d'évaluation. Les commentaires enfants ne sont pas dans un ordre particulier (même si vous spécifiez l'ordre, ils ne seront pas les mêmes que le site vidéo). Le numéro de série parent étant composé de 4 chiffres et le numéro de série enfant composé de 3 chiffres, si vous souhaitez obtenir des commentaires dépassant le nombre de chiffres, vous devez modifier et augmenter le nombre de chiffres à afficher.

000X	(commentaire)(Numéro similaire) (Nom d'utilisateur) (Numéro de réponse)
000X-00X	(Commentaire de l'enfant)(Bon numéro) (Nom d'utilisateur)

comment utiliser

Ouvrez Google Colaboratory, collez "getYouTubeComments.py" à partir du site ci-dessus avec un copier-coller, réécrivez la clé API et l'ID VIDEO, puis exécutez.

Entrez API_KEY

La clé API sera émise avec les identifiants d'activation de l'API YouTube Data API. Veuillez donc réécrire la clé API_KEY du programme dans la clé API émise.

Entrez l'ID vidéo

Par exemple, dans le cas de "https://www.youtube.com/watch?v=oeJ_b0iG9lM", oeJ_b0iG9lM est l'ID vidéo. Veuillez donc réécrire l'ID vidéo de la vidéo cible avec «Enter Video ID» du programme.

programme

getYouTubeComments.py


import requests
import json

URL = 'https://www.googleapis.com/youtube/v3/'
#Entrez la clé API ici
API_KEY = 'Entrez la clé API'
#Entrez votre ID vidéo ici
VIDEO_ID = 'Entrez l'ID vidéo'

def print_video_comment(no, video_id, next_page_token):
  params = {
    'key': API_KEY,
    'part': 'snippet',
    'videoId': video_id,
    'order': 'relevance',
    'textFormat': 'plaintext',
    'maxResults': 100,
  }
  if next_page_token is not None:
    params['pageToken'] = next_page_token
  response = requests.get(URL + 'commentThreads', params=params)
  resource = response.json()

  for comment_info in resource['items']:
    #commentaire
    text = comment_info['snippet']['topLevelComment']['snippet']['textDisplay']
    #Bon nombre
    like_cnt = comment_info['snippet']['topLevelComment']['snippet']['likeCount']
    #Nombre de réponses
    reply_cnt = comment_info['snippet']['totalReplyCount']
    #Nom d'utilisateur
    user_name = comment_info['snippet']['topLevelComment']['snippet']['authorDisplayName']
    # Id
    parentId = comment_info['snippet']['topLevelComment']['id']
    print('{:0=4}\t{}\t{}\t{}\t{}'.format(no, text.replace('\n', ' '), like_cnt, user_name, reply_cnt))
    if reply_cnt > 0:
      cno = 1
      print_video_reply(no, cno, video_id, next_page_token, parentId)
    no = no + 1

  if 'nextPageToken' in resource:
    print_video_comment(no, video_id, resource["nextPageToken"])

def print_video_reply(no, cno, video_id, next_page_token, id):
  params = {
    'key': API_KEY,
    'part': 'snippet',
    'videoId': video_id,
    'textFormat': 'plaintext',
    'maxResults': 50,
    'parentId': id,
  }

  if next_page_token is not None:
    params['pageToken'] = next_page_token
  response = requests.get(URL + 'comments', params=params)
  resource = response.json()

  for comment_info in resource['items']:
    #commentaire
    text = comment_info['snippet']['textDisplay']
    #Bon nombre
    like_cnt = comment_info['snippet']['likeCount']
    #Nom d'utilisateur
    user_name = comment_info['snippet']['authorDisplayName']

    print('{:0=4}-{:0=3}\t{}\t{}\t{}'.format(no, cno, text.replace('\n', ' '), like_cnt, user_name))
    cno = cno + 1

  if 'nextPageToken' in resource:
    print_video_reply(no, cno, video_id, resource["nextPageToken"], id)

#Obtenez tous les commentaires
video_id = VIDEO_ID
no = 1
print_video_comment(no, video_id, None)

Résultat d'exécution

Lorsque vous obtenez le commentaire vidéo de "[Comment gagner GACKT] Parlons de la migration à l'étranger, du mode de vie, des affaires, des bénévoles - YouTube", c'est comme suit. Devenir.

Exemple d'acquisition de commentaires


0006 Non seulement le contenu, mais j'ai également étudié comment parler et écouter. Nous ferons de notre mieux pour faire comprendre aux enfants que l'expérience de relever des défis est un trésor irremplaçable. 622 Un homme a essayé une classe 9
0006-001 Je suis profondément ému de le voir dans la section commentaires ici. Il semble y avoir une bonne chose aujourd'hui 0 Akari Hoshino
      ⋮
0006-008 J'étudie toujours 14 Eau.
0006-009 Herbe véritable 16
0007 Achan est doué pour écouter l'histoire. Je réponds souvent avec des mots courts comme "Hey" ou "Is it Niigata?", Mais je dessine régulièrement l'histoire de GACKT 67 L'influence d'une goutte 0

finalement

Le calendrier de l'Avent arrive bientôt. Nous recherchons également des articles pour "Visual Basic Advent Calendar 2020" cette année également. Avec cela, il semble que vous puissiez l'essayer avec Visual Basic ou Excel au lieu de Python.

Recommended Posts

[Python] Obtenez tous les commentaires à l'aide de Youtube Data Api
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
[Python] J'ai essayé d'obtenir diverses informations en utilisant l'API de données YouTube!
Obtenez des données Youtube avec python
Obtenez des données LEAD à l'aide de l'API REST de Marketo en Python
[Python] Obtenez des données insight à l'aide de l'API Google My Business
Obtenez des commentaires et des abonnés avec l'API de données YouTube
Obtenir des données Salesforce à l'aide de l'API REST
Acquisition de données à l'aide de l'API googlemap de 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
Python> dictionnaire> values ()> Obtenir toutes les valeurs à l'aide de values ()
J'ai essayé d'utiliser l'API de données YOUTUBE V3
Obtenez les données de l'API Google Fit en Python
Créer une feuille de calcul Google à l'aide de l'API Python / Google Data
Obtenir l'URL de l'image à l'aide de l'API Flickr en Python
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Nettoyage des données à l'aide de Python
Comment obtenir des données d'article à l'aide de l'API Qiita
Obtenez des commentaires sur youtube Live avec [python] et [pytchat]!
Mettre en ligne des vidéos à l'aide de l'API YouTube
Analyse de données à l'aide de pandas python
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
Obtenez des données de l'API d'analyse avec le client API Google pour python
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
Obtenez des données LeapMotion en Python.
Obtenir des données de Quandl en Python
[Python3] Google translate google translation sans utiliser l'API
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
[Python] Obtenez des données économiques avec DataReader
Mémo d'acquisition de données à l'aide de l'API Backlog
python Obtenez la météo à venir de l'API météo
Essayez d'utiliser l'API d'action de Python argparse
Exécutez Ansible à partir de Python à l'aide de l'API
Obtenez des données de Twitter avec Tweepy
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Collectez des informations sur les produits et traitez les données à l'aide de l'API de recherche de produits Rakuten [Python]
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 Wunderlist en Python
[Note] Obtenir des données de PostgreSQL avec Python
Obtenir l'équilibre Suica en Python (en utilisant libpafe)
Collectez des informations vidéo sur "Chanter avec XX personnes" [Python] [API de données Youtube]
Essayez d'utiliser l'API Kraken avec Python
Obtenez des données alimentaires avec l'API Amazon (Python)
Recevoir des e-mails à l'aide de l'API Gmail en Java
Tweet à l'aide de l'API Twitter en Python
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
[Python] Divers traitements de données utilisant le tableau Numpy
[Python] Obtenez des informations sur le package Python avec l'API PyPI
Collecte de données FX à l'aide de l'API REST OANDA
Connaissance de l'utilisation de l'API de données Aurora Severless
Obtenez des données via l'API Salesforce (API en masse) en Python et chargez-les dans BigQuery
Obtenez des données de séries chronologiques de k-db.com avec Python
Procédure pour utiliser l'API WEB de TeamGant (en utilisant python)
Essayez d'utiliser l'API BitFlyer Ligntning en Python
J'ai essayé d'obtenir des données CloudWatch avec Python