- add missed module

This commit is contained in:
Dmytro Bogovych 2023-09-04 16:18:43 +03:00
parent 60a24a5177
commit 90c88c2aa4
1 changed files with 128 additions and 0 deletions

128
src/agent_config.py Normal file
View File

@ -0,0 +1,128 @@
#!/usr/bin/python3
from pathlib import Path
import argparse
import sys
import yaml
class AgentConfig:
Name: str
Backend: str
# Name of intermediary file with audio recorded from the GSM phone
RecordFile = Path('/dev/shm/qualtest_recorded.wav')
# Prepared reference audio to play
PreparedReferenceAudio = Path('/dev/shm/reference_ready.wav')
# Reference audio to play
ReferenceAudio = Path('/dev/shm/reference_original.wav')
# Loaded reference audio (from backend)
LoadedAudio = Path('/dev/shm/loaded_audio.wav')
# Script to exec after mobile call answering
ExecScript : Path = None
# Backup directory (to run without internet)
CacheDir : Path = None
# PID file name
QualtestPID = Path('/dev/shm/qualtest.pid')
# Check (or not) PID file presence on the start
CheckPIDFile: bool = False
# Should the first task run immediately ?
ForceRun = False
# Use silence eraser or not (speech detector is used in this case)
UseSilenceEraser = True
# Path to log file
LogPath : Path = None
# Phone's BT MAC address
BT_MAC : str = None
# Verbose logging or not
Verbose: bool = False
# Task limit per single run
TaskLimit: int = 10000000
# Task name (used for answering only)
TaskName: str = None
def parser(self) -> argparse.ArgumentParser:
parser = argparse.ArgumentParser()
parser.add_argument("--config", help="Path to config file, see config.in.yaml.")
parser.add_argument("--check-pid-file", action="store_true", help="Check if .pid file exists and exit if yes. Useful for using with .service files")
parser.add_argument("--test", action="store_true", help="Run the first task immediately. Useful for testing.")
return parser
def __init__(self) -> None:
p = self.parser()
# Parse arguments
args = p.parse_args()
if args.test:
self.ForceRun = True
if args.check_pid_file:
self.CheckPIDFile = True
if args.config:
config_path = args.config
with open(config_path, 'r') as stream:
config = yaml.safe_load(stream)
if config['force_task']:
self.ForceRun = True
if 'speech_detector' in config:
if config['speech_detector']:
self.UseSilenceEraser = False
if 'bluetooth_mac' in config['audio']:
self.BT_MAC = config['audio']['bluetooth_mac']
# Logging settings
if 'log' in config:
if 'verbose' in config['log']:
self.Verbose = config['log']['verbose']
if 'path' in config['log']:
path = config['log']['path']
if len(path) > 0:
path = Path(path)
if not path.is_absolute():
path = Path(__file__).parent.parent / path
self.LogPath = path
# Audio directories
if 'cache_dir' in config:
self.CacheDir = Path(config['cache_dir'])
if not self.CacheDir.is_absolute():
self.CacheDir = Path(__file__).parent.parent / config['cache_dir']
if 'task_limit' in config:
self.TaskLimit = int(config['task_limit'])
if 'name' in config:
self.Name = config['name']
if 'backend' in config:
self.Backend = config['backend']
if 'task' in config:
self.TaskName = config['task']