事前の準備
- ライブ配信アーカイブの
/live_chat_replay?continuation=XXXXXX部分の値を取得する
Script
#/bin/bashNEXT_URL=${1}readonly API='https://www.youtube.com/live_chat_replay?continuation='readonly UA='User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'readonly TS=$(date +%s)function get_comment_json(){
curl -s-H"${UA}"${1} | \grep'responseContext'| \sed-e's/window\["ytInitialData"\]\ =\ //'-e's/;$//'\> /tmp/out.json
}function output_comment(){cat /tmp/out.json |jq -r'.continuationContents[].actions[].replayChatItemAction.actions[].addChatItemAction.item.liveChatTextMessageRenderer| [.timestampText.simpleText , .authorName.simpleText , .message.runs[0].text , .message.runs[1].text]|@tsv' 2>/dev/null| \awk-F'\t''{print $1 "\t" $2 "\t" $3 $4 }'\>> ./comment_${TS}.tsv
}while[${NEXT_URL}!='null']do
get_comment_json ${API}${NEXT_URL}
output_comment
NEXT_URL=$(cat /tmp/out.json |jq -r .continuationContents.liveChatContinuation.continuations[0].liveChatReplayContinuationData.continuation 2>/dev/null)sleep 1
done
rm /tmp/out.json
exit 0
実行
- 事前準備で取得したXXXを第一引数で実行する
% bash ./run.sh XXX
実行結果
% head -n 20 ./comment_*.tsv
-0:04 M M 来ました!笑
-0:01 寒色系ブルー おつ
-0:01 しゅーへー あ
0:00 アルカディア おお!
0:06 私はダメです !
0:07 Rena こんばんは
0:07 REX えいやっさ!
0:10 。 a 楽しみ〜
0:10 y t きた!
0:10 ずんだ はよ
0:11 ルビリアルビィ こんばんは!
0:12 天下の大泥棒石川五右衛門 おお
0:12 しゅんちゃん! !
0:12 。くろ やべぇ!
0:13 きなこきなこ いぇい
0:13 黒崎嶺二 こんにちは
0:15 渡邉りさちゃん あああああ
0:16 ふにゃっしー こんばんはわ
0:17 しゅーへー にコメ
