Example #1
0
    def pull_data(self, members, challenges):
        client = Client()

        for m in members:
            logger.debug("processing member: {}".format(m))

            # Check if the access token needs renewing.  Should last 6hrs, so only needs doing once regardless of how many calls we make.
            if time.time() > m.access_token_expiry:
                logger.info("Renewing token")
                refresh_response = client.refresh_access_token(
                    client_id=config.strava_client_id,
                    client_secret=config.strava_client_secret,
                    refresh_token=m.refresh_token)
                m.access_token = refresh_response['access_token']
                m.refresh_token = refresh_response['refresh_token']
                m.access_token_expiry = refresh_response['expires_at']
                m.save()

            client.access_token = m.access_token
            client.refresh_token = m.refresh_token
            client.token_expires_at = m.access_token_expiry

            for c in challenges:
                logger.debug("Processing challenge: {}".format(c))

                efforts = client.get_segment_efforts(
                    c.segment_id,
                    start_date_local=c.date_from,
                    end_date_local=c.date_to)
                for e in efforts:
                    logger.debug("Processing effort: {}".format(e))
                    Attempt.add(e, m, c)
Example #2
0
def get_client():
    client = Client()
    token = load_token()
    client.refresh_token = token["refresh_token"]
    if token["expires_at"] < time.time():
        token = refresh_token(client)
    client.access_token = token["access_token"]
    return client
Example #3
0
settings = load_config()
client = Client()

if time.time() > int(settings['expires_at']):
    print("Renewing tokens")
    refresh_response = client.refresh_access_token(
        client_id=settings['client_id'],
        client_secret=settings['client_secret'],
        refresh_token=settings['refresh_token'])
    settings['refresh_token'] = refresh_response['refresh_token']
    settings['access_token'] = refresh_response['access_token']
    settings['expires_at'] = refresh_response['expires_at']
    save_config(settings)
else:
    client.access_token = settings['access_token']
    client.refresh_token = settings['refresh_token']
    client.expires_at = settings['expires_at']

activities = client.get_activities(limit=10)

for activity in activities:
    if activity.type == 'Run':
        ms = activity.average_speed
        km = activity.distance / 1000
        mile = km * 0.621371

        km_pace = 1000 / (ms * 60)
        sec_km, min_km = math.modf(km_pace)
        sec_km = sec_km * 60

        mile_pace = km_pace / 0.621371
def add_challenge(segment_id, year, month):
    segment = client.get_segment(segment_id)

    print(segment)

    Challenge.add(segment, year, month)


if __name__ == '__main__':
    m = Member.objects.filter(refresh_token__gte="").limit(1)

    print(list(m))
    m = list(m)[0]

    client.access_token = m.access_token
    client.refresh_token = m.refresh_token
    client.token_expires_at = m.access_token_expiry

    # Check if the access token needs renewing.  Should last 6hrs, so only needs doing once regardless of how many calls we make.
    if time.time() > m.access_token_expiry:
        logger.info("Renewing token")
        refresh_response = client.refresh_access_token(
            client_id=config.strava_client_id,
            client_secret=config.strava_client_secret,
            refresh_token=m.refresh_token)
        m.access_token = refresh_response['access_token']
        m.refresh_token = refresh_response['refresh_token']
        m.access_token_expiry = refresh_response['expires_at']
        m.save()

    add_challenge(4896037, 2019, 2)