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

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

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

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

YouTube API

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

Q&A

解決済

1回答

1610閲覧

youtube api で 結果が重複してしまう、リクエスト回数がすぐに制限を超えてしまう

Teviz

総合スコア3

Python 3.x

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

YouTube API

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

0グッド

1クリップ

投稿2022/04/08 06:01

youtube api で 「channels」の'statistics''subscriberCount' と「search」の'snippet'、'channelTitle' を取得したいのですが
結果が重複してしまう、リクエスト回数がすぐに制限を超えてしまう 状態が起きています
結果の重複を無くしたいのと、リクエスト回数を減らすにはどのような
構文にすれば良いのか教えていただけないでしょうか
宜しくお願いします

検索キーワードは島根県です
「maxResults=」はとりあえず 1で検索してみました 最終的に50で検索したいです

from googleapiclient.discovery import build API_KEY = 'AIzaSyDKNsq9YfvfoxeJ5qNvSmZncKelTDqLlO8' YOUTUBE_API_SERVICE_NAME = 'youtube' YOUTUBE_API_VERSION = 'v3' youtube = build(YOUTUBE_API_SERVICE_NAME,YOUTUBE_API_VERSION,developerKey=API_KEY) pageToken = None while True: response = youtube.search().list(q='島根県',part='snippet',type='channel',maxResults=1,pageToken=pageToken).execute() for item_1 in response['items']: search_response = youtube.channels().list(part='statistics',id=item_1['snippet']['channelId'],maxResults=1 ).execute() for item_2 in search_response['items']: print(item_1['snippet']['channelTitle'],item_2['statistics'].get('subscriberCount', 0)) pageToken = response.get("nextPageToken") if pageToken is None: break

〜〜〜〜結果とエラー〜〜〜〜

しまねっこCH 14800
Feel the Nature, Shimane - 島根県 2560
島根県雲南市公式YouTube 597
島根県大田市公式チャンネル Oda-city 1290
島根県大田市公式チャンネル Oda-city 1290
ZO-chan【島根県消費者センター 公式】 27
島根県 飯南町 52
曹洞宗島根県第二宗務所 0
島根県高体連剣道専門部 314
島根きんちゃいTV 14200
島根県国際観光 36
島根県信用保証協会 36
選挙管理委員会島根県 20
島根県夫婦チャンネル 0
島根県の新築住宅情報『ピース島根』チャンネル 15
島根県警察公式チャンネル みこぴーチャンネル 531
島根県歯科医師会 0
島根県信用保証協会 36
島根県浜田市のトリミングドッグサロンメルシー 66
島根県警察公式チャンネル みこぴーチャンネル 531
島根県観光キャラクター「しまねっこ」 2510
鳥取・島根バラエティ ラズダTV 11600
島根県 西ノ島町 410
立憲民主党島根県総支部連合会 43
公明党島根県本部 33
公明党島根県本部 33
島根県 雲南市観光協会 147
島根県立大学軽音楽部 329
島根県美郷町議会 118
島根県奥出雲町 24
島根県 雲南市観光協会 147
島根県美郷町 532
島根県 カナール 25
島根県奥出雲町 24
島根県奥出雲町 24
開星中学高校公式チャンネル 361
島根県西部視聴覚障害者情報センター 8
社会福祉法人島根県社会福祉事業団 4
しまね移住project 262
一般社団法人 島根県建設業協会 29
島根県津和野町役場 301
NPO法人島根県障がい者就労事業振興センター 19
島根県LPガス協会 11
島根県神社庁 4
一般社団法人 島根県建設業協会 29
島根県 美郷町観光協会 30
1ちゃん!日本海テレビ 10400
しまね企業発見NAVI 69
島根県邑南町公式チャンネル 33
ホンダカーズ島根東 19
島根県邑南町公式チャンネル 33
島根の釣りファミリー 0
島根県/出雲北陵高等学校吹奏楽部/指揮:片寄哲夫 - Topic 4
島根県/出雲市立第一中学校吹奏楽部/指揮:原田 実 - Topic 5
島根県高等学校PTA連合会 231
公益財団法人しまね産業振興財団 公式チャンネル 54
デッツォーラ島根E.C U-12【島根県邑南町少年サッカー】 55
デッツォーラ島根E.C U-12【島根県邑南町少年サッカー】 55
デッツォーラ島根E.C U-12【島根県邑南町少年サッカー】 55
しまね移住project 262
縁結太郎【島根県玉造温泉】 149
島根県江津市の江の川鍼灸整骨院チャンネル 0
縁結太郎【島根県玉造温泉】 149
うみのどうがチャンネル presented by海と日本プロジェクトinしまね 0
定住切望チャンネル(島根県大田市) 134
しまね館の縁結び 89
しまね館の縁結び 89
島根県立情報科学高等学校 53
ホンダカーズ島根東 19
島根県江津市の江の川鍼灸整骨院チャンネル 0
お菓子の箱なら【パッケージ中澤】(島根県松江市) 83
一般社団法人 島根県測量設計業協会 26
ご縁の国しまね 0
yakumonuri JPN 5
NPO法人しまねMICE推進協議会 16
ジョブカフェしまね 380
島根リハビリテーション学院 101
島根県移住ナビ 3
島根県出雲市立塩冶小学校 25
島根リハビリテーション学院 101
協同組合島根県鐵工会 1
SKRYU 34900
SKRYU 34900
松江観光公式チャンネル 860
株式会社 長岡塗装店 28
みーもチャンネル島根県水と緑の森づくり 6
国民民主党島根県総支部連合会 6
古代文化講座島根県 0
メガネ屋「長谷川」 出雲の国の認定眼鏡士(島根県松江市) 11
島根県移住ナビ 3
島根県高文連放送専門部 2
島根県社会福祉士会 2
島根県宿泊事業者感染対策等支援補助金事務局 0
島根県社会福祉士会 2
島根県宿泊事業者感染対策等支援補助金事務局 0
島根県吹奏楽連盟浜田支部 43
シーエルタイヤTV 30900
島根県自転車競技連盟 3
平田仮面【島根県の遣島使 18

