前提・実現したいこと
Youtube API v3を使用し、あるチャンネルの情報を取得したい。
以下のようなコードを利用している。
動画の取得件数を制御したいが、方法がわからない。
元々のコードはネットから拾ったものなので、理解できていない場所もある。
発生している問題・エラーメッセージ
maxResultsの値で何件の動画を取得するかを設定できると理解しているが、
ここで設定した値と、実際に取得する動画の件数が全く違う。
50に設定すると450件、1に設定しても100件ほど取得してしまう。
該当のソースコード
python
1import os 2import time 3import requests 4import webbrowser 5import pandas as pd 6 7 8API_KEY = '????'' 9CHANNEL_ID = '?????' 10 11base_url = 'https://www.googleapis.com/youtube/v3' 12url = base_url + '/search?key=%s&channelId=%s&part=snippet&order=date&maxResults=1' 13infos = [] 14 15while True: 16 #time.sleep(30) 17 response = requests.get(url % (API_KEY, CHANNEL_ID)) 18 if response.status_code != 200: 19 print('エラーで終わり') 20 print(response.status_code) 21 break 22 result = response.json() 23 infos.extend([ 24 [item['id']['videoId'], item['snippet']['title'], item['snippet']['description'], item['snippet']['publishedAt']] 25 for item in result['items'] if item['id']['kind'] == 'youtube#video' 26 ]) 27 28 if 'nextPageToken' in result.keys(): 29 if 'pageToken' in url: 30 url = url.split('&pageToken')[0] 31 url += f'&pageToken={result["nextPageToken"]}' 32 else: 33 print('正常終了') 34 break 35 36videos = pd.DataFrame(infos, columns=['videoId', 'title', 'description', 'publishedAt']) 37videos.to_csv('videos2.csv', index=None) 38print(response) 39print(result) 40webbrowser.open(url % (API_KEY, CHANNEL_ID, MAX))
試したこと
URLをブラウザで直に入力してみる→正しい取得件数になる。
補足情報(FW/ツールのバージョンなど)
Python 3.7.4
他に何のバージョンを記せば良いかわかりません。
不足している情報がありましたら、ご教示いただければと思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。