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