コード例 #1
0
ファイル: Strava.py プロジェクト: 3thirty/strava_charts
    def getAllActivities(self) -> ActivityList:
        """
        Get all activities for the user, for all time. Keep walking back
        page-by-page until it looks like we have everything

        return: ActivityList
        """
        page = 1
        done = False
        out = ActivityList()

        while (not done):
            activities = self.getActivitiesPage(page, self.MAX_PAGE_SIZE)

            for activity in activities:
                try:
                    out.append(Activity.newFromDict(activity))
                except ValueError as e:
                    self.log.warning("Activity missing required field: %s" % e)

            page = page + 1

            if (len(activities) < self.MAX_PAGE_SIZE):
                self.log.debug(
                    "Asked for %d got %d. Assuming all activities are fetched"
                    % (self.MAX_PAGE_SIZE, len(activities)))

                done = True

        return out
コード例 #2
0
ファイル: Strava.py プロジェクト: 3thirty/strava_charts
    def getActivities(self, num: int, offset: int = 0) -> ActivityList:
        orig_num = num

        if (num > self.MAX_PAGE_SIZE):
            remaining = num - self.MAX_PAGE_SIZE
            num = self.MAX_PAGE_SIZE
        else:
            remaining = 0

        out = ActivityList()
        while (remaining >= 0):
            self.log.debug(
                "pagination parameters are: num=%s offset=%s remaining=%s" %
                (num, offset, remaining))

            page = math.floor(offset / num) + 1

            activities = self.getActivitiesPage(page, num)

            for activity in activities:
                try:
                    out.append(Activity.newFromDict(activity))
                except ValueError as e:
                    self.log.warning("Activity missing required field: %s" % e)

            offset += num
            remaining = orig_num - offset
            num = self.MAX_PAGE_SIZE

        out = out.sortByDate(True)

        if (len(out) > orig_num):
            return ActivityList.slice(out, 0, orig_num)

        return out