コード例 #1
0
        public async Task <WorkoutSessionMetrics> GetWorkoutMetricsAsync(RideDatum ride, ILogger logger, string SaveJsonPath = null)
        {
            using (var client = new WebClient())
            {
                client.Headers["accept"] = "application/json";
                string url = $"https://api.onepeloton.com/api/workout/{ride.id}/performance_graph?every_n=1";

                if (logger != null)
                {
                    logger.Log($"Downloading metrics for workout: {ride.ride.title} on {Util.DateTimeFromEpochSeconds(ride.device_time_created_at).ToShortDateString()}");
                }
                var response = await client.DownloadStringTaskAsync(url);

                Debug.WriteLine("  " + response.Substring(0, 50));
                Debug.WriteLine($"  Length: {response.Length}");
                if (logger != null)
                {
                    logger.Log($"Done downloading");
                }

                if (SaveJsonPath != null)
                {
                    var formattedJson = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(response, JSonSerializerSettings), Formatting.Indented, JSonSerializerSettings);
                    File.WriteAllText(SaveJsonPath, formattedJson);
                }
                WorkoutSessionMetrics session = JsonConvert.DeserializeObject <WorkoutSessionMetrics>(response, JSonSerializerSettings);
                return(session);
            }
        }
コード例 #2
0
        public void OutputRideCSV(WorkoutSessionMetrics session, string filename)
        {
            List <string> lines  = new List <string>();
            var           header = "elapsed_seconds," + string.Join(",", session.metrics.Select(m => m.slug));

            lines.Add(header);

            var metricLists = session.metrics.Select(m => m.values);

            for (int i = 0; i < session.seconds_since_pedaling_start.Count(); i++)
            {
                string line = session.seconds_since_pedaling_start[i] + "," +
                              string.Join(",", metricLists.Select(m => m[i]));
                lines.Add(line);
            }
            File.WriteAllLines(filename, lines);
        }