Ejemplo n.º 1
0
 def process_files(self, db_params_dict):
     """Import monitoring FIT files into the database."""
     fp = FitFileProcessor(db_params_dict, self.debug)
     for file_name in progressbar.progressbar(self.file_names):
         try:
             fp.write_file(Fit.file.File(file_name,
                                         self.measurement_system))
         except Fit.exceptions.FitFileError as e:
             logger.error("Failed to parse %s: %s", file_name, e)
Ejemplo n.º 2
0
 def process_files(self, db_params_dict):
     """Import monitoring FIT files into the database."""
     fp = FitFileProcessor(db_params_dict, self.debug)
     for file_name in progressbar.progressbar(self.file_names):
         try:
             fit_file = Fit.file.File(file_name, self.measurement_system)
             if fit_file.type() == Fit.field_enums.FileType.monitoring_b:
                 fp.write_file(fit_file)
             else:
                 root_logger.info(
                     "skipping non monitoring file %s type %r message types %r",
                     file_name, fit_file.type(), fit_file.message_types())
         except Fit.exceptions.FitFileError as e:
             logger.error("Failed to parse %s: %s", file_name, e)
Ejemplo n.º 3
0
 def process_files(self, db_params):
     """Import FIT files into the database."""
     fp = FitFileProcessor(db_params, self.debug)
     for file_name in tqdm(self.file_names, unit='files'):
         try:
             fit_file = Fit.file.File(file_name, self.measurement_system)
             if self.fit_types is None or fit_file.type in self.fit_types:
                 fp.write_file(fit_file)
                 root_logger.info(
                     "Wrote Fit file %s type %s to the database", file_name,
                     fit_file.type)
             else:
                 root_logger.info(
                     "skipping non-matching %s file %s type %r message types %r",
                     self.fit_types, file_name, fit_file.type,
                     fit_file.message_types)
         except Exception as e:
             logger.error("Failed to parse %s: %s", file_name, e)
             root_logger.error("Failed to parse %s: %s", file_name, e)
Ejemplo n.º 4
0
def import_data(debug, latest, stats):
    """Import previously downloaded Garmin data into the database."""
    logger.info("___Importing %s Data___", 'Latest' if latest else 'All')

    ignore_dev_fields = gc_config.ignore_dev_fields()

    # Import the user profile and/or settings FIT file first so that we can get the measurement system and some other things sorted out first.
    fit_files_dir = GarminDBConfigManager.get_or_create_fit_files_dir()
    gp = GarminProfile(db_params_dict, fit_files_dir, debug)
    if gp.file_count() > 0:
        gp.process()

    gsfd = GarminSettingsFitData(fit_files_dir, debug)
    if gsfd.file_count() > 0:
        gsfd.process_files(
            FitFileProcessor(db_params_dict, plugin_manager, ignore_dev_fields,
                             debug))

    garmindb = GarminDB.GarminDB(db_params_dict)
    measurement_system = GarminDB.Attributes.measurements_type(garmindb)

    if Statistics.weight in stats:
        weight_dir = GarminDBConfigManager.get_or_create_weight_dir()
        gwd = GarminWeightData(db_params_dict, weight_dir, latest,
                               measurement_system, debug)
        if gwd.file_count() > 0:
            gwd.process()

    if Statistics.monitoring in stats:
        monitoring_dir = GarminDBConfigManager.get_or_create_monitoring_base_dir(
        )
        gsd = GarminSummaryData(db_params_dict, monitoring_dir, latest,
                                measurement_system, debug)
        if gsd.file_count() > 0:
            gsd.process()

        ghd = GarminHydrationData(db_params_dict, monitoring_dir, latest,
                                  measurement_system, debug)
        if ghd.file_count() > 0:
            ghd.process()

        gfd = GarminMonitoringFitData(monitoring_dir, latest,
                                      measurement_system, debug)
        if gfd.file_count() > 0:
            gfd.process_files(
                MonitoringFitFileProcessor(db_params_dict, plugin_manager,
                                           ignore_dev_fields, debug))

    if Statistics.sleep in stats:
        sleep_dir = GarminDBConfigManager.get_or_create_sleep_dir()
        gsd = GarminSleepData(db_params_dict, sleep_dir, latest, debug)
        if gsd.file_count() > 0:
            gsd.process()

    if Statistics.rhr in stats:
        rhr_dir = GarminDBConfigManager.get_or_create_rhr_dir()
        grhrd = GarminRhrData(db_params_dict, rhr_dir, latest, debug)
        if grhrd.file_count() > 0:
            grhrd.process()

    if Statistics.activities in stats:
        activities_dir = GarminDBConfigManager.get_or_create_activities_dir()
        # Tcx fields are less precise than the JSON files, so load Tcx first and overwrite with better JSON values.
        gtd = GarminTcxData(activities_dir, latest, measurement_system, debug)
        if gtd.file_count() > 0:
            gtd.process_files(db_params_dict)

        gjsd = GarminJsonSummaryData(db_params_dict, activities_dir, latest,
                                     measurement_system, debug)
        if gjsd.file_count() > 0:
            gjsd.process()

        gdjd = GarminJsonDetailsData(db_params_dict, activities_dir, latest,
                                     measurement_system, debug)
        if gdjd.file_count() > 0:
            gdjd.process()

        gfd = GarminActivitiesFitData(activities_dir, latest,
                                      measurement_system, debug)
        if gfd.file_count() > 0:
            gfd.process_files(
                ActivityFitFileProcessor(db_params_dict, plugin_manager,
                                         ignore_dev_fields, debug))