1
0
mirror of https://github.com/janvarev/Irene-Voice-Assistant.git synced 2025-11-26 22:50:58 +02:00

v3.2 - web api

- опции запуска сервера вынесены в плагин webapi.py
- теперь сервер корректно обрабатывает таймеры (вызывает _update_timers)
This commit is contained in:
janvarev
2022-02-08 12:06:07 +03:00
parent a23f3edb4d
commit 5545ac33d0
4 changed files with 60 additions and 2 deletions

View File

@@ -128,6 +128,8 @@ https://github.com/janvarev/Remote-Irene
Детали по вызовам сервера см. в коде **runva_webapi.py**
Настройки сервера - host,ip,log_level настраиваются в **options/webapi.json**
Также можно посмотреть документацию fastapi - там есть веб-интерфейс для тестовых вызовов функций.
### Благодарности

30
plugins/webapi.py Normal file
View File

@@ -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

View File

@@ -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")
uvicorn.run("runva_webapi:app", host=webapi_options["host"], port=webapi_options["port"],
log_level=webapi_options["log_level"])

View File

@@ -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):