前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
YoutubeAPIを活用して今後のYoutube活動における調査を行うと利用をしてみようと考えております。
https://su-gi-rx.com/archives/4528#i-2
のサイトなどでキーワードなどで調べて出てくる動画チャンネルの分析をひとまずCSV吐き出しで行おうと考えておりまして、コピーして行ったのですが、なかなかうまくいきません。
初歩的なミスや相談になっているかもしれませんが、何卒ご助言頂ければ幸いです。
発生している問題・エラーメッセージ
エラーメッセージ
HttpError Traceback (most recent call last)
<ipython-input-19-e6b6718e68d1> in <module>()
33 maxResults = 50,
34 order = "date", #日付順にソート
---> 35 pageToken = nextpagetoken #再帰的に指定
36 ).execute()
37
1 frames
/usr/local/lib/python3.7/dist-packages/googleapiclient/_helpers.py in positional_wrapper(*args, **kwargs)
132 elif positional_parameters_enforcement == POSITIONAL_WARNING:
133 logger.warning(message)
--> 134 return wrapped(*args, **kwargs)
135
136 return positional_wrapper
/usr/local/lib/python3.7/dist-packages/googleapiclient/http.py in execute(self, http, num_retries)
913 callback(resp)
914 if resp.status >= 300:
--> 915 raise HttpError(resp, content, uri=self.uri)
916 return self.postproc(resp, content)
917
HttpError: <HttpError 400 when requesting https://youtube.googleapis.com/youtube/v3/search?part=snippet&channelId=channelId&maxResults=50&order=date&key=[入力したkeyがひょうじされている]&alt=json returned "Request contains an invalid argument.". Details: "Request contains an invalid argument.">
該当のソースコード#
python
1 2from apiclient.discovery import build 3import pandas as pd 4from apiclient.discovery import build 5from apiclient.errors import HttpError 6 7# API情報 8API_KEY = 'API KEY' 9YOUTUBE_API_SERVICE_NAME = 'youtube' 10YOUTUBE_API_VERSION = 'v3' 11 12youtube = build( 13 YOUTUBE_API_SERVICE_NAME, 14 YOUTUBE_API_VERSION, 15 developerKey=API_KEY 16 ) 17 18search_response = youtube.search().list( 19 q='[キーワード]', 20 part='id,snippet', 21 maxResults=25 22).execute() 23 24channels = [] 25 26for search_result in search_response.get("items", []): 27 if search_result["id"]["kind"] == "youtube#channel": 28 channels.append([search_result["snippet"]["title"], 29 search_result["id"]["channelId"]]) 30 31for channel in channels: 32 print(channel) 33 34
API_KEY = 'API KEY' YOUTUBE_API_SERVICE_NAME = 'youtube' YOUTUBE_API_VERSION = 'v3' CHANNEL_ID = 'channelId' channels = [] #チャンネル情報を格納する配列 searches = [] #videoidを格納する配列 videos = [] #各動画情報を格納する配列 nextPagetoken = None nextpagetoken = None youtube = build( YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=API_KEY ) channel_response = youtube.channels().list( part = 'snippet,statistics', id = CHANNEL_ID ).execute() for channel_result in channel_response.get("items", []): if channel_result["kind"] == "youtube#channel": channels.append([channel_result["snippet"]["title"],channel_result["statistics"]["subscriberCount"],channel_result["statistics"]["videoCount"],channel_result["snippet"]["publishedAt"]]) while True: if nextPagetoken != None: nextpagetoken = nextPagetoken search_response = youtube.search().list( part = "snippet", channelId = CHANNEL_ID, maxResults = 50, order = "date", #日付順にソート pageToken = nextpagetoken #再帰的に指定 ).execute() for search_result in search_response.get("items", []): if search_result["id"]["kind"] == "youtube#video": searches.append(search_result["id"]["videoId"]) try: nextPagetoken = search_response["nextPageToken"] except: break for result in searches: video_response = youtube.videos().list( part = 'snippet,statistics', id = result ).execute() for video_result in video_response.get("items", []): if video_result["kind"] == "youtube#video": videos.append([video_result["snippet"]["title"],video_result["statistics"]["viewCount"],video_result["statistics"]["likeCount"],video_result["statistics"]["dislikeCount"],video_result["statistics"]["commentCount"],video_result["snippet"]["publishedAt"]]) videos_report = pd.DataFrame(videos, columns=['title', 'viewCount', 'likeCount', 'dislikeCount', 'commentCount', 'publishedAt']) videos_report.to_csv("videos_report.csv", index=None) channel_report = pd.DataFrame(channels, columns=['title', 'subscriberCount', 'videoCount', 'publishedAt']) channel_report.to_csv("channels_report.csv", index=None)
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
GoogleColab
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。