git-fit 0.26.2 → 0.26.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/git_fit/sync/igpsport.rb +18 -0
- data/lib/git_fit/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2448b68c76af16677f97ce1d0dbc2393509841c3470af63f94e0c8e233a7dae0
|
|
4
|
+
data.tar.gz: 1221a4adfe3ec1ae49325f9f1bb7c1897135fb6244a6f3d9ccdcbb5675889e8f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3d38b68ce8d2b7e042c88766b9dbdc4aa73b993038464c48037502f0ee1926f68107d70f5dd081dd4b62e3c5570984a43fa9fcb86731ba282793c97efa886818
|
|
7
|
+
data.tar.gz: 3e9831435d92c93bb1c64833e3c3e363c3bb02418c7747b60670a055d23e193414c6fcead02559cbfed141da8ff7f05c82f161466d35443922531269454a7a22
|
|
@@ -18,6 +18,11 @@ module GitFit
|
|
|
18
18
|
|
|
19
19
|
RAW_EXT = 'fit'
|
|
20
20
|
|
|
21
|
+
# FIT product id → 码表型号名。本库观测仅 104(serialNumber 2148868369 单机);
|
|
22
|
+
# 型号名经 Strava device_name 交叉佐证:本源 85 条 ↔ strava detail.device_name
|
|
23
|
+
# 'iGPSPORT BSC100Max' 85 条完全对应(workouts#59)。
|
|
24
|
+
FIT_PRODUCT_MODELS = { 104 => 'BSC100Max' }.freeze
|
|
25
|
+
|
|
21
26
|
register_adapter
|
|
22
27
|
register_config :phone, :password
|
|
23
28
|
|
|
@@ -106,12 +111,25 @@ module GitFit
|
|
|
106
111
|
elevation_stats = elevation_stats_from_records(wgs_points, fit_path)
|
|
107
112
|
|
|
108
113
|
attrs = build_attrs(act, ride_id, polyline, sensor_summary, elevation_stats)
|
|
114
|
+
attrs[:device] = extract_device(fit_path)
|
|
109
115
|
return false unless attrs
|
|
110
116
|
|
|
111
117
|
upsert_activity(attrs)
|
|
112
118
|
attrs
|
|
113
119
|
end
|
|
114
120
|
|
|
121
|
+
# FIT device_info creator → "iGPSPORT <model>";未收录 product 返回 nil
|
|
122
|
+
# (workouts#59 — 型号名仅 Strava device_name 有)
|
|
123
|
+
def extract_device(fit_path)
|
|
124
|
+
infos = FIT::Decoder.device_info(fit_path)
|
|
125
|
+
info = infos.find { |d| d['deviceIndex'] == 'creator' } || infos.first
|
|
126
|
+
model = info && FIT_PRODUCT_MODELS[info['product']]
|
|
127
|
+
model ? "iGPSPORT #{model}" : nil
|
|
128
|
+
rescue StandardError => e
|
|
129
|
+
warn "IGPSPORT: device_info decode failed for #{fit_path}: #{e.message}"
|
|
130
|
+
nil
|
|
131
|
+
end
|
|
132
|
+
|
|
115
133
|
def get_download_url(ride_id)
|
|
116
134
|
resp = Faraday.get("#{DOWNLOAD_URL}/#{ride_id}", {}, @auth_headers)
|
|
117
135
|
return nil unless resp.status == 200
|
data/lib/git_fit/version.rb
CHANGED