[PYTHON] [Chocopla] Extrahiere Schadensberichte aus dem Kommentarbereich der Bad Face Championship

Einführung

Schauen Sie sich das bitte zuerst an. [Plan] Bad Face Championship https://www.youtube.com/watch?v=IEkLSfs1F68

Betriebsumgebung

Implementierungsdetails

Quellcode

get_youtube_comments.py


import json
import re

import pandas as pd
import requests

API_KEY = 'Geben Sie Ihren API-Schlüssel ein'
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']:
            #Erhalten Sie Kommentare
            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']:
                    #Erhalten Sie Kommentare
                    reply_comment = replies['snippet']['textDisplay']
                    comments.append(reply_comment)

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


#Holen Sie sich eine Liste der Kommentare
comments = get_video_comments(API_KEY, VIDEO_ID)
#Zeilenumbruch-Tag entfernen
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)
    #Wenn mehrere vorhanden sind, wird nur der eindeutige Wert extrahiert
    target = list(set(target))

    passive_words = re.findall('(War|War|War dort|War dort)', comment)

    if len(target) > 0 and len(passive_words) > 0:
        #Wenn ein Kommentar mehrere Ziele enthält, fügen Sie jedes Ziel zur Liste hinzu.
        for t in target:
            target_list.append(t)
            report_comment_list.append(comment)

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

#Zeigen Sie mehrere Elemente nach dem Zufallsprinzip an
df.sample(5, random_state=42)

Ausführungsergebnis

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

Es scheint, dass insgesamt 178 Schadensberichte eingereicht wurden.

	target	comment
19 Matsuo ② Ich hatte große Angst, weil ich ihm so unerbittlich nachjagte. Ich war besorgt, weil ich hinten ein kleines Kind hatte...
45 Nagata ① Parker wurde von Nagata ① gestohlen.
24 Nagata ③ Nagata ③ Darüber hinaus gibt es viele Informationen, die ich mit Nachbarn gesprochen habe, dass "Gott eine Hand mit mir genommen hat" von früher....
30 Matsuo ② Matsuo ② hat 96 Krabben gestohlen.
67 Matsuo (Matsuo), Nagata und Matsuo haben mich betrogen.

Ich bin neugierig auf Nr. 24.

Zusammenfassung

Chocopla ist gut ~

Referenzlink

Ich durfte mich beziehen. Vielen Dank. [Python] Alle Kommentare mit Youtube Data Api abrufen Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API Chocolate Planet Channel

Recommended Posts

[Chocopla] Extrahiere Schadensberichte aus dem Kommentarbereich der Bad Face Championship
Auszug nur vollständig aus dem Ergebnis von Trinity