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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d84b35d1ebca428d183a3d0e212839944bc9f28a4fdcfd290b6e97fc09ea85d9
4
- data.tar.gz: dabc0729177f29c09c24f28e427e15eee398ec578b46fc6d223d85fe8b1404b4
3
+ metadata.gz: 2448b68c76af16677f97ce1d0dbc2393509841c3470af63f94e0c8e233a7dae0
4
+ data.tar.gz: 1221a4adfe3ec1ae49325f9f1bb7c1897135fb6244a6f3d9ccdcbb5675889e8f
5
5
  SHA512:
6
- metadata.gz: df18eb00f817854d8d8f0a3bf3355282024f9a7b721b35c88da2a911a7e7597daa63830eb12556386f46fb805230639b783da5a3fed44f690503b97e9cb01053
7
- data.tar.gz: 9d0a7997697ee9ba932975d3765768b1078321c4f80109f469cb1482f8404a2c48f484ec391536cd6c9573f74aa514656aea1ebf864ae8b9b04f0333b7e3f7dc
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitFit
4
- VERSION = '0.26.2'
4
+ VERSION = '0.26.3'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-fit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.2
4
+ version: 0.26.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lax