Table of Contents
https://drroot.page/wp/?p=227
この記事でアプリケーション(Node.js)からブラウザのフリして配信のチャットを引っこ抜くコードを紹介したが、正規表現でContinuationを引っこ抜く処理に抜けがあり、上位チャットしか取ってこれてない状態だった。
というわけで上位でなく全体のコメント向けContinuationを取得するコードも書いた。以下でcontinuation keyがstringとして得られる。
// videoId=配信ページとかのURL末尾のID
const res = await axios.get('https://www.youtube.com/live_chat', {
headers: "user-agent":
"Mozilla/5.0 (Windows NT 6.3; Win64; x64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) " +
"Chrome/86.0.4240.111 Safari/537.36",
params: { v: videoId }
});
const html: string = res.data;
const matchedCtn = html.matchAll(
/"reloadContinuationData":.*?"continuation":"(.+?)"/g
);
const matchedCtnList = [...matchedCtn];
// matched = Regex結果の集合 一個の結果が更に配列でマッチ結果を持つ
// Youtubeの場合matched[0]が上位チャット、matched[1]が全体チャットの筈
const continuation = matchedCtnList[1][1];