diff --git a/README.md b/README.md index d7912a0..6b06f7d 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,8 @@ https://github.com/janvarev/Remote-Irene Детали по вызовам сервера см. в коде **runva_webapi.py** +Настройки сервера - host,ip,log_level настраиваются в **options/webapi.json** + Также можно посмотреть документацию fastapi - там есть веб-интерфейс для тестовых вызовов функций. ### Благодарности diff --git a/plugins/webapi.py b/plugins/webapi.py new file mode 100644 index 0000000..921b282 --- /dev/null +++ b/plugins/webapi.py @@ -0,0 +1,30 @@ +# Webapi settings +# author: Vladislav Janvarev + + + +import os + +from vacore import VACore + +modname = os.path.basename(__file__)[:-3] # calculating modname + +# функция на старте +def start(core:VACore): + manifest = { + "name": "Webapi options", + "version": "1.0", + "require_online": False, + + "default_options": { + "host": "127.0.0.1", + "port": 5003, + "log_level": "info" + }, + + } + return manifest + +def start_with_options(core:VACore, manifest:dict): + pass + diff --git a/runva_webapi.py b/runva_webapi.py index 47f1861..23cf2b9 100644 --- a/runva_webapi.py +++ b/runva_webapi.py @@ -15,9 +15,16 @@ from vacore import VACore core = VACore() core.init_with_plugins() +core.init_plugin("webapi") +webapi_options = core.plugin_options("webapi") print("WEB api for VoiceAssistantCore (remote control)") +# здесь двойная инициализация - на импорте, и на запуске сервера +# не очень хорошо, но это нужно, чтобы получить webapi_options = core.plugin_options("webapi") def runCmd(cmd:str,returnFormat:str): + if core.logPolicy == "cmd" or core.logPolicy == "all": + print("Running cmd: ",cmd) + tmpformat = core.remoteTTS core.remoteTTS = returnFormat core.execute_next(cmd,None) @@ -74,6 +81,25 @@ async def sendRawTxt(rawtxt:str,returnFormat:str = "none"): return "NO_VA_NAME" +# simple threading for timer +from threading import Thread, Event + +class MyThread(Thread): + def __init__(self, event): + Thread.__init__(self) + self.stopped = event + + def run(self): + while not self.stopped.wait(0.5): + core._update_timers() + +if __name__ != "__main__": # must run only in web + stopFlag = Event() + thread = MyThread(stopFlag) + thread.start() + # this will stop the timer + #stopFlag.set() if __name__ == "__main__": - uvicorn.run("runva_webapi:app", host="127.0.0.1", port=5003, log_level="info") \ No newline at end of file + uvicorn.run("runva_webapi:app", host=webapi_options["host"], port=webapi_options["port"], + log_level=webapi_options["log_level"]) \ No newline at end of file diff --git a/vacore.py b/vacore.py index 532217a..000264e 100644 --- a/vacore.py +++ b/vacore.py @@ -8,7 +8,7 @@ import soundfile as sound_file from jaa import JaaCore -version = "3.1" +version = "3.2" class VACore(JaaCore): def __init__(self):