Open3

esa のアーカイブをダウンロードする

usagigausagiga

esa.io 公式のエクスポート機能では、コメントや添付ファイルをダウンロードすることができません。
そこで、そうしたものも含めてダウンロードしてみます。

記事・コメント・スター・画像をダウンロードする

記事数が100件以下なら curl と wget と jq だけでダウンロードできます。

#!/bin/bash

TEAM_NAME='TEAM NAME HERE'
API_KEY='ESA API KEY HERE'
WORK_DIR='attachments'

# Download posts / comments
curl -X GET -H "Authorization: Bearer ${API_KEY}" 'https://api.esa.io/v1/teams/${TEAM_NAME}/posts?per_page=100&include=stargazers,comments,comments.stargazers' | tee export-esa-io.json

# Download attachments
mkdir -pv "${WORK_DIR}"
pushd "${WORK_DIR}"
cat ../export-esa-io.json | jq -SMr '.posts[] | .body_md | match("https://(img\\.esa\\.io|esa-storage-tokyo\\.s3-ap-northeast-1\\.amazonaws\\.com)/.+(png|jpeg|jpg|gif|pdf)") | .string' | xargs -IX wget X
popd

記事数が100を超える場合、100記事ごとにページが分けられるので、各ページをダウンロードしていくことになります。

usagigausagiga

wget を使うとファイル名が重複したときにいい感じに他のファイルに保存してくれるからなのですが、ファイル名がユニークならばそんな心配はいらなそうですね……?

usagigausagiga

?include=stargazers,comments,comments.stargazers

というクエリパラメータがミソで、これをやると Star やコメントがガバっととれます(コメントがページネーション必要なくらいいっぱいあったらどうするんだろう)。