質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Q&A

解決済

1回答

705閲覧

youtubeAPIでチャンネル内で特定のワードの検索結果数を知りたい。

thaqulla

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

0グッド

0クリップ

投稿2022/01/14 02:19

前提・実現したいこと

例としてホロライブ所属の鷹嶺ルイ氏のチャンネルを例に挙げる。

彼女のチャンネルでは「ほぼ毎日ショート」の名を冠する投稿が今日までに40本ほどある。これをAPIで数値として出力したいと思ったが、浅学故詰まってしまったためご助力願いたい。

python3.8.5

試行1

from apiclient.discovery import build API_KEY = "自分のAPIキー" cid = "UCs9_O1tRPMQTHQ-N_L6FU2g"#鷹嶺ルイ vid = "Re3IIEU_vdE"#鷹嶺ルイ ほぼ毎日ショート#38 def YoutubeDetails(vid, API_KEY): API_SERVICE_NAME = "youtube" API_VERSION = "v3" youtube = build(API_SERVICE_NAME, API_VERSION, developerKey=API_KEY) response = youtube.videos().list( part = "id", id = vid, # channelId = cid, # q = "ほぼ毎日ショート",, ).execute() return response["pageInfo"] test = YoutubeDetails(vid, API_KEY) test

当然問題なく出力されたが、idにvideoId(ここではvid)を一件しか代入していないので

{'totalResults': 1, 'resultsPerPage': 1}

と一件しか出ない。私が行いたいのはチャンネル内での該当件数なのでダメもとで以下を追加。当然エラーになった。

該当のソースコード&エラー

from apiclient.discovery import build API_KEY = "自分のAPIキー" cid = "UCs9_O1tRPMQTHQ-N_L6FU2g"#鷹嶺ルイ vid = "Re3IIEU_vdE"#鷹嶺ルイ ほぼ毎日ショート#38 def YoutubeDetails(cid, vid, API_KEY): #cid追加 API_SERVICE_NAME = "youtube" API_VERSION = "v3" youtube = build(API_SERVICE_NAME, API_VERSION, developerKey=API_KEY) response = youtube.videos().list( part = "id", id = vid, channelId = cid,           #追加 q = "ほぼ毎日ショート",        #追加 ).execute() return response["pageInfo"] test = YoutubeDetails(cid, vid, API_KEY)  #cid追加 test
TypeError Traceback (most recent call last) <ipython-input-17-3b2c91a39a9d> in <module> 22 return response["pageInfo"] 23 ---> 24 test = YoutubeDetails(cid, vid, API_KEY) 25 26 test <ipython-input-17-3b2c91a39a9d> in YoutubeDetails(cid, vid, API_KEY) 13 youtube = build(API_SERVICE_NAME, API_VERSION, developerKey=API_KEY) 14 ---> 15 response = youtube.videos().list( 16 part = "id", 17 id = vid, ~\anaconda3\lib\site-packages\googleapiclient\discovery.py in method(self, **kwargs) 1017 for name in kwargs: 1018 if name not in parameters.argmap: -> 1019 raise TypeError('Got an unexpected keyword argument {}'.format(name)) 1020 1021 # Remove args that have a value of None. TypeError: Got an unexpected keyword argument channelId

channelIdとqはyoutube.videos()ではなくyoutube.search()のパラメータなのでエラーになるのは当然。しかしyoutube.search()では'totalResults'がないため私が欲しい情報が出ず困ってしまっている。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2022/01/14 04:28 編集

searchのAPIでもtotalResultsは帰ってきますよ YoutubeAPIのリファレンスのページで試せるので確認してはどうですか? 私が試したら { "kind": "youtube#searchListResponse", "etag": "U4qDFM32mY0XgJYC06dTPfz6rgE", "nextPageToken": "CAUQAA", "regionCode": "JP", "pageInfo": { "totalResults": 122, "resultsPerPage": 5 }, "items": [ こんな感じで帰ってきましたよ ただ、私はPythonに関してはわかりません
guest

回答1

0

ベストアンサー

下記でtotalResultsを得られると思います。(動画id指定を削除)

python

1(略) 2def YoutubeDetails(cid, vid, API_KEY): #cid追加 3 API_SERVICE_NAME = "youtube" 4 API_VERSION = "v3" 5 6 youtube = build(API_SERVICE_NAME, API_VERSION, developerKey=API_KEY) 7 8 response = youtube.search().list( 9 part = "id", 10 # id = vid, #削除 11 channelId = cid,#追加 12 q = "ほぼ毎日ショート",#追加 13 ).execute() 14 15 return response["pageInfo"] 16(略)

投稿2022/01/16 10:08

編集2022/06/05 14:37
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thaqulla

2022/01/16 17:08 編集

return response["pageInfo"] という戻り値を設定できるんですね!YoutubeAPIは似たような関数が多くて混乱していました。ありがとうございます!! 上記は隠れ全角スペースがあるのでここに from apiclient.discovery import build API_KEY = "自分のAPIキー" cid = "UCs9_O1tRPMQTHQ-N_L6FU2g"#鷹嶺ルイ def YoutubeDetails(cid, API_KEY):#cid追加 API_SERVICE_NAME = "youtube" API_VERSION = "v3" youtube = build(API_SERVICE_NAME, API_VERSION, developerKey=API_KEY) response = youtube.search().list( part = "id,snippet", channelId = cid,#追加 q = "ほぼ毎日ショート",#追加 ).execute() return response["pageInfo"] YoutubeDetails(cid, API_KEY)#cid追加 {'totalResults': 129, 'resultsPerPage': 5}
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問