Ermitteln Sie für eine Gruppe von Benutzern, die Kommentare auf einen bestimmten Kanal verschieben, welchen Kanal jeder Benutzer registriert hat. Ist es möglich, den Kundenstamm auf diese Weise zu schätzen? Annahme. Wenn mehrere Benutzer denselben Kanal registriert haben, ist es möglich, dass der Kundenstamm diejenigen sind, die an den Themen dieses Kanals interessiert sind. (Es wurde nicht überprüft, ob der Kundenstamm geschätzt werden kann, daher werde ich ihn nach Möglichkeit irgendwo wieder veröffentlichen.)
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'
#Wenn Sie den Antwortbaum nicht benötigen, benötigen Sie keine Antworten
, '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"]))
Die Punkte sind die folgenden zwei
Im obigen Beispiel werden nur der Kanalname und die Kanal-ID der kommentierten Person erfasst. Wenn Sie jedoch den Text des Kommentars abrufen möchten, können Sie ihn unten abrufen.
comment_thread["snippet"]["topLevelComment"]["snippet"]["textDisplay"]
replies["snippet"]["textDisplay"]
Bitte überprüfen Sie dieses Dokument für Details oder für eine etwas andere Verwendung. Diesmal geben wir beispielsweise channel_id an, um Kommentare zu allen auf diesem Kanal geposteten Videos abzurufen. Es ist jedoch auch möglich, nur bestimmte Videos anzugeben. https://developers.google.com/youtube/v3/docs/commentThreads?hl=ja
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"])
#Das Übergeben einer leeren Zeichenfolge an pageToken entspricht der Angabe von nichts
# 1.Wenn Sie den Code ausführen, den Sie eingegeben haben_id_list = comment_df["channel_id"].unique()werden
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"]
)
)
#Wenn die Anzahl der verbleibenden Elemente maxResults überschreitet, wird nextPageToken zurückgegeben.
if "nextPageToken" in req:
pageToken = req["nextPageToken"]
print(channel_id, pageToken)
else:
break
Verwenden Sie die Abonnement-API mit japanischer Übersetzung als Unterkategorie https://developers.google.com/youtube/v3/docs/subscriptions?hl=ja
In Bezug auf die Verwendung habe ich zuvor erklärt, wie man eine Video-ID von der Wiedergabelisten-ID erhält, aber die Atmosphäre ist ähnlich. 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
Speziell,