Exemplo n.º 1
0
    def get_nightly_recharges(self):
        nightly_recharges = self.accesslink.nightly_recharge.list(
            access_token=self.config["access_token"])

        if not nightly_recharges:
            print("No nightly recharges available.")
            return

        pretty_print_json(nightly_recharges)
Exemplo n.º 2
0
    def get_sleep_data(self):
        sleep_data = self.accesslink.sleep_data.list(
            access_token=self.config["access_token"])

        if not sleep_data:
            print("No sleep data available.")
            return

        pretty_print_json(sleep_data)
 def get_user_information(self):
     user_info = self.accesslink.users.get_information(
         user_id=self.config['user_id'],
         access_token=self.config['access_token'])
     print('==========\tUSER INFORMATION\t==========')
     utils.pretty_print_json(user_info)
     utils.save_json_to_file(
         user_info,
         f'user_data/user_data_{datetime.today().strftime("%Y-%m-%d")}.json'
     )
    def get_daily_activity(self):
        transaction = self.accesslink.daily_activity.create_transaction(user_id=self.config["user_id"],
                                                                        access_token=self.config["access_token"])
        if not transaction:
            print("No new daily activity available.")
            return

        resource_urls = transaction.list_activities()["activity-log"]

        for url in resource_urls:
            activity_summary = transaction.get_activity_summary(url)

            print("Activity summary:")
            pretty_print_json(activity_summary)

        transaction.commit()
    def get_physical_info(self):
        transaction = self.accesslink.physical_info.create_transaction(user_id=self.config["user_id"],
                                                                       access_token=self.config["access_token"])
        if not transaction:
            print("No new physical information available.")
            return

        resource_urls = transaction.list_physical_infos()["physical-informations"]

        for url in resource_urls:
            physical_info = transaction.get_physical_info(url)

            print("Physical info:")
            pretty_print_json(physical_info)

        transaction.commit()
    def get_exercises(self):
        transaction = self.accesslink.training_data.create_transaction(user_id=self.config["user_id"],
                                                                       access_token=self.config["access_token"])
        if not transaction:
            print("No new exercises available.")
            return

        resource_urls = transaction.list_exercises()["exercises"]

        for url in resource_urls:
            exercise_summary = transaction.get_exercise_summary(url)

            print("Exercise summary:")
            pretty_print_json(exercise_summary)

        transaction.commit()
    def check_available_data(self):
        available_data = self.accesslink.pull_notifications.list()

        if not available_data:
            print("No new data available.")
            return

        print("Available data:")
        pretty_print_json(available_data)

        for item in available_data["available-user-data"]:
            if item["data-type"] == "EXERCISE":
                self.get_exercises()
            elif item["data-type"] == "ACTIVITY_SUMMARY":
                self.get_daily_activity()
            elif item["data-type"] == "PHYSICAL_INFORMATION":
                self.get_physical_info()
    def get_exercises(self):
        transaction = self.accesslink.training_data.create_transaction(
            user_id=self.config['user_id'],
            access_token=self.config['access_token'])
        if not transaction:
            print('No new exercises available.')
            return

        resource_urls = transaction.list_exercises()['exercises']

        for url in resource_urls:
            exercise_summary = transaction.get_exercise_summary(url)
            gpx_data = transaction.get_gpx(url)
            tcx_data = transaction.get_tcx(url)
            hr_data = transaction.get_heart_rate_zones(url)
            samples_data = transaction.get_available_samples(url)
            sample_data = transaction.get_samples(url)

            print('Exercise summary:')
            utils.pretty_print_json(exercise_summary)
            time = utils.polar_datetime_to_python_datetime_str(
                str(exercise_summary['start-time']))
            utils.save_json_to_file(
                exercise_summary, f'exercises_data/summary_data_{time}.json')
            if gpx_data:  # not empty dict. If there is no data, this variable will have '{}' value
                utils.save_json_to_file(
                    utils.xml_to_dict(gpx_data),
                    f'exercises_data/gpx_data_{time}.json')
            if tcx_data:
                utils.save_json_to_file(
                    utils.xml_to_dict(tcx_data),
                    f'exercises_data/tcx_data_{time}.json')
            if hr_data:
                utils.save_json_to_file(hr_data,
                                        f'exercises_data/hr_data_{time}.json')
            if samples_data:
                utils.save_json_to_file(
                    samples_data, f'exercises_data/samples_data_{time}.json')
            if sample_data:
                utils.save_json_to_file(
                    sample_data, f'exercises_data/sample_data_{time}.json')

        transaction.commit()
    def check_available_data(self):
        available_data = self.accesslink.pull_notifications.list()

        print('==========\tDATA\t==========')

        if not available_data:
            print('No new data available.')
            return

        print('Available data:')
        utils.pretty_print_json(available_data)

        for item in available_data['available-user-data']:
            if item['data-type'] == 'EXERCISE':
                self.get_exercises()
            elif item['data-type'] == 'ACTIVITY_SUMMARY':
                self.get_daily_activity()
            elif item['data-type'] == 'PHYSICAL_INFORMATION':
                self.get_physical_info()
    def request_graphql(self,
                        operation: str,
                        variables: dict = None,
                        error_log: bool = True) -> dict:
        """Send a post request with your operation to a GraphQL api.

        Args:
            operation (str):
              GraphQL operation, either query (to retrieve data), mutation (to
              post data) or a subscription.
            variables (dict, optional): If the operation uses variables,
              send those as a dictionary with this arg.
            error_log (bool, optional): If True, catches and logs error in the
              response body. Does not raise an error. Important: This log refers
              to a valid request with an error as a response. If the request is
              invalid, this function raises a HTTPError which is independent
              from this argument.

        Returns:
            json: The response from the api-request.

        Raises:
            HTTPError: If request to GitHub api returns anything other than
            2xx status code.
        """

        response_raw = requests.post(self.base_url,
                                     headers=self.headers,
                                     json={
                                         'query': operation,
                                         'variables': variables
                                     })
        response_raw.raise_for_status()
        response = response_raw.json()

        # Even if response was 200 and a json was returned, the response may
        # still contain an error if the query was not correct.
        if error_log:
            if response.get('errors'):
                self._logger.debug('Your request returned an error: \n')
                pretty_print_json(response, logger=self._logger)

        return response
    def get_daily_activity(self):
        transaction = self.accesslink.daily_activity.create_transaction(
            user_id=self.config['user_id'],
            access_token=self.config['access_token'])
        if not transaction:
            print('No new daily activity available.')
            return

        resource_urls = transaction.list_activities()['activity-log']

        for url in resource_urls:
            activity_summary = transaction.get_activity_summary(url)

            print('Activity summary:')
            utils.pretty_print_json(activity_summary)
            utils.save_json_to_file(
                activity_summary,
                f'daily_activity_data/daily_activity_data_{str(activity_summary["date"])}.json'
            )

        transaction.commit()
    def get_nightly_recharge(self):
        # get latest nights recharge data
        from datetime import date
        today = date.today()
        d = today.strftime("%Y-%m-%d")
        nightly_recharge = self.accesslink.nightly_recharge.get_nightly_recharge(
            d,
            user_id=self.config["user_id"],
            access_token=self.config["access_token"])
        #pretty_print_json(nightly_recharge)

        return pretty_print_json(nightly_recharge)
    def get_physical_info(self):
        transaction = self.accesslink.physical_info.create_transaction(
            user_id=self.config['user_id'],
            access_token=self.config['access_token'])
        if not transaction:
            print('No new physical information available.')
            return

        resource_urls = transaction.list_physical_infos(
        )['physical-informations']

        for url in resource_urls:
            physical_info = transaction.get_physical_info(url)

            print('Physical info:')
            utils.pretty_print_json(physical_info)
            time = utils.polar_datetime_to_python_datetime_str(
                str(physical_info['created']))
            utils.save_json_to_file(physical_info,
                                    f'physical_data/physical_data{time}.json')

        transaction.commit()
Exemplo n.º 14
0
  def parseAndConvert(self):
    """Parse and convert gpx data files to geojson"""
    files = self.listFiles()
    coordinates = []
    print('......................................')
    for f in files:
      print('Parse and convert datafile:',f)
      file = self.config['gpx']+'/'+f
      fileName = file.split('.')[0]
      fileName = fileName.split('/')[-1]
      root = ET.parse(self.config['gpx']+'/'+f).getroot()
      for child in root:
        for child in child:
          if 'trkseg' in child.tag: 
            for child in child:
              coordinates.append([child.attrib['lon'],child.attrib['lat']])

      geos = []
      feature = {
        'type': 'Feature',
        'type': 'LineString',
        'geometry': {
          'type': 'LineString',
          'coordinates': [[lon,lat] for lon,lat in coordinates]
        },
        'properties': {
            'prop0': 'value0'
        }
      }
      geos.append(feature)
      geometries = {
        'type': 'FeatureCollection',
        'features': geos,
      }
      self.writeToFile(fileName, 'json', pretty_print_json(geometries))
      print('......................................')
 def get_recharge_info(self):
     recharge_info = self.accesslink.nightly_recharge.list_nightly_recharges(
         user_id=self.config["user_id"],
         access_token=self.config["access_token"])
     pretty_print_json(recharge_info)
        # Even if response was 200 and a json was returned, the response may
        # still contain an error if the query was not correct.
        if error_log:
            if response.get('errors'):
                self._logger.debug('Your request returned an error: \n')
                pretty_print_json(response, logger=self._logger)

        return response

    def get_marketplace_categories(self):
        query = '''
        query get_marketplace_categories { 
          marketplaceCategories {
            name
            primaryListingCount
            description
          }
        }
        '''

        data = self.request_graphql(query)
        return data


if __name__ == '__main__':
    graphql_client = GraphQLClient(base_url='https://api.github.com/graphql',
                                   token=github_personal_access_token)
    marketplace_categories = graphql_client.get_marketplace_categories()
    pretty_print_json(marketplace_categories)
 def get_user_information(self):
     user_info = self.accesslink.users.get_information(user_id=self.config["user_id"],
                                                       access_token=self.config["access_token"])
     pretty_print_json(user_info)
 def list_nightly_recharges(self):
     nightly_recharges = self.accesslink.nightly_recharge.list_nightly_recharges(
         user_id=self.config["user_id"],
         access_token=self.config["access_token"])
     pretty_print_json(nightly_recharges)