Garmin Connectでこれまでのすべてのアクティビティを一括ダウンロードする
Garmin Connectがサイバー攻撃を受けてダウンした。
ランサムウェアにやられたらしい、ということで最悪の場合、これまでの記録が消えてしまう可能性がある。
幸いにもとりあえず復旧したようなので、これまでの全アクティビティをローカルにバックアップした。
環境
以下の作業はGoogle Chrome 83(Ubuntu 18.04)で行った。
WindowsでもChromeなら同じはず。
事前準備
サイトの設定で「ポップアップとリダイレクト」を「許可」に設定しておく。
その他、ダウンロードの保存先を毎回尋ねる設定にしている場合は、ダウンロード先を固定にしておくと放置できる。
手順
まずGarmin Connectのアクティビティ一覧ページ(https://connect.garmin.com/modern/activities)にアクセス。
画面右側のアクティビティ一覧を一番下までスクロールし、アクティビティへのリンクを全部表示させる。
スクロールしたら[Ctrl] + [Shift] + [J]でJavaScriptコンソールを表示し、以下のコマンドをコピー&ペーストして[Enter]。
document.querySelectorAll('a[href*=\'/modern/activity/\'').forEach((e, i)=>{
const url = e.href.replace('/modern/activity/', '/modern/proxy/download-service/files/activity/');
setTimeout(() => {
window.open(url, '_blank');
}, i * 5000);
})
5秒ごとに新しいウィンドウが開かれて各アクティビティにおいて「オリジナルをエクスポート」した際にダウンロードできるzipファイルがダウンロードされるので、しばらく待つ。
一応、ダウンロードを5秒間隔にしてあまりに高負荷にならないようにしているが、復旧したばかりのGarminのサーバに負荷をかける行為なので、うまく行かなかった時はしばらく待ったほうが良い。
完了後、下記コマンドをJavaScriptコンソールにコピペ→[Enter]した際に表示される数字を、ダウンロードしたzipファイルの数と比較して、一致していればダウンロード完了。
document.querySelectorAll('a[href*=\'/modern/activity/\'').length
なおダウンロードした各zipファイルにはfitファイルが1つ入っているだけなので、Stravaなど他のサービスにインポートする際は展開すればOK。