diff --git a/commands.yaml b/commands.yaml index a80d0e3..554fea0 100644 --- a/commands.yaml +++ b/commands.yaml @@ -2,23 +2,23 @@ open_browser: phrases: - открой браузер - запусти браузер - - открой яндекс - - яндекс браузер - action: {type: url, href: "about:blank", browser: "yandex"} + - открой гугл хром + - гугл хром + action: {type: exe, file: "Run browser.exe"} open_youtube: phrases: - открой ютуб - ютуб - запусти ютуб - action: {type: url, href: "https://www.youtube.com", browser: "yandex"} + action: {type: exe, file: "Run youtube.exe"} open_google: phrases: - открой гугл - гугл - запусти гугл - action: {type: url, href: "https://www.google.com", browser: "yandex"} + action: {type: exe, file: "Run google.exe"} music: phrases: diff --git a/config.py b/config.py index b78f82c..d9e9e29 100644 --- a/config.py +++ b/config.py @@ -6,7 +6,7 @@ load_dotenv("dev.env") # Конфигурация VA_NAME = 'Jarvis' -VA_VER = "0.4.1" +VA_VER = "0.3.0" VA_ALIAS = ('джарвис',) VA_TBR = ('скажи', 'покажи', 'ответь', 'произнеси', 'расскажи', 'сколько', 'слушай') @@ -19,12 +19,8 @@ WAKE_WORDS = ('jarvis', 'джарвис') # -1 это стандартное записывающее устройство MICROPHONE_INDEX = -1 -BROWSER_PATHS = { - 'yandex': 'C:/Program Files/Yandex/YandexBrowser/Application/browser.exe', - 'chrome': 'C:/Program Files/Google/Chrome/Application/chrome.exe', - 'firefox': 'C:/Program Files/Mozilla Firefox/firefox.exe', - 'edge': 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe', -} +# Путь к браузеру Google Chrome +CHROME_PATH = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' # Токен Groq GROQ_TOKEN = os.getenv('GROQ_TOKEN') diff --git a/main.py b/main.py index dbb75a7..56909f4 100644 --- a/main.py +++ b/main.py @@ -252,12 +252,6 @@ def run_action(action): else: subprocess.Popen(action['cmd'], shell=True) elif t == 'url': - browser = action.get('browser') - if browser: - exe = config.BROWSER_PATHS.get(browser) - if exe and os.path.isfile(exe): - subprocess.Popen([exe, action['href']]) - return webbrowser.open(action['href']) elif t == 'keys': import pyautogui diff --git a/tools/command_builder/schema.py b/tools/command_builder/schema.py index 99dfa2d..60c0e5f 100644 --- a/tools/command_builder/schema.py +++ b/tools/command_builder/schema.py @@ -65,20 +65,13 @@ class ShellAction: return out -KNOWN_BROWSERS = ("yandex", "chrome", "firefox", "edge") - - @dataclass class UrlAction: href: str - browser: Optional[str] = None type: str = "url" def to_dict(self) -> dict: - out: dict = {"type": "url", "href": self.href} - if self.browser: - out["browser"] = self.browser - return out + return {"type": "url", "href": self.href} @dataclass @@ -164,10 +157,7 @@ def action_from_dict(data: Any) -> Action: href = data.get("href") if not href or not isinstance(href, str): raise SchemaError("url action requires non-empty 'href' string") - browser = data.get("browser") - if browser is not None and browser not in KNOWN_BROWSERS: - raise SchemaError(f"url.browser must be one of {KNOWN_BROWSERS} or omitted") - return UrlAction(href=href, browser=browser) + return UrlAction(href=href) if t == "keys": sequence = data.get("sequence") text = data.get("text") diff --git a/tools/command_builder/web/app.js b/tools/command_builder/web/app.js index 278a669..ce35e8e 100644 --- a/tools/command_builder/web/app.js +++ b/tools/command_builder/web/app.js @@ -191,25 +191,10 @@ -
- - -
`; const inp = f.querySelector("#url-href"); - const sel = f.querySelector("#url-browser"); - if (state.action) { - inp.value = state.action.href || ""; - sel.value = state.action.browser || ""; - } + if (state.action) inp.value = state.action.href || ""; inp.addEventListener("input", () => updateAction()); - sel.addEventListener("change", () => updateAction()); return; } @@ -496,23 +481,8 @@ inp.type = "text"; inp.value = step.href || ""; inp.placeholder = "https://..."; - const sel = document.createElement("select"); - sel.innerHTML = ` - - - - - `; - sel.value = step.browser || ""; - const apply = () => { - const next = { type: "url", href: inp.value }; - if (sel.value) next.browser = sel.value; - onChange(next); - }; - inp.addEventListener("input", apply); - sel.addEventListener("change", apply); + inp.addEventListener("input", () => onChange({ type: "url", href: inp.value })); body.appendChild(wrapField("URL", inp)); - body.appendChild(wrapField("Браузер", sel)); } else if (t === "keys") { const inp = document.createElement("input"); inp.type = "text"; @@ -599,10 +569,7 @@ if (delay && delay.value) a.delay_ms = parseInt(delay.value, 10); state.action = a; } else if (t === "url") { - const a = { type: "url", href: (document.getElementById("url-href")||{}).value || "" }; - const b = (document.getElementById("url-browser")||{}).value; - if (b) a.browser = b; - state.action = a; + state.action = { type: "url", href: (document.getElementById("url-href")||{}).value || "" }; } else if (t === "keys") { const mode = (document.getElementById("keys-mode")||{}).value; if (mode === "text") {