GARMIN沈黙しちゃったからGoogle MapsのタイムラインからデータをサルベージしてStravaに記録する
走っているとGARMINが沈黙してしまった。
でもせっかくのライド、Stravaに記録が残らないのはいやだ。
それ、Perlで(ry
書き捨てスクリプトを書きました。汎用性とか綺麗に書くこととか微塵も考えてないのでコードの内容については突っ込み無用です。
Google MapsのタイムラインからKMLデータを取得し、このスクリプトに食わせてGPXに変換することでStravaに取り込むことができます。
#!/usr/bin/perl # kml2gpx.pl # settings $kmlfile = 'timeline.kml'; $gpxfile = 'out.gpx'; $usefrom = '2018-02-04T23:10:00Z'; # GMT $useto = '2018-02-05T00:20:00Z'; # GMT open($fout, "> $gpxfile"); print $fout qq(<?xml version="1.0" encoding="UTF-8"?>\n); print $fout qq(<gpx creator="StravaGPX" version="1.1" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd">\n); print $fout qq( <metadata><time>$usefrom</time></metadata>\n); print $fout qq( <trk>\n); print $fout qq( <name>Import From Google Location History</name>\n); print $fout qq( <trkseg>\n); $usefrom =~s/\D//g; $useto =~s/\D//g; open($fh, "tac ${kmlfile} |"); while(<$fh>){ if(/<gx:coord>([\d\.]+) ([\d\.]+) [\d\.]+<\/gx:coord>/){ $lon = $1; $lat = $2; } if(/<when>(.+)<\/when>/){ $when = $1; $whencode = $when; $whencode =~s/\D//g; next if($whencode < $usefrom); last if($whencode > $useto); print $fout qq( <trkpt lat="${lat}" lon="${lon}"><time>${when}</time></trkpt>\n); } } close($fh); print $fout qq( </trkseg>\n); print $fout qq( </trk>\n); print $fout qq(</gpx>); close($fout); exit;
なお、出来るデータはかなり荒いので「リーダーボードに不参加」にしておきましょう。
やくそくだぞ!
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪,嶋田健志
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/01/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る