コード例 #1
0
def fetchStrava(code, request):
    if request.user == '' or request.user == None:
        request.user = '******'
    access_token = getAccessToken(code)
    activites_url = "https://www.strava.com/api/v3/athlete/activities"
    header = {'Authorization': 'Bearer ' + access_token}
    print("Fill database")
    i = 1
    while True:
        param = {'per_page': 200, 'page': i}
        current_activities = Activity.objects.filter(user=request.user)
        current_ids = set([i.strava_id for i in current_activities])
        print(len(current_activities))
        print(len(current_ids))
        strava_activities = requests.get(activites_url,
                                         headers=header,
                                         params=param).json()
        print("current batch -  " + str(len(strava_activities)))
        if len(strava_activities) == 0:
            break
        i += 1
        for strava_activity in strava_activities:
            if strava_activity["id"] not in current_ids:
                activity = Activity()
                activity.strava_id = strava_activity["id"]
                activity.user = request.user
                activity.title = strava_activity["name"]
                activity.activity_type = strava_activity["type"]
                activity.date = datetime.strptime(
                    strava_activity['start_date'][2:10], '%y-%m-%d')
                activity.timestamp = datetime.timestamp(activity.date)
                if strava_activity['has_heartrate']:
                    activity.heartrate = strava_activity['average_heartrate']
                    if 'suffer_score' in strava_activity:
                        activity.suffer = strava_activity['suffer_score']
                    else:
                        activity.suffer = 0
                else:
                    activity.heartrate = 0
                    activity.suffer = 0
                activity.distance = strava_activity['distance'] / 1000
                activity.moving_time = strava_activity['elapsed_time']
                activity.elevation = strava_activity['total_elevation_gain']
                activity.speed = strava_activity['average_speed']
                if activity.activity_type == "Run" or activity.activity_type == "Ride":
                    if strava_activity['workout_type'] == None:
                        activity.workout_type = 'niks'
                    else:
                        activity.workout_type = strava_activity['workout_type']
                activity.save()