{"id":27239804,"url":"https://github.com/sesh/runsync","last_synced_at":"2025-04-10T19:14:00.189Z","repository":{"id":50171158,"uuid":"95352229","full_name":"sesh/runsync","owner":"sesh","description":"🏃🏻 Sync Strava -\u003e Smashrun","archived":false,"fork":false,"pushed_at":"2023-07-25T23:31:58.000Z","size":27,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T23:25:22.842Z","etag":null,"topics":["python","running","smashrun","strava"],"latest_commit_sha":null,"homepage":"","language":"Python","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/sesh.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}},"created_at":"2017-06-25T10:12:18.000Z","updated_at":"2022-12-08T20:42:23.000Z","dependencies_parsed_at":"2023-01-25T17:46:41.629Z","dependency_job_id":null,"html_url":"https://github.com/sesh/runsync","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/sesh%2Frunsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sesh%2Frunsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sesh%2Frunsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sesh%2Frunsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sesh","download_url":"https://codeload.github.com/sesh/runsync/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248280366,"owners_count":21077412,"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":["python","running","smashrun","strava"],"created_at":"2025-04-10T19:13:59.617Z","updated_at":"2025-04-10T19:14:00.181Z","avatar_url":"https://github.com/sesh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"`runsync` is a Python tool for syncing runs (and other activities) between services.\n\nIt currently supports exporting runs from [Strava][strava] to [Smashrun][smashrun].\nI definitely intend on incorporating other services.\n\n_This is a WIP. I recommend looking at `runsync.py` and having a play around._\n\n---\n\n## Usage\n\nYou need to gather and export three environment variables:\n\n- SMASHRUN_TOKEN - obtainable from the [Smashrun API Explorer][sr-api]\n- STRAVA_APP_ID and STRAVA_CLIENT_SECRET - create an app in your [Strava API Settings][strava-api]\n\nWhen you run you will be asked to open a URL to perform the Strava OAuth handshake. This is required because the access token that Strava provides in your profile does not have permission to read activities (at least for me).\n\nOnce you have the environment variables configured you can run with:\n\n```bash\n\u003e pipenv run python runsync.py\n```\n\nThis will attempt to sync the 100 most recent activities between the two services.\n\n\n  [smashrun]: https://smashrun.com\n  [strava]: https://strava.com\n  [sr-api]: https://api.smashrun.com/explorer\n  [strava-api]: https://www.strava.com/settings/api\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsesh%2Frunsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsesh%2Frunsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsesh%2Frunsync/lists"}