added script for getting one particular activity
This commit is contained in:
parent
2c70311ff4
commit
81d4ecf26d
70
get_activity.py
Executable file
70
get_activity.py
Executable file
@ -0,0 +1,70 @@
|
||||
#! /usr/bin/env python
|
||||
"""A program that downloads one particular activity from a given Garmin
|
||||
Connect account and stores it locally on the user's computer.
|
||||
"""
|
||||
import argparse
|
||||
import getpass
|
||||
from garminexport.garminclient import GarminClient
|
||||
import garminexport.util
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO, format="%(asctime)-15s [%(levelname)s] %(message)s")
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
LOG_LEVELS = {
|
||||
"DEBUG": logging.DEBUG,
|
||||
"INFO": logging.INFO,
|
||||
"WARNING": logging.WARNING,
|
||||
"ERROR": logging.ERROR
|
||||
}
|
||||
"""Command-line (string-based) log-level mapping to logging module levels."""
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description=("Downloads one particular activity for a given "
|
||||
"Garmin Connect account."))
|
||||
# positional args
|
||||
parser.add_argument(
|
||||
"username", metavar="<username>", type=str, help="Account user name.")
|
||||
parser.add_argument(
|
||||
"activity", metavar="<activity>", type=int, help="Activity ID.")
|
||||
|
||||
# optional args
|
||||
parser.add_argument(
|
||||
"--password", type=str, help="Account password.")
|
||||
parser.add_argument(
|
||||
"--destination", metavar="DIR", type=str,
|
||||
help=("Destination directory for downloaded activity. Default: "
|
||||
"./activities/"), default=os.path.join(".", "activities"))
|
||||
parser.add_argument(
|
||||
"--log-level", metavar="LEVEL", type=str,
|
||||
help=("Desired log output level (DEBUG, INFO, WARNING, ERROR). "
|
||||
"Default: INFO."), default="INFO")
|
||||
|
||||
args = parser.parse_args()
|
||||
if not args.log_level in LOG_LEVELS:
|
||||
raise ValueError("Illegal log-level argument: {}".format(args.log_level))
|
||||
logging.root.setLevel(LOG_LEVELS[args.log_level])
|
||||
|
||||
try:
|
||||
if not os.path.isdir(args.destination):
|
||||
os.makedirs(args.destination)
|
||||
|
||||
if not args.password:
|
||||
args.password = getpass.getpass("Enter password: ")
|
||||
|
||||
with GarminClient(args.username, args.password) as client:
|
||||
log.info("fetching activity {} ...".format(args.activity))
|
||||
garminexport.util.save_activity(
|
||||
client, args.activity, args.destination)
|
||||
except Exception as e:
|
||||
exc_type, exc_value, exc_traceback = sys.exc_info()
|
||||
log.error(u"failed with exception: %s", e)
|
||||
raise
|
||||
|
Loading…
Reference in New Issue
Block a user