{"id":18055323,"url":"https://github.com/agentmorris/mapmyrunlogger","last_synced_at":"2026-01-19T11:31:51.936Z","repository":{"id":161155988,"uuid":"97989230","full_name":"agentmorris/MapMyRunLogger","owner":"agentmorris","description":"Tools to bulk-download data from MapMyRun and make a pretty Web page summarizing workouts.  No UI.","archived":false,"fork":false,"pushed_at":"2017-12-25T23:46:46.000Z","size":108,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-10T18:11:17.948Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://dmorris.net/projects/runlog/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agentmorris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-21T21:51:54.000Z","updated_at":"2020-07-20T03:06:54.000Z","dependencies_parsed_at":"2023-09-19T23:00:09.764Z","dependency_job_id":null,"html_url":"https://github.com/agentmorris/MapMyRunLogger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentmorris%2FMapMyRunLogger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentmorris%2FMapMyRunLogger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentmorris%2FMapMyRunLogger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentmorris%2FMapMyRunLogger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agentmorris","download_url":"https://codeload.github.com/agentmorris/MapMyRunLogger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247312086,"owners_count":20918344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-31T00:14:36.155Z","updated_at":"2026-01-19T11:31:51.930Z","avatar_url":"https://github.com/agentmorris.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MapMyRunLogger\r\n\r\nThis is a set of tools I use to bulk-download data from MapMyRun, then make a nice Web page about my workouts:\r\n\r\n[http://dmorris.net/projects/runlog/](http://dmorris.net/projects/runlog/)\r\n\r\nI also used the downloaded files to upload my MMR history to Strava.\r\n\r\nThere are three C# projects; all of them live in MapMyRunLogger.sln.\r\n\r\n\r\n##  MapMyRunLogger.csproj\r\n\r\nThis is the main project that actually downloads stuff from MapMyRun.  Specifically, it takes a list of my workout IDs, logs in to MMR, downloads .tcx files for every workout, and generates an .xml file and a thumbnail for every workout.  After running this project, you'll have the pile of .tcx files you need to upload to Strava.  Username and password are hard-coded.\r\n\r\nThere are three ways one could theoretically get a list of workout IDs, not counting a fully-manual approach... \r\n\r\n(1) I got the list of workout IDs by paying $5 to become a premium member, downloading my whole workout history as a .csv file (which only gives me IDs for each workout, no other useful information), and canceling my membership.  This project is built around this approach.\r\n\r\n(2) One could write new code to log in to MMR using the same auth code, then crawl one's account.  This is harder than it used to be since there is no workout list anymore, just a javascript-based workout calendar.\r\n\r\n(3) One could manually open every workout in your browser, and write code to crawl your browser history for URLs.  I estimate the workout-clicking could be done at about two workouts per second, so this would be pretty quick, but it was worth my $5 to avoid doing this.\r\n\r\n\r\n## RunPageGenerator.csproj\r\n\r\nThis is the code that takes all those thumbnails and .xml files (from MapMyRunLogger.csproj) and makes a pretty Web page like this one:\r\n\r\n[http://dmorris.net/projects/runlog/](http://dmorris.net/projects/runlog/)\r\n\r\nAssumes you've run MapMyRunLogger already.\r\n\r\n\r\n## AuthTest.csproj\r\n\r\nSome basic tools for testing the code I use to log in and authenticate at MapMyRun.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentmorris%2Fmapmyrunlogger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagentmorris%2Fmapmyrunlogger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentmorris%2Fmapmyrunlogger/lists"}