garminbackup.py
is a program that downloads activities for a
given Garmin Connect account and stores
them in a backup directory locally on the user's computer. The first time
the program is run, it will download all activities. After that, it will
do incremental backups of your account. That is, the script will only download
activities that haven't already been downloaded to the backup directory.
The library contains a simple utility program, get_activity.py
for
downloading a single Garmin Connect activity. Run ./get_activity.py --help
for more details.
The library also contains a garminclient
module that could be used by third-party
projects that need to communicate over the Garmin Connect API. See the
Library Import section below for more details.
The instructions below for running the program (or importing the module) assumes that you have Python 2.7 or Python 3+, pip, and virtualenv (not required with Python 3) installed.
It also assumes that you have registered an account at Garmin Connect.
Create and activate a new virtual environment to create an isolated development environment (that contains the required dependencies and nothing else).
# using Python 2
virtualenv venv.garminexport
# using Python 3
python -m venv venv.garminexport
Activate the virtual environment
. venv.garminexport/bin/activate
Install the required dependencies in this virtual environment:
pip install -r requirements.txt
The backup program is run as follows (use the --help
flag for a full list
of available options):
./garminbackup.py --backup-dir=activities <username or email>
Once started, the program will prompt you for your account password and then log in to your Garmin Connect account to download activities to the specified backup directory on your machine. The program will only download activities that aren't already in the backup directory.
Activities can be exported in any of the formats outlined below. Note that
by default, the program downloads all formats for every activity. Use the
--format
option to narrow the selection.
Supported export formats:
-
json_summary
: activity summary file (JSON) -
json_details
: activity details file (JSON) -
gpx
: activity GPX file (XML) -
tcx
: an activity TCX file (XML). Note: a.tcx
file may not always be possible to export, for example if an activity was uploaded in gpx format. In that case, Garmin won't try to synthesize a tcx file. -
fit
: activity FIT file (binary format). Note: a.fit
file may not always be possible to export, for example if an activity was entered manually rather than imported from a Garmin device.
All files are written to the same directory (activities/
by default).
Each activity file is prefixed by its upload timestamp and its activity id.
To install the development version of this library in your local Python environment, run:
pip install -e git://github.com/petergardfjall/garminexport.git#egg=garminexport
If you prefer to use a requirements.txt
file, add the following line
to your list of dependencies:
-e git://github.com/petergardfjall/garminexport.git#egg=garminexport
and run pip with you dependency file as input:
pip install -r requirements.txt