From 272662190e89a824ea2ddc38ce9e9b6fb86684cd Mon Sep 17 00:00:00 2001 From: Sterearch Date: Thu, 29 Dec 2022 21:02:13 +0100 Subject: [PATCH 1/4] Fix a premature loop break. Remove an unused variable. --- polar_training2tcx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/polar_training2tcx b/polar_training2tcx index e7ef3a4..a19a13f 100755 --- a/polar_training2tcx +++ b/polar_training2tcx @@ -116,7 +116,7 @@ def output_tcx(parsed) break end - break if i >= samples_count && i >= route_samples_count + break if i >= samples_count && route_i >= route_samples_count if !alt_offline || i > alt_offline.stop_index alt_offline = samples.altitude_offline.find { |off| off.start_index == i } || false @@ -173,7 +173,6 @@ def output_tcx(parsed) } } end - first_sample_with_gps = false if first_sample_with_gps }.xmlns = 'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2' i += 1 From 881f3d132a138b28e3b39a6a8f22f90d9faa7b51 Mon Sep 17 00:00:00 2001 From: Sterearch Date: Thu, 29 Dec 2022 21:10:28 +0100 Subject: [PATCH 2/4] Remove the xmlns attribute from Track and Trackpoint elements to make Strava happy --- polar_training2tcx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polar_training2tcx b/polar_training2tcx index a19a13f..910f759 100755 --- a/polar_training2tcx +++ b/polar_training2tcx @@ -173,13 +173,13 @@ def output_tcx(parsed) } } end - }.xmlns = 'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2' + } i += 1 elapsed += recording_interval elapsed_with_pauses += recording_interval end - }.xmlns = 'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2' + } end if (avg_speed && avg_speed > 0) || (avg_watts && avg_watts > 0) xml.Extensions { From e97901256fdeb312e7fc7b747502a18577006c43 Mon Sep 17 00:00:00 2001 From: Sterearch Date: Thu, 29 Dec 2022 21:17:41 +0100 Subject: [PATCH 3/4] Check the time of a route sample to better handle GPS losses in the middle of a track --- polar_training2tcx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polar_training2tcx b/polar_training2tcx index 910f759..3d2166b 100755 --- a/polar_training2tcx +++ b/polar_training2tcx @@ -136,7 +136,7 @@ def output_tcx(parsed) xml.Trackpoint { xml.Time (start + elapsed_with_pauses).strftime("%Y-%m-%dT%H:%M:%S.%3NZ") - if route_i && route_samples.duration[route_i] #&& (route_samples.duration[route_i] / 1000 <= elapsed) + if route_i && route_samples.duration[route_i] && (route_samples.duration[route_i].to_f / 1000 <= elapsed) xml.Position { xml.LatitudeDegrees route_samples.latitude[route_i].round(8) xml.LongitudeDegrees route_samples.longitude[route_i].round(8) From d7260b16555a90bddad4fdc7e2cfde31c3f1e0cd Mon Sep 17 00:00:00 2001 From: Sterearch <121637940+Sterearch@users.noreply.github.com> Date: Fri, 17 Mar 2023 20:48:27 +0100 Subject: [PATCH 4/4] Fix the condition of route_i increment --- polar_training2tcx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polar_training2tcx b/polar_training2tcx index 6e83541..5112924 100755 --- a/polar_training2tcx +++ b/polar_training2tcx @@ -141,7 +141,7 @@ def output_tcx(parsed) xml.LatitudeDegrees route_samples.latitude[route_i].round(8) xml.LongitudeDegrees route_samples.longitude[route_i].round(8) } - route_i += 1 if route_samples.duration[route_i].to_f / 1000 >= elapsed + route_i += 1 if route_samples.duration[route_i].to_f / 1000 <= elapsed end xml.AltitudeMeters (samples.altitude_samples[i] + altitude_delta).round(3) if !alt_offline && samples.altitude_samples[i] if !dist_offline && samples.distance_samples[i] #&& samples.distance_samples[i] != prev_distance