Ejemplo n.º 1
0
    def __init__(self,  colour, brightness, input_stream, audio_spectrum, spectrum_analysis, display_spectrum, log_path, *args, **kwargs):
        super(Libra, self).__init__(colour, brightness, input_stream, audio_spectrum, spectrum_analysis, display_spectrum, *args, **kwargs)
        
        self.__logger = Logging.getInstance(Logging.DEB)
        self.__logger.open(log_path)
        
        self.direction = 1

        self.__logger.write(Logging.DEB, "Starting Libra display")
Ejemplo n.º 2
0
    def update_json(config_path, data_map, log_path):
        logger = Logging.getInstance(Logging.DEB)
        logger.open(log_path)
        logger.write(Logging.DEB,
                     "Attempting to update config file: " + config_path)

        exist_config = FileManagement.read_json(config_path, log_path)
        if exist_config is not None:
            exist_config.update(data_map)
            FileManagement.write_json(config_path, exist_config, log_path)
        else:
            logger.write(Logging.ERR, "Unable to update file")
Ejemplo n.º 3
0
 def write_json(config_path, data_map, log_path):
     logger = Logging.getInstance(Logging.DEB)
     logger.open(log_path)
     logger.write(
         Logging.DEB, "Writing config data: " + json.dumps(data_map) +
         ", to file: " + config_path)
     try:
         with open(config_path, 'w') as file:
             file.write(json.dumps(data_map))
     except Exception as e:
         logger.write(Logging.ERR,
                      "Cannot open file to write data: " + str(e))
Ejemplo n.º 4
0
    def fix_config_data(config_data, colour_key, pattern_key, brightness_key,
                        config_path, log_path):
        logger = Logging.getInstance(Logging.DEB)
        logger.open(log_path)

        config_data, config_error = DataExtraction.verify_config_data(
            config_data, colour_key, pattern_key, brightness_key, log_path)

        if config_error is True:
            FileManagement.write_json(config_path, config_data, log_path)
            logger.write(Logging.WAR, "Error in config data so updated file")

        return config_data
Ejemplo n.º 5
0
    def __is_config_int(config_type, key, min, max, log_path):
        logger = Logging.getInstance(Logging.DEB)
        logger.open(log_path)

        try:
            config_type_int = int(config_type)
            if config_type_int < min or config_type_int > max:
                raise ValueError

            return True
        except ValueError as e:
            logger.write(Logging.ERR,
                         "Exception with config key: " + key + " " + str(e))
            return False
Ejemplo n.º 6
0
    def verify_config_data(config_data, colour_key, pattern_key,
                           brightness_key, log_path):
        logger = Logging.getInstance(Logging.DEB)
        logger.open(log_path)

        config_error = False

        if colour_key not in config_data:
            config_data[colour_key] = 'rgba(18,237,159,1)'
            logger.write(Logging.WAR,
                         "Colour config not present, setting to default")
            config_error = True
        elif not config_data[colour_key]:
            config_data[colour_key] = 'rgba(0,0,0,0)'

        if (pattern_key not in config_data or not config_data[pattern_key]
            ) or DataExtraction.__is_config_int(config_data[pattern_key],
                                                pattern_key, 1, 4,
                                                log_path) is False:
            config_data[pattern_key] = '1'
            logger.write(Logging.WAR,
                         "Pattern key not present, setting to default")
            config_error = True

        rgb_regex = '^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%?\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%?\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%?\\s*\\)$'
        rgba_regex = '^rgba\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%?\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%?\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%?\\s*,\\s*((0.[1-9])|[01])\\s*\\)$'

        if not re.match(rgb_regex, config_data[colour_key]):
            if not re.match(rgba_regex, config_data[colour_key]):
                config_data[colour_key] = 'rgba(18,237,159,1)'
                logger.write(
                    Logging.WAR,
                    "Colour config does not match RBG or RGBA, setting to default"
                )
                config_error = True

        if brightness_key not in config_data or DataExtraction.__is_config_int(
                config_data[brightness_key], brightness_key, 0, 100,
                log_path) is False:
            config_data[brightness_key] = '50'
            logger.write(Logging.WAR,
                         "Invalid Brightness config, setting to default")
            config_error = True

        return config_data, config_error
Ejemplo n.º 7
0
    def read_json(config_path, log_path):
        logger = Logging.getInstance(Logging.DEB)
        logger.open(log_path)
        logger.write(Logging.DEB,
                     "Reading config data from file: " + config_path)

        data_map = {}

        try:
            with io.open(config_path, encoding='utf-8') as file:
                data_map = json.load(file)

            logger.write(Logging.DEB,
                         "Read config data from file: " + json.dumps(data_map))
        except Exception as e:
            logger.write(Logging.ERR,
                         "Cannot open file to read data: " + str(e))

        return data_map
Ejemplo n.º 8
0
    def __init__(self, call_back, path, file_pattern, ignore_pattern,
                 ignore_dirs, recursive, case_sensitive, log_path):
        self.__logger = Logging.getInstance(Logging.DEB)
        self.__logger.open(log_path)

        self.__call_back = call_back

        self.__logger.write(
            Logging.INF,
            "Creating monitor of file path: " + path + ", with pattern: " +
            file_pattern + ", ignoring: " + ignore_pattern + ", dir ignore? " +
            str(ignore_dirs) + ", recursive? " + str(recursive) +
            ", case sensitivity? " + str(case_sensitive) +
            ", with callback: " + self.__call_back.__name__)

        self.__watchdog_handler = PatternMatchingEventHandler(
            file_pattern, ignore_pattern, ignore_dirs, case_sensitive)
        self.__watchdog_handler.on_created = self.on_created
        self.__watchdog_handler.on_modified = self.on_modified

        self.__watchdog_observer = Observer()
        self.__watchdog_observer.schedule(self.__watchdog_handler,
                                          path,
                                          recursive=recursive)
Ejemplo n.º 9
0
        elif pattern == '4':
            self.display_pattern = Libra(
                colour=colour,
                brightness=brightness,
                input_stream=self.input_stream,
                audio_spectrum=self.audio_spectrum,
                spectrum_analysis=self.spectrum_analysis,
                display_spectrum=self.display_spectrum,
                log_path=log_path)

        if self.display_pattern is not None:
            self.display_pattern.process()


if __name__ == '__main__':
    logger = Logging.getInstance(Logging.DEB)
    logger.open(log_path)

    control = Control()

    monitor_config = WatchdogConfig(control.stop, config_dir, '*.txt', '',
                                    True, False, False, log_path)
    monitor_thread = threading.Thread(target=monitor_config.start_observing)
    monitor_thread.start()

    control.load_audio_dev()
    try:
        control.ip_check_display()
        while True:
            control.load_display(False)
    except KeyboardInterrupt: