From f5b4768d9d9894db03466b330b5ccd5ee9659943 Mon Sep 17 00:00:00 2001 From: Joaquin Madrid Belando Date: Wed, 4 Mar 2026 16:38:32 +0100 Subject: [PATCH] Cargar locuciones/grabaciones desde voice.cfg (opcional, con fallback a defaults) --- config.py | 87 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/config.py b/config.py index 851a0e0..1cfeeed 100755 --- a/config.py +++ b/config.py @@ -31,6 +31,7 @@ change. import configparser import sys +import os import const import socket @@ -157,41 +158,6 @@ def build_config(_config_file): 'VALIDATE_SERVER_IDS': config.getboolean(section, 'VALIDATE_SERVER_IDS', fallback=True), 'DEBUG_BRIDGES' : config.getboolean(section, 'DEBUG_BRIDGES', fallback=False), 'ENABLE_API' : config.getboolean(section, 'ENABLE_API', fallback=False), - 'ANNOUNCEMENT_ENABLED': config.getboolean(section, 'ANNOUNCEMENT_ENABLED', fallback=False), - 'ANNOUNCEMENT_FILE': config.get(section, 'ANNOUNCEMENT_FILE', fallback='locucion'), - 'ANNOUNCEMENT_TG': config.getint(section, 'ANNOUNCEMENT_TG', fallback=9), - 'ANNOUNCEMENT_TIMESLOT': config.getint(section, 'ANNOUNCEMENT_TIMESLOT', fallback=2), - 'ANNOUNCEMENT_MODE': config.get(section, 'ANNOUNCEMENT_MODE', fallback='hourly'), - 'ANNOUNCEMENT_INTERVAL': config.getint(section, 'ANNOUNCEMENT_INTERVAL', fallback=3600), - 'ANNOUNCEMENT_LANGUAGE': config.get(section, 'ANNOUNCEMENT_LANGUAGE', fallback='es_ES'), - 'ANNOUNCEMENT2_ENABLED': config.getboolean(section, 'ANNOUNCEMENT2_ENABLED', fallback=False), - 'ANNOUNCEMENT2_FILE': config.get(section, 'ANNOUNCEMENT2_FILE', fallback='locucion'), - 'ANNOUNCEMENT2_TG': config.getint(section, 'ANNOUNCEMENT2_TG', fallback=9), - 'ANNOUNCEMENT2_TIMESLOT': config.getint(section, 'ANNOUNCEMENT2_TIMESLOT', fallback=2), - 'ANNOUNCEMENT2_MODE': config.get(section, 'ANNOUNCEMENT2_MODE', fallback='hourly'), - 'ANNOUNCEMENT2_INTERVAL': config.getint(section, 'ANNOUNCEMENT2_INTERVAL', fallback=3600), - 'ANNOUNCEMENT2_LANGUAGE': config.get(section, 'ANNOUNCEMENT2_LANGUAGE', fallback='es_ES'), - 'ANNOUNCEMENT3_ENABLED': config.getboolean(section, 'ANNOUNCEMENT3_ENABLED', fallback=False), - 'ANNOUNCEMENT3_FILE': config.get(section, 'ANNOUNCEMENT3_FILE', fallback='locucion'), - 'ANNOUNCEMENT3_TG': config.getint(section, 'ANNOUNCEMENT3_TG', fallback=9), - 'ANNOUNCEMENT3_TIMESLOT': config.getint(section, 'ANNOUNCEMENT3_TIMESLOT', fallback=2), - 'ANNOUNCEMENT3_MODE': config.get(section, 'ANNOUNCEMENT3_MODE', fallback='hourly'), - 'ANNOUNCEMENT3_INTERVAL': config.getint(section, 'ANNOUNCEMENT3_INTERVAL', fallback=3600), - 'ANNOUNCEMENT3_LANGUAGE': config.get(section, 'ANNOUNCEMENT3_LANGUAGE', fallback='es_ES'), - 'ANNOUNCEMENT4_ENABLED': config.getboolean(section, 'ANNOUNCEMENT4_ENABLED', fallback=False), - 'ANNOUNCEMENT4_FILE': config.get(section, 'ANNOUNCEMENT4_FILE', fallback='locucion'), - 'ANNOUNCEMENT4_TG': config.getint(section, 'ANNOUNCEMENT4_TG', fallback=9), - 'ANNOUNCEMENT4_TIMESLOT': config.getint(section, 'ANNOUNCEMENT4_TIMESLOT', fallback=2), - 'ANNOUNCEMENT4_MODE': config.get(section, 'ANNOUNCEMENT4_MODE', fallback='hourly'), - 'ANNOUNCEMENT4_INTERVAL': config.getint(section, 'ANNOUNCEMENT4_INTERVAL', fallback=3600), - 'ANNOUNCEMENT4_LANGUAGE': config.get(section, 'ANNOUNCEMENT4_LANGUAGE', fallback='es_ES'), - 'RECORDING_ENABLED': config.getboolean(section, 'RECORDING_ENABLED', fallback=False), - 'RECORDING_TG': config.getint(section, 'RECORDING_TG', fallback=9), - 'RECORDING_TIMESLOT': config.getint(section, 'RECORDING_TIMESLOT', fallback=2), - 'RECORDING_FILE': config.get(section, 'RECORDING_FILE', fallback='grabacion'), - 'RECORDING_LANGUAGE': config.get(section, 'RECORDING_LANGUAGE', fallback='es_ES') - - }) if not CONFIG['GLOBAL']['ANNOUNCEMENT_LANGUAGES']: CONFIG['GLOBAL']['ANNOUNCEMENT_LANGUAGES'] = languages @@ -429,7 +395,56 @@ def build_config(_config_file): sys.exit('Error processing configuration file -- {}'.format(err)) process_acls(CONFIG) - + + _voice_cfg_dir = os.path.dirname(os.path.abspath(_config_file)) + _voice_cfg_file = os.path.join(_voice_cfg_dir, 'voice.cfg') + + voice_config = configparser.ConfigParser() + if os.path.isfile(_voice_cfg_file): + voice_config.read(_voice_cfg_file) + print('(CONFIG) Voice configuration loaded from {}'.format(_voice_cfg_file)) + else: + print('(CONFIG) Voice configuration file not found ({}), using defaults (announcements/recording disabled)'.format(_voice_cfg_file)) + + _voice_section = 'VOICE' + _has_voice = voice_config.has_section(_voice_section) + + CONFIG['GLOBAL'].update({ + 'ANNOUNCEMENT_ENABLED': voice_config.getboolean(_voice_section, 'ANNOUNCEMENT_ENABLED', fallback=False) if _has_voice else False, + 'ANNOUNCEMENT_FILE': voice_config.get(_voice_section, 'ANNOUNCEMENT_FILE', fallback='locucion') if _has_voice else 'locucion', + 'ANNOUNCEMENT_TG': voice_config.getint(_voice_section, 'ANNOUNCEMENT_TG', fallback=9) if _has_voice else 9, + 'ANNOUNCEMENT_TIMESLOT': voice_config.getint(_voice_section, 'ANNOUNCEMENT_TIMESLOT', fallback=2) if _has_voice else 2, + 'ANNOUNCEMENT_MODE': voice_config.get(_voice_section, 'ANNOUNCEMENT_MODE', fallback='hourly') if _has_voice else 'hourly', + 'ANNOUNCEMENT_INTERVAL': voice_config.getint(_voice_section, 'ANNOUNCEMENT_INTERVAL', fallback=3600) if _has_voice else 3600, + 'ANNOUNCEMENT_LANGUAGE': voice_config.get(_voice_section, 'ANNOUNCEMENT_LANGUAGE', fallback='es_ES') if _has_voice else 'es_ES', + 'ANNOUNCEMENT2_ENABLED': voice_config.getboolean(_voice_section, 'ANNOUNCEMENT2_ENABLED', fallback=False) if _has_voice else False, + 'ANNOUNCEMENT2_FILE': voice_config.get(_voice_section, 'ANNOUNCEMENT2_FILE', fallback='locucion') if _has_voice else 'locucion', + 'ANNOUNCEMENT2_TG': voice_config.getint(_voice_section, 'ANNOUNCEMENT2_TG', fallback=9) if _has_voice else 9, + 'ANNOUNCEMENT2_TIMESLOT': voice_config.getint(_voice_section, 'ANNOUNCEMENT2_TIMESLOT', fallback=2) if _has_voice else 2, + 'ANNOUNCEMENT2_MODE': voice_config.get(_voice_section, 'ANNOUNCEMENT2_MODE', fallback='hourly') if _has_voice else 'hourly', + 'ANNOUNCEMENT2_INTERVAL': voice_config.getint(_voice_section, 'ANNOUNCEMENT2_INTERVAL', fallback=3600) if _has_voice else 3600, + 'ANNOUNCEMENT2_LANGUAGE': voice_config.get(_voice_section, 'ANNOUNCEMENT2_LANGUAGE', fallback='es_ES') if _has_voice else 'es_ES', + 'ANNOUNCEMENT3_ENABLED': voice_config.getboolean(_voice_section, 'ANNOUNCEMENT3_ENABLED', fallback=False) if _has_voice else False, + 'ANNOUNCEMENT3_FILE': voice_config.get(_voice_section, 'ANNOUNCEMENT3_FILE', fallback='locucion') if _has_voice else 'locucion', + 'ANNOUNCEMENT3_TG': voice_config.getint(_voice_section, 'ANNOUNCEMENT3_TG', fallback=9) if _has_voice else 9, + 'ANNOUNCEMENT3_TIMESLOT': voice_config.getint(_voice_section, 'ANNOUNCEMENT3_TIMESLOT', fallback=2) if _has_voice else 2, + 'ANNOUNCEMENT3_MODE': voice_config.get(_voice_section, 'ANNOUNCEMENT3_MODE', fallback='hourly') if _has_voice else 'hourly', + 'ANNOUNCEMENT3_INTERVAL': voice_config.getint(_voice_section, 'ANNOUNCEMENT3_INTERVAL', fallback=3600) if _has_voice else 3600, + 'ANNOUNCEMENT3_LANGUAGE': voice_config.get(_voice_section, 'ANNOUNCEMENT3_LANGUAGE', fallback='es_ES') if _has_voice else 'es_ES', + 'ANNOUNCEMENT4_ENABLED': voice_config.getboolean(_voice_section, 'ANNOUNCEMENT4_ENABLED', fallback=False) if _has_voice else False, + 'ANNOUNCEMENT4_FILE': voice_config.get(_voice_section, 'ANNOUNCEMENT4_FILE', fallback='locucion') if _has_voice else 'locucion', + 'ANNOUNCEMENT4_TG': voice_config.getint(_voice_section, 'ANNOUNCEMENT4_TG', fallback=9) if _has_voice else 9, + 'ANNOUNCEMENT4_TIMESLOT': voice_config.getint(_voice_section, 'ANNOUNCEMENT4_TIMESLOT', fallback=2) if _has_voice else 2, + 'ANNOUNCEMENT4_MODE': voice_config.get(_voice_section, 'ANNOUNCEMENT4_MODE', fallback='hourly') if _has_voice else 'hourly', + 'ANNOUNCEMENT4_INTERVAL': voice_config.getint(_voice_section, 'ANNOUNCEMENT4_INTERVAL', fallback=3600) if _has_voice else 3600, + 'ANNOUNCEMENT4_LANGUAGE': voice_config.get(_voice_section, 'ANNOUNCEMENT4_LANGUAGE', fallback='es_ES') if _has_voice else 'es_ES', + 'RECORDING_ENABLED': voice_config.getboolean(_voice_section, 'RECORDING_ENABLED', fallback=False) if _has_voice else False, + 'RECORDING_TG': voice_config.getint(_voice_section, 'RECORDING_TG', fallback=9) if _has_voice else 9, + 'RECORDING_TIMESLOT': voice_config.getint(_voice_section, 'RECORDING_TIMESLOT', fallback=2) if _has_voice else 2, + 'RECORDING_FILE': voice_config.get(_voice_section, 'RECORDING_FILE', fallback='grabacion') if _has_voice else 'grabacion', + 'RECORDING_LANGUAGE': voice_config.get(_voice_section, 'RECORDING_LANGUAGE', fallback='es_ES') if _has_voice else 'es_ES', + }) + return CONFIG # Used to run this file direclty and print the config,