Q&A
前提
現在配信されているYoutubeLiveのチャットのログを出力するプログラムをGoogleAppsScriptで作成しています。
チャットの取得自体はできるのですが、
・取得できるのは直近73件前後とその後の更新差分のみ
という状況で直近73件前後以前のチャットログの取得ができません。
実現したいこと
配信中のYoutubeLiveのチャットログを全件取得し、その後差分を取得し続けたい
※GASだと制限時間の制約がありますので、検討中ですが、Pythonへの移行も視野に入れています。
発生している問題・エラーメッセージ
該当のソースコード
function main() { const video_id = "配信中のYoutubeLiveのURL".replace("https://www.youtube.com/watch?v=",""); let pageToken =""; let video = YouTube.Videos.list('id,snippet, statistics', {id: video_id,}); const chatId = getChatId(video_id); const messe = getChatMessage(chatId,''); } function getChatId(id){ let video = UrlFetchApp.fetch('https://www.googleapis.com/youtube/v3/videos?key=AIzaSyDqEo2g4l-8Qi1RHPj1IHZ5JFvW3bkrHWQ&part=liveStreamingDetails&id=' + id); const item = JSON.parse(video.getContentText()); const chatId = item["items"][0]["liveStreamingDetails"]["activeLiveChatId"]; return chatId; } function getChatMessage(chatId,nextPageToken){ const test = YouTube.LiveChatMessages.list( chatId, "snippet,authorDetails", {h1:"ja",maxResults:2000,pageToken:nextPageToken} ) console.log(test["items"].length) for(i in test["items"]){ console.log(test['items'][i]["snippet"]['publishedAt'],test['items'][i]["snippet"]['displayMessage']) } let token = ''; try{ token = test["nextPageToken"]; console.log(token) Utilities.sleep(10000) getChatMessage(chatId,token); }catch(e){ console.log(e); } }
試したこと
maxResultsが取得できる件数と思い、最大の2000件にしていますが、取得できる件数(test["items"].length)は73件前後となっています。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/06/07 01:00