Traceback (most recent call last):
File "/Users/テスト用", line 14, in <module>
search_response = youtube.channels().list(part='statistics',id=item_1['snippet']['channelId'],maxResults=1 ).execute()
File "/Users/~~python3.8/site-packages/googleapiclient/_helpers.py", line 131, in positional_wrapper
return wrapped(*args, **kwargs)
File "/Users/~~python3.8/site-packages/googleapiclient/http.py", line 937, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://youtube.googleapis.com/youtube/v3/channels?part=statistics&id=UC7efA5WYStT9PH7hIG1OK3A&maxResults=1&key=AIzaSyDKNsq9YfvfoxeJ5qNvSmZncKelTDqLlO8&alt=json returned "The request cannot be completed because you have exceeded your <a href="/youtube/v3/getting-started#quota">quota</a>.". Details: "[{'message': 'The request cannot be completed because you have exceeded your <a href="/youtube/v3/getting-started#quota">quota</a>.', 'domain': 'youtube.quota', 'reason': 'quotaExceeded'}]">

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

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

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

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

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

guest

回答1

0

ベストアンサー

検索結果の重複について

・手元で試しましたが、search().list でキーワード検索を実行する場合、検索結果の重複は回避できないようです。maxResults=50でもランダムに重複が発生します。
「ランダムに」とは、不規則に重複したデータが混ざっている、という意味です。

API消費量について

APIの消費量は下記のページに記載してあります。
https://developers.google.com/youtube/v3/determine_quota_cost

・search().list は1回実行するごとに、100消費します。
仮にAPIの割当が「10000/日」である場合、100回実行すると割当量を超えてそれ以上検索できなくなります。(割当量は太平洋標準時 0:00[日本標準時で 17:00頃]にリセットされます)
したがって、search().list を実行するときは maxResults=50を指定することを推奨します。
maxResults=50maxResults=1も、どちらも1回実行して 100 消費することに変わりはありません。
1回 実行して50個結果が返ってくる方が効率が良いです)

・一方、channels().list は1回あたり、1しか消費しません。
channels().listでチャンネルIDを1件指定した場合、通常、結果は1つしか返ってきませんが、
心配ならmaxResults=50 を指定しておけば特に問題ないと思います。

・クォータが10000/日で、チャンネル1件につき、1回だけchannels().list でチャンネル情報を取得すると仮定すると、
一日当たり最大で66*50=3300件のチャンネルに対して登録者数取得試行が可能ということになります。(ただしこの3300件には重複を含みます)

投稿2022/04/08 09:09

編集2022/04/08 11:59
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Teviz

2022/04/08 12:25

回答ありがとうございます 詳しい説明ありがとうございます maxResults=50 でやってみようと思います search().list と channels().listで 回数が違うのですね ありがとうございます 重複するんですね、試していただきありがとうございました 本当にありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問