{"id":17184800,"url":"https://github.com/liskin/strava-ical","last_synced_at":"2025-09-11T10:37:59.192Z","repository":{"id":138517415,"uuid":"469364441","full_name":"liskin/strava-ical","owner":"liskin","description":"Generate iCalendar with your Strava activities","archived":false,"fork":false,"pushed_at":"2024-06-19T00:28:23.000Z","size":74,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-29T06:03:04.448Z","etag":null,"topics":["command-line","hacktoberfest","icalendar","liskin-cookiecutter-python-cli","python","python3","strava","strava-activities","strava-data"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liskin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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},"funding":{"github":["liskin"],"custom":["https://www.paypal.me/lisknisi/5EUR"]}},"created_at":"2022-03-13T12:27:01.000Z","updated_at":"2024-06-19T00:28:26.000Z","dependencies_parsed_at":"2023-10-04T15:59:08.337Z","dependency_job_id":"fdda7f6c-0c52-45bd-bf36-a62ed091c66d","html_url":"https://github.com/liskin/strava-ical","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/liskin/strava-ical","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liskin%2Fstrava-ical","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liskin%2Fstrava-ical/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liskin%2Fstrava-ical/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liskin%2Fstrava-ical/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liskin","download_url":"https://codeload.github.com/liskin/strava-ical/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liskin%2Fstrava-ical/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274616485,"owners_count":25318160,"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","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["command-line","hacktoberfest","icalendar","liskin-cookiecutter-python-cli","python","python3","strava","strava-activities","strava-data"],"created_at":"2024-10-15T00:44:26.317Z","updated_at":"2025-09-11T10:37:59.127Z","avatar_url":"https://github.com/liskin.png","language":"Python","funding_links":["https://github.com/sponsors/liskin","https://www.paypal.me/lisknisi/5EUR"],"categories":[],"sub_categories":[],"readme":"# strava-ical\n\n[![PyPI Python Version badge](https://img.shields.io/pypi/pyversions/strava-ical)](https://pypi.org/project/strava-ical/)\n[![PyPI Version badge](https://img.shields.io/pypi/v/strava-ical)](https://pypi.org/project/strava-ical/)\n![License badge](https://img.shields.io/github/license/liskin/strava-ical)\n\n## Overview\n\n**Generate iCalendar with your [Strava][] activities**\n\nUses [strava-offline][] to keep and incrementally sync with a local database of activities.\n\n![Example screenshot of the output in Google Calendar](https://github.com/liskin/strava-ical/assets/300342/71d2e9c5-f9ef-481c-b5ee-4a71fd09caa4)\n\n[strava-offline]: https://github.com/liskin/strava-offline#readme\n[Strava]: https://strava.com/\n\n## Installation\n\nUsing [pipx][]:\n\n```\npipx ensurepath\npipx install \"strava-ical[strava]\"\n```\n\nTo keep a local git clone around:\n\n```\ngit clone https://github.com/liskin/strava-ical\nmake -C strava-ical pipx\n```\n\nAlternatively, if you don't need the isolated virtualenv that [pipx][]\nprovides, feel free to just:\n\n```\npip install \"strava-ical[strava]\"\n```\n\nIf you've already installed [strava-offline][] and use it separately, you can\nomit the `[strava]` bit to avoid installing strava-offline twice.\n\n[pipx]: https://github.com/pypa/pipx\n\n## Setup and usage\n\n* Run `strava-ical-sync` (or `strava-offline sqlite` if you chose to install\n  [strava-offline][] separately) to synchronize activities metadata to a local\n  sqlite database. This takes a while: first time a couple dozen seconds, then\n  it syncs incrementally which only takes a few seconds each time. Add `-v` to\n  see progress.\n\n  The first time you do this, it will open Strava in a browser and ask for\n  permissions. Should you run into any trouble at this point, consult\n  [strava-offline][] readme or open an issue.\n\n  If you make changes to older activities (to assign a different bike to a\n  ride, for example), you may need a `--full` re-sync rathen than the default\n  incremental one. See the [note about incremental synchronization](https://github.com/liskin/strava-offline#note-about-incremental-synchronization)\n  for a detailed explanation.\n\n* Run `strava-ical`:\n\n  ```\n  $ strava-ical --max-size 1M -o strava-activities.ical\n  ```\n\n* Import `strava-activities.ical` into your calendar app of choice.\n\n  (Note that Google Calendar refreshes iCal URLs once a day and cannot be\n  tweaked in any way. Manual refresh isn't possible either.)\n\n## Command line options\n\n\u003c!-- include tests/readme/help.md --\u003e\n\u003c!--\n    $ export COLUMNS=120\n--\u003e\n\n    $ strava-ical --help\n    Usage: strava-ical [OPTIONS]\n    \n      Generate iCalendar with your Strava activities\n    \n    Options:\n      --csv FILENAME          Load activities from CSV instead of the strava-offline database (columns: distance,\n                              elapsed_time, id, moving_time, name, start_date, start_latlng, total_elevation_gain, type)\n      --strava-database PATH  Location of the strava-offline database  [default:\n                              /home/user/.local/share/strava_offline/strava.sqlite]\n      -o, --output FILENAME   Output file  [default: -]\n      -m, --max-size SIZE     Maximum size of the output file in bytes (accepts K and M suffixes as well)\n      --help                  Show this message and exit.\n\u003c!-- end include tests/readme/help.md --\u003e\n\n## Contributing\n\n### Code\n\nWe welcome bug fixes, (reasonable) new features, documentation improvements,\nand more. Submit these as GitHub pull requests. Use GitHub issues to report\nbugs and discuss non-trivial code improvements; alternatively, get in touch\nvia [IRC/Matrix/Fediverse](https://work.lisk.in/contact/).\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for more details about the code base\n(including running tests locally).\n\nNote that this project was born out of a desire to solve a problem I was\nfacing. While I'm excited to share it with the world, keep in mind that I'll\nbe prioritizing features and bug fixes that align with my personal use cases.\nThere may be times when I'm busy with other commitments and replies to\ncontributions might be delayed, or even occasionally missed. Progress may come\nin bursts. Adjust your expectations accordingly.\n\n### Donations (♥ = €)\n\nIf you like this tool and wish to support its development and maintenance,\nplease consider [a small donation](https://www.paypal.me/lisknisi/5EUR) or\n[recurrent support through GitHub Sponsors](https://github.com/sponsors/liskin).\n\nBy donating, you'll also support the development of my other projects. You\nmight like these:\n\n* [strava-offline](https://github.com/liskin/strava-offline) – Keep a local mirror of Strava activities for further analysis/processing\n* [strava-gear](https://github.com/liskin/strava-gear) – Rule based tracker of gear and component wear primarily for Strava\n* [strava-map-switcher](https://github.com/liskin/strava-map-switcher) – Map switcher for Strava website\n* [foursquare-swarm-ical](https://github.com/liskin/foursquare-swarm-ical) – Sync Foursquare Swarm check-ins to local sqlite DB and generate iCalendar\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliskin%2Fstrava-ical","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliskin%2Fstrava-ical","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliskin%2Fstrava-ical/lists"}