[PYTHON] [Chocopla] Extrayez les rapports de dommages de la section des commentaires du championnat Bad Face

introduction

Tout d'abord, jetez un œil à ceci. [Plan] Championnat Bad Face https://www.youtube.com/watch?v=IEkLSfs1F68

Environnement d'exploitation

Détails d'implémentation

Code source

get_youtube_comments.py


import json
import re

import pandas as pd
import requests

API_KEY = 'Entrez votre clé API'
VIDEO_ID = 'IEkLSfs1F68'


def get_comment_info(api_key, video_id, page_token):
    comment_url = 'https://www.googleapis.com/youtube/v3/commentThreads'
    param = {
        'key': api_key,
        'videoId': video_id,
        'part': 'replies, snippet',
        'maxResults': '100',
    }

    if page_token:
        param['pageToken'] = page_token

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


def get_video_comments(api_key, video_id):
    comments = []
    page_token = ''

    while page_token != None:
        resource = get_comment_info(api_key, video_id, page_token)

        for comment_thread in resource['items']:
            #Obtenez des commentaires
            comment = comment_thread['snippet']['topLevelComment']['snippet']['textDisplay']
            comments.append(comment)

            if ('replies' in comment_thread) and ('comments' in comment_thread['replies']):
                for replies in comment_thread['replies']['comments']:
                    #Obtenez des commentaires
                    reply_comment = replies['snippet']['textDisplay']
                    comments.append(reply_comment)

        if 'nextPageToken' in resource:
            page_token = resource['nextPageToken']
        else:
            page_token = None
    return comments


#Obtenez une liste de commentaires
comments = get_video_comments(API_KEY, VIDEO_ID)
#Supprimer la balise de saut de ligne
comments = list(map(lambda x: re.sub('<br />', '', x), comments))


target_list = []
report_comment_list = []

for comment in comments:
    target = re.findall('[Nagata|Matsuo]+[1-31-3①②③]', comment)
    #S'il y en a plusieurs, seule la valeur unique est extraite
    target = list(set(target))

    passive_words = re.findall('(Était|Était|Était là|Était là)', comment)

    if len(target) > 0 and len(passive_words) > 0:
        #S'il y a plusieurs cibles dans un commentaire, ajoutez chaque cible à la liste.
        for t in target:
            target_list.append(t)
            report_comment_list.append(comment)

df = pd.DataFrame({'target': target_list, 'comment': report_comment_list})

#Afficher plusieurs éléments au hasard
df.sample(5, random_state=42)

Résultat d'exécution

print(df.shape)
->(178, 2)

Il semble qu’un total de 178 rapports de dommages aient été soumis.

	target	comment
19 Matsuo ② J'avais vraiment peur parce que je le poursuivais sans relâche. J'étais inquiet parce que j'avais un jeune enfant dans le dos...
45 Nagata ① Parker a été volé par Nagata ①.
24 Nagata ③ Nagata ③ De plus, il y a beaucoup d'informations dont j'avais parlé aux résidents voisins selon lesquels "Dieu m'a pris la main" auparavant....
30 Matsuo ② Matsuo ② ont volé 96 crabes.
67 Matsuo ① Matsuo ①, Nagata ② et Matsuo ③ m'ont arnaqué.

Je suis curieux de connaître le n ° 24.

Sommaire

Chocopla est bon ~

Lien de référence

J'ai été autorisé à faire référence. Merci beaucoup. [Python] Obtenez tous les commentaires à l'aide de YouTube Data Api Obtenez des commentaires et des abonnés avec l'API de données YouTube Chocolate Planet Channel

Recommended Posts

[Chocopla] Extrayez les rapports de dommages de la section des commentaires du championnat Bad Face
Extrait uniquement complet du résultat de Trinity