ひさしぶりなので、jq の文法はほとんど忘却の彼方。自分のjqの記事を読みながら思いだす。
- curl と jq で、GitHub レポジトリの Contributor list を作る - 標準愚痴出力
- github の Releases のダウンロード数を curl と jq でお手軽に調べたいッ - 標準愚痴出力
mstdn-arc2txt.jq
# jq スクリプト。呼び出すコマンドラインは次のとおり # tar -O -jxvf archive-*.tar.gz outbox.json | jq -rf mstdn-arc2txt.jq .orderedItems[] | select(.object.content | contains("エルデンリング")) | "```\n"+(.object.content | gsub("</p><p>";"\n\n") | gsub("<br[^>]*>";" \n") | gsub("<a[^>]*href=\"(?<a>[^\"]*)\"[^>]*>(?<t>.*?)</a>";"["+.t+"]("+.a+")") | gsub("<[^>]*>";"") ) + "\n```\n**(" + (.object.published | tostring) + ")**\n"
- アーカイブファイルは tar.gz 形式。outbox.json というファイルに JSON 形式で投稿内容が含まれている模様
- ActivityPub形式らしいが、その形式をちゃんと説明しているサイトはだいたい英語なので、もうブツを見た方が早い
- ルート要素はハッシュ。
.orderedItems
メンバーが投稿データの配列
- gsub 関数でテキストを置換できる。
- 第二引数は
;
以下に記述。見付かるたびに都度評価される - グルーピングは
(?<名前>…)
という形式。.名前
で参照できる
- 第二引数は
抽出結果は以下のとおり
```
エルデンリングのゲーム実況のアーカイブとか見てると
・後半になると、ウェブ情報を検索して、人物のイベントを消化
・視聴者によるゲーム内に書いたメッセージ評価での体力回復に頼る
とかいろいろあるのを知った。
(まぁ別にそういうのタブーではないからね)
```
**(2023-06-05T01:56:21Z)**
```
マレニアとラダゴンで未だにエルデンリング一週目が止まっている。
マレニアは裏ボスと聞いているけど、一回くらいは勝利しておきたい。トロフィー的な意味で
こいつら、楽な攻略法とかないかなぁ…(変身後にたどり着くのがやっと)
```
**(2023-06-05T01:58:38Z)**
: 以下略