【755】curl, jqコマンドで今までに投稿したやじコメを一気に閲覧


概要

タイトル通り。

何気にそういったのを手軽にみれたら面白いかなと思い、エモに浸る意味でも調べてみました。
ワンライナーでいけたのがミソ

手順

OSのターミナルを開いて以下コマンドを入力 ※予めjpコマンドをインストールする必要があります
(またmacOSの場合はawkではなくgawkをインストールして使用)

curl "https://api.7gogo.jp/web/v3/talks/<①>/comments?limit=1000000" | jq '.data[] | select(.user.name == "<②>") | .comment | .time, .body[].text' | awk 'NR%2!=0 {print strftime("%Y/%m/%d %H:%M:%S %a",$0)} NR%2==0 {gsub("\\\\n","\n",$0); print $0,"\n"}'

①対象となるトークルームのtalkId
②ご自身のユーザー名

トークルームのURLからtalkIdは確認できます。
https://7gogo.jp/<この部分がtalkId>

例:AKB48稲垣香織さんのトークルームの場合
https://7gogo.jp/inagaki-kaori // 指定するtalkIdは”inagaki-kaori”となります。

コマンド実行

実行環境(macOS)

macOS
$ curl "https://api.7gogo.jp/web/v3/talks/inagaki-kaori/comments?limit=1000000" | \
jq '.data[] | select(.user.name == "めいせい") | .comment | .time, .body[].text' | \
gawk 'NR%2!=0 {print strftime("%Y/%m/%d %H:%M:%S %a",$0)} NR%2==0 {gsub("\\\\n","\n",$0); print $0,"\n"}'

表示は新着順(ルームによっては表示されるまでにそこそこ時間を要します)

最初の頃はなかなかのおじさんぷりを発揮してるなぁ、、(˘ω˘)

コマンド処理の解説

まずトークルームが開設されてから投稿された全やじコメ(全ユーザー分)のJSONデータを取得。

curl "https://api.7gogo.jp/web/v3/talks/inagaki-kaori/comments?limit=1000000" |

&limit=1000000
limitパラメータは取得件数の最大値となります。
limitパラメータを指定しない場合、100件程しか取得されません。
全てのやじコメを取得するには、やじコメの総件数以上の値を指定する必要があるため1000000としています。
▶やじコメの総件数を確認する方法

指定したユーザー名のやじコメとそれに紐づく投稿時間をJSONデータから抽出。

jq '.data[] | select(.user.name == "めいせい") | .comment | .time, .body[].text' |

抽出されたデータを加工して表示。
・投稿時間をunixtimeからシステム標準時に変更
・コメントの文字列に含まれている改行のエスケープシーケンス[\n]を実際の改行として出力

gawk 'NR%2!=0 {print strftime("%Y/%m/%d %H:%M:%S %a",$0)} NR%2==0 {gsub("\\\\n","\n",$0); print $0,"\n"}'

やじコメの総件数を確認する方法

以下のURLを押下し最初に表示されるcommentIdの値がやじコメの総件数です。
https://api.7gogo.jp/web/v3/talks/inagaki-kaori/comments?talkId=inagaki-kaori
(talkIdの値はトークルームに合わせて適宜変更して下さい)

commentIdは一つのやじコメに紐づくユニークIDでコメントが投稿される度、インクリメント採番される値のようです。よって最新のcommentId=やじコメの総件数となり、この画像の場合は188811件となります。

上記の手順を踏まなくとも、とりあえずlimitに1000000ぐらい指定すれば大概のルームでは問題ないのかなと思われます(希望的観測)

最後に

とりま、、jqカッケーすね

参考:
https://qiita.com/dev100kg/items/f2d01bfd6b0880f93d58
https://www.setouchino.cloud/blogs/19