Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/liskin/strava-ical

Generate iCalendar with your Strava activities
https://github.com/liskin/strava-ical

command-line hacktoberfest icalendar liskin-cookiecutter-python-cli python python3 strava strava-activities strava-data

Last synced: 2 months ago
JSON representation

Generate iCalendar with your Strava activities

Awesome Lists containing this project

README

        

# strava-ical

[![PyPI Python Version badge](https://img.shields.io/pypi/pyversions/strava-ical)](https://pypi.org/project/strava-ical/)
[![PyPI Version badge](https://img.shields.io/pypi/v/strava-ical)](https://pypi.org/project/strava-ical/)
![License badge](https://img.shields.io/github/license/liskin/strava-ical)

## Overview

**Generate iCalendar with your [Strava][] activities**

Uses [strava-offline][] to keep and incrementally sync with a local database of activities.

![Example screenshot of the output in Google Calendar](https://github.com/liskin/strava-ical/assets/300342/71d2e9c5-f9ef-481c-b5ee-4a71fd09caa4)

[strava-offline]: https://github.com/liskin/strava-offline#readme
[Strava]: https://strava.com/

## Installation

Using [pipx][]:

```
pipx ensurepath
pipx install "strava-ical[strava]"
```

To keep a local git clone around:

```
git clone https://github.com/liskin/strava-ical
make -C strava-ical pipx
```

Alternatively, if you don't need the isolated virtualenv that [pipx][]
provides, feel free to just:

```
pip install "strava-ical[strava]"
```

If you've already installed [strava-offline][] and use it separately, you can
omit the `[strava]` bit to avoid installing strava-offline twice.

[pipx]: https://github.com/pypa/pipx

## Setup and usage

* Run `strava-ical-sync` (or `strava-offline sqlite` if you chose to install
[strava-offline][] separately) to synchronize activities metadata to a local
sqlite database. This takes a while: first time a couple dozen seconds, then
it syncs incrementally which only takes a few seconds each time. Add `-v` to
see progress.

The first time you do this, it will open Strava in a browser and ask for
permissions. Should you run into any trouble at this point, consult
[strava-offline][] readme or open an issue.

If you make changes to older activities (to assign a different bike to a
ride, for example), you may need a `--full` re-sync rathen than the default
incremental one. See the [note about incremental synchronization](https://github.com/liskin/strava-offline#note-about-incremental-synchronization)
for a detailed explanation.

* Run `strava-ical`:

```
$ strava-ical --max-size 1M -o strava-activities.ical
```

* Import `strava-activities.ical` into your calendar app of choice.

(Note that Google Calendar refreshes iCal URLs once a day and cannot be
tweaked in any way. Manual refresh isn't possible either.)

## Command line options

$ strava-ical --help
Usage: strava-ical [OPTIONS]

Generate iCalendar with your Strava activities

Options:
--csv FILENAME Load activities from CSV instead of the strava-offline database (columns: distance,
elapsed_time, id, moving_time, name, start_date, start_latlng, total_elevation_gain, type)
--strava-database PATH Location of the strava-offline database [default:
/home/user/.local/share/strava_offline/strava.sqlite]
-o, --output FILENAME Output file [default: -]
-m, --max-size SIZE Maximum size of the output file in bytes (accepts K and M suffixes as well)
--help Show this message and exit.

## Contributing

### Code

We welcome bug fixes, (reasonable) new features, documentation improvements,
and more. Submit these as GitHub pull requests. Use GitHub issues to report
bugs and discuss non-trivial code improvements; alternatively, get in touch
via [IRC/Matrix/Fediverse](https://work.lisk.in/contact/).

See [CONTRIBUTING.md](CONTRIBUTING.md) for more details about the code base
(including running tests locally).

Note that this project was born out of a desire to solve a problem I was
facing. While I'm excited to share it with the world, keep in mind that I'll
be prioritizing features and bug fixes that align with my personal use cases.
There may be times when I'm busy with other commitments and replies to
contributions might be delayed, or even occasionally missed. Progress may come
in bursts. Adjust your expectations accordingly.

### Donations (♥ = €)

If you like this tool and wish to support its development and maintenance,
please consider [a small donation](https://www.paypal.me/lisknisi/5EUR) or
[recurrent support through GitHub Sponsors](https://github.com/sponsors/liskin).

By donating, you'll also support the development of my other projects. You
might like these:

* [strava-offline](https://github.com/liskin/strava-offline) – Keep a local mirror of Strava activities for further analysis/processing
* [strava-gear](https://github.com/liskin/strava-gear) – Rule based tracker of gear and component wear primarily for Strava
* [strava-map-switcher](https://github.com/liskin/strava-map-switcher) – Map switcher for Strava website
* [foursquare-swarm-ical](https://github.com/liskin/foursquare-swarm-ical) – Sync Foursquare Swarm check-ins to local sqlite DB and generate iCalendar