Git Product home page Git Product logo

strava-ical's Introduction

strava-ical

PyPI Python Version badge PyPI Version badge License badge

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

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.

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 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.

See 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 or recurrent support through GitHub Sponsors.

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

  • strava-offline – Keep a local mirror of Strava activities for further analysis/processing
  • strava-gear – Rule based tracker of gear and component wear primarily for Strava
  • strava-map-switcher – Map switcher for Strava website
  • foursquare-swarm-ical – Sync Foursquare Swarm check-ins to local sqlite DB and generate iCalendar

strava-ical's People

Contributors

dependabot[bot] avatar liskin avatar

Watchers

 avatar  avatar

Forkers

c-yassin

strava-ical's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.