旅に出たり、走ったり、旅に出て走ったり

走った記録や旅行記、旅ランの記録などを書いています。Garminなどのランガジェットの紹介もします。

GarminConnectからラップタイムデータを一括ダウンロードしてくる〜その2〜

前回はガーミンコネクトからラップデータcsvファイルをダウンロードしてみました。

 

genmaigenmai.hatenablog.com

 

さて、このダウンロードを一括してやろう。

やり方知らないので、ネットの力を借ります。

こちらの環境は、macOS Monterey(12.0.1)、GoogleChrome(97)、ターミナル(Bash)で実行しています。他の環境は試してませんが、そんなに違いは無いでしょう。知らんけどw

 

 

自動でダウンロードするスクリプトを探す

以前、ガーミンがランサムウェアにやられた時に、fitファイル*1を手元にダウンロードしている人が結構いらっしゃるようです。

これで一括ダウンロードできるようです。ウィンドウがチラッと開きます。ていうか、windows.openでいいんですね。

www.330k.info

(勝手にリンクしていますが、良くなければご指摘いただければ外します)

 

試しにfitファイルを落としてきて、ラップデータが見れるかと思って開いてみたら、バイナリだし、csv変換もできるけど、莫大な量でこんなの解析してらんないので、そっ閉じw

 

メニューで「オリジナルをエクスポート」*2の下に「ラップをcsvにエクスポート」があるんだからやる方法はあるに違いない。

f:id:Genmai_17:20220110154957p:plain

いろいろと調べて、ようやく発見。

上記リンク先の

'/modern/proxy/download-service/files/activity/'

'/modern/proxy/download-service/export/csv/activity/'に書き換えればうまくいくようだ。ちなみに、途中のcsvをtcxにすればtcxファイル*3、gpxにすればgpxファイル*4kmlにすればkmlファイル*5がそれぞれ落ちてくるようです。

というわけで、書き換えたコードがこちら。ビビりなので、ついでに待機時間を10秒にしています。

document.querySelectorAll('a[href*=\'/modern/activity/\'').forEach((e, i)=>{
  const url = e.href.replace('/modern/activity/', '/modern/proxy/download-service/export/csv/activity/');

  setTimeout(() => {
    window.open(url, '_blank');
  }, i * 10000);
})

 

ちなみにビビる理由は、こちら。もう10年前の話なのでビビらなくても良いと思うんですけど。

ja.wikipedia.org

スクリプトを走らせてみる

1 対象アクティビティを表示

まずは、GoogleChromeを開きます。

PC版ガーミンコネクトのページを開き、アクティビティ一覧を表示させます。

右側のメニューからランのアイコンをクリックすると「上級者」ボタンが表示されますので、ここをクリックして、ダウンロード対象としたいアクティビティを選びます。

f:id:Genmai_17:20220129091515p:plain



選んで表示されたら画面を下にスクロールしていって、対象となるアクティビティを全部表示させます。(表示されていないアクティビティはダウンロードされません。)

 

f:id:Genmai_17:20220110171414p:plain

2 スクリプトを走らせます

chromeの設定メニュー(右上の縦3つの点)から[その他のツール]-[デベロッパーツール]を選択します。

下か右に画面が開くので、コンソールのタブを選択して、コンソールの一番下に上に書いたコードをコピペ。

そして、Enterキー押下で動き始めます。ダウンロード用のフォルダ指定がされていれば、設定されたダウンロードフォルダにcsvファイルが自動的にどんどん保存されていきます。10秒に1回ウィンドウが開くので、軽くジョグでも行ってくると終わっていると思います。念のため、スクリーンセーバーとかスリープとかは解除して、chromeを最前面に出しておきます。

途中で失敗することもあると思います*6ので、1年分とかで分けてダウンロードした方がいいかも。

サーバに負荷がかかるので、もし失敗したら、時間を空けて再トライしてみてください。

f:id:Genmai_17:20220110175258p:plain

 

落ちてきたファイルには、各アクティビティのラップごとの情報が保管されています。

f:id:Genmai_17:20220129085828p:plain

格納されている情報はこんな内容。これがラップごとと合計とで格納されています。

分割,時間,移動時間,距離,高度上昇,高度下降,平均ペース,平均移動ペース,最高ペース,平均ピッチ,最高ピッチ,平均歩幅,平均心拍,最大心拍,平均気温,カロリー

「分割」はラップ番号で、アクティビティ合計はSummaryという名前で格納されています。それ以外の各項目は、ガーミンコネクトの画面に表示されるものと同じです。

見てみると、日付と時刻はありません。これがないと分析するのに支障が出ます(ソートした時点でいつのことか全然わからなくなる)。どうにかしてくっつけないと使いにくいです。

ファイル名のactivity_の後にくっついている数字(アクティビティIDと言うようです)は使えないだろうか。アクティビティIDは、日付順に数字が大きくなっていて、ダブりは無いみたい。

 

もう少し続きます。

 

genmaigenmai.hatenablog.com

 

にほんブログ村 その他スポーツブログ マラソンへ
にほんブログ村

*1:ガーミンのデバイスが記録するファイル形式。ガーミンが倒れてもstravaにアップロード可能

*2:これを選ぶとfitファイルが落ちてくる

*3:懐かしのGarminTrainingCenter用のファイル

*4:よく使われるGPSログファイル

*5:GoogleMapとかGoogle Earthで使われるファイル

*6:実際に途中から全部FileNotFoundになったこともありました