Esempio n. 1
0
def main():
    opter = optparse.OptionParser()
    opter.add_option("--csv", action="store_true", default = False)
    opter.add_option("-a", "--athlete", dest="athlete", type="int")

    opts, args = opter.parse_args()

    if opts.athlete is None:
        aid = myid()
    else:
        aid = opts.athlete

    if len(args) == 0:
        sort_key = 'startDate'
    elif len(args) > 1:
        opter.error("Sort argument must be ...") # FIXME: populate this
    else:
        sort_key = args[0]

    rides = get_ride_infos(aid = aid)


    if opts.csv:
        headings = sorted(rides[0].keys())

        out = []
        out.append(show_csv_heading())
        for r in rides:
            out.append(show_csv(r))
        #open("to_r.csv", "w+").write("\n".join(out))
        print "\n".join(out)

    else:
        s = sorted(rides, key = lambda k: k[sort_key])
        print "\n\n".join(show_ride(r) for r in s)
Esempio n. 2
0
def get_ride_infos():
    allrides = geturl("http://www.strava.com/api/v1/rides?athleteId=%s" % myid(), cache=False)


    rides = []
    for r in allrides['rides']:
        rid = r['id']
        info = geturl("http://www.strava.com/api/v1/rides/%s" % rid)


        sortables = {}

        sortables['name'] = info['ride']['name']
        sortables['averageSpeed'] = info['ride']['averageSpeed'] * (_m/_sec)
        sortables['maximumSpeed'] = info['ride']['maximumSpeed'] * (_m/_hour)
        sortables['distance'] = info['ride']['distance'] * _m
        sortables['movingTime'] = (info['ride']['movingTime'] * _sec).asUnit(_hour)
        if info['ride']['averageWatts'] is None:
            sortables['averageWatts'] = -1 * _watt
        else:
            sortables['averageWatts'] = info['ride']['averageWatts'] * _watt
        sortables['elevationGain'] = info['ride']['elevationGain'] * _m

        rides.append(
            sortables)

    return rides
import sys
from common import geturl, myid
from unum.units import m as _m, km as _km, mile as _miles, s as _sec, h as _hour, d as _day

import unum
unum.Unum.VALUE_FORMAT = "%.01f"


if len(sys.argv) > 1:
    aid = sys.argv[1]
    print "Using %s from argument" % aid
else:
    aid = myid()
    print "Using my athlete ID, %s" % aid

allrides = geturl("http://www.strava.com/api/v1/rides?athleteId=%s" % aid, cache=False)


# Collect ride info, calculate total distance (since sum() dislikes unum objects)
total_dist = 0*_km

for r in allrides['rides']:
    rid = r['id']
    info = geturl("http://www.strava.com/api/v1/rides/%s" % rid)


    if not info['ride']['startDate'].startswith("2012-05-"):
        # Only consider rides in May
        continue

    dist = info['ride']['distance'] * (_m)
Esempio n. 4
0
"""


import optparse
opter = optparse.OptionParser()
opter.add_option("-a", "--athlete", dest="athlete", type="int")
opter.add_option("-d", "--downsample", dest="downsample", type="int", default=50)
opter.add_option("-o", "--out", dest="out", default="mymap.html")
opter.add_option("-l", "--limit", dest="pagelimit", default=4,
help = "Each page contains 50 rides. -l 4 will download at most 200 rides (starting with the most recent)")

opts, args = opter.parse_args()

if opts.athlete is None:
    import common
    aid = common.myid()
else:
    aid = opts.athlete


def get_ride_info(offset=0):
    allrides = geturl("http://www.strava.com/api/v1/rides?athleteId=%s&offset=%s" % (aid, offset), cache=False)

    rideinfo = []


    for r in allrides['rides']:
        print "Processing %s" % r['name']
        rid = r['id']

        #meta = geturl("http://app.strava.com/api/v1/rides/%s" % rid)
Esempio n. 5
0
def get_ride_infos(aid):
    for x in range(50):
        curpage = _get_ride_infos(offset = x*50, aid = aid)
        try:
            for c in curpage:
                yield c
        except NoMoreResults:
            return


def tcx_date(epoch):
    dt = datetime.datetime.fromtimestamp(epoch)
    return dt.strftime("%Y-%m-%dT%H:%M:%SZ")


for ride in get_ride_infos(myid()):
    fname = "/Users/dbr/Desktop/tcx/ride_%d.tcx" % ride['id']
    print "Writing %s" % fname
    f = open(fname, "w+")

    f.write(prefix.format())
    f.write(actvitiy_and_lap_def.format(**ride))
    for i, point in enumerate(ride['points']):
        point['time'] = tcx_date(epoch = ride['startEpoch'] + point['time'])
        point['lat'], point['lng'] = point['latlng']

        if 'cadence' in point:
            point['cadence'] = "<Cadence>%d</Cadence>" % (point['cadence'])
        else:
            point['cadence'] = ""