Add tool foor adding files to git
This commit is contained in:
parent
245946de34
commit
f24f11de23
3 changed files with 137 additions and 1 deletions
99
hugvey/tools.py
Normal file
99
hugvey/tools.py
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
import logging
|
||||||
|
import yaml
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
from hugvey.voice import VoiceStorage
|
||||||
|
|
||||||
|
logger = logging.getLogger('toolbox')
|
||||||
|
|
||||||
|
class Toolbox:
|
||||||
|
def __init__(self, configFile):
|
||||||
|
self.languageFiles = {}
|
||||||
|
self.languageConfig = {}
|
||||||
|
|
||||||
|
with open(configFile, 'r') as fp:
|
||||||
|
logger.debug('Load config from {}'.format(configFile))
|
||||||
|
self.config = yaml.safe_load(fp)
|
||||||
|
|
||||||
|
self.hugvey_ids = [i + 1 for i in range(self.config['hugveys'])]
|
||||||
|
|
||||||
|
self.loadLanguages()
|
||||||
|
|
||||||
|
|
||||||
|
voice_dir = os.path.join(self.config['web']['files_dir'], 'voices')
|
||||||
|
self.voiceStorage = VoiceStorage(voice_dir, self.languageConfig)
|
||||||
|
|
||||||
|
|
||||||
|
def loadLanguages(self):
|
||||||
|
logger.debug('load language files')
|
||||||
|
self.languages = {}
|
||||||
|
|
||||||
|
for lang in self.config['languages']:
|
||||||
|
lang_filename = os.path.join(self.config['web']['files_dir'], lang['file'])
|
||||||
|
self.languageFiles[lang['code']] = lang['file']
|
||||||
|
self.languageConfig[lang['code']] = lang
|
||||||
|
with open(lang_filename, 'r') as fp:
|
||||||
|
self.languages[lang['code']] = json.load(fp)
|
||||||
|
|
||||||
|
if lang['token'] == 'LB_TOKEN' or lang['token'] == 'SECRET_KEY':
|
||||||
|
raise Exception("Are you using the right config file? Language key not configured properly!")
|
||||||
|
|
||||||
|
def get_audio_filenames(self):
|
||||||
|
"""
|
||||||
|
Get all audio files as defined trough the config.
|
||||||
|
"""
|
||||||
|
filenames = [
|
||||||
|
'local/crash.wav'
|
||||||
|
]
|
||||||
|
for langCode in self.languages:
|
||||||
|
logger.info(f'lang {langCode}')
|
||||||
|
msgs = [node for node in self.languages[langCode] if node['@type'] == 'Msg']
|
||||||
|
for msg in msgs:
|
||||||
|
if 'audio' in msg and msg['audio'] is not None:
|
||||||
|
filenames.append(msg['audio']['file'])
|
||||||
|
continue
|
||||||
|
|
||||||
|
if '$' in msg['text']:
|
||||||
|
# skip variable texts
|
||||||
|
continue
|
||||||
|
|
||||||
|
fn = self.voiceStorage.getFilename(langCode, msg['text'], False)
|
||||||
|
filenames.append(fn)
|
||||||
|
|
||||||
|
return filenames
|
||||||
|
|
||||||
|
def get_existing_filesnames(self):
|
||||||
|
existing_files = []
|
||||||
|
for path, subdirs, files in os.walk(self.config['web']['files_dir']):
|
||||||
|
for name in files:
|
||||||
|
if name[-4:] == '.wav':
|
||||||
|
existing_files.append(os.path.join(path, name))
|
||||||
|
return existing_files
|
||||||
|
|
||||||
|
def clean_audio_files(self):
|
||||||
|
needed_files = self.get_audio_filenames()
|
||||||
|
existing_files = self.get_existing_filesnames()
|
||||||
|
|
||||||
|
# if 'local/voices/en-GB/static/9c/9ce29fe21fa813cca9db94419947238f6f215da1.wav' in needed_files:
|
||||||
|
# print("GOOO!")
|
||||||
|
# else:
|
||||||
|
# print('ojee')
|
||||||
|
# exit()
|
||||||
|
|
||||||
|
for fn in existing_files:
|
||||||
|
if fn not in needed_files:
|
||||||
|
logger.warn(f"Remove {fn}")
|
||||||
|
os.unlink(fn)
|
||||||
|
else:
|
||||||
|
logger.debug(f"Keep {fn}")
|
||||||
|
|
||||||
|
missingFiles = []
|
||||||
|
for fn in needed_files:
|
||||||
|
if fn not in existing_files:
|
||||||
|
missingFiles.append(fn)
|
||||||
|
# logger.info(f"Missing {fn}")
|
||||||
|
|
||||||
|
logger.info("{} files missing".format(len(missingFiles)))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,6 @@ if __name__ == '__main__':
|
||||||
host = urlparse(hv.config['events']['cmd_address']).hostname
|
host = urlparse(hv.config['events']['cmd_address']).hostname
|
||||||
logger.info("Connect to logger on {}".format(host))
|
logger.info("Connect to logger on {}".format(host))
|
||||||
socket_handler = logging.handlers.SocketHandler(host, 19996) # default listening address
|
socket_handler = logging.handlers.SocketHandler(host, 19996) # default listening address
|
||||||
socket_handler.setLevel(logging.DEBUG) # don't send BS messages
|
|
||||||
logger.addHandler(socket_handler);
|
logger.addHandler(socket_handler);
|
||||||
|
|
||||||
hv.start()
|
hv.start()
|
||||||
|
|
38
tools.py
Normal file
38
tools.py
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
from hugvey.client import Hugvey
|
||||||
|
import logging
|
||||||
|
import logging.handlers
|
||||||
|
import coloredlogs
|
||||||
|
import argparse
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
from hugvey.tools import Toolbox
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
argParser = argparse.ArgumentParser(description='Start up a Hugvey pillow. Mic stream becomes available on TCP Socket, and starts listening + emitting events')
|
||||||
|
argParser.add_argument(
|
||||||
|
'--config',
|
||||||
|
'-c',
|
||||||
|
required=True,
|
||||||
|
type=str,
|
||||||
|
help='The yaml config file to load'
|
||||||
|
)
|
||||||
|
argParser.add_argument(
|
||||||
|
'--files',
|
||||||
|
action='store_true',
|
||||||
|
help="Add/remove new & unused file"
|
||||||
|
)
|
||||||
|
|
||||||
|
args = argParser.parse_args()
|
||||||
|
|
||||||
|
coloredlogs.install(
|
||||||
|
level=logging.DEBUG
|
||||||
|
)
|
||||||
|
|
||||||
|
logger = logging.getLogger("toolbox")
|
||||||
|
# logger.setLevel(1) # to send all records to cutelog
|
||||||
|
|
||||||
|
|
||||||
|
tools = Toolbox(args.config)
|
||||||
|
if args.files:
|
||||||
|
logger.info("Filenames")
|
||||||
|
tools.clean_audio_files()
|
||||||
|
|
Loading…
Reference in a new issue