Поиск терминала
Клиент сам находит порт терминала и токен, или вы передаёте их сами.
Клиенту нужны две вещи: порт, на котором слушает терминал, и токен.
Terminal.discover() находит и то и другое.
Найти терминал
from spectre_terminal import Terminal
terminal = Terminal.discover()Токен берётся из переменной окружения SPECTRE_LOCAL_API_TOKEN и больше
ниоткуда. Порт берётся из файла терминала instance.json. Если файла нет,
порт — 48180. Затем discover() делает один пробный запрос.
Когда поиск не удался
| Что происходит | Что вы получите | Что делать |
|---|---|---|
| Токен не задан | TokenMissing | Задать SPECTRE_LOCAL_API_TOKEN |
| API выключен | LocalApiDisabled | Включить API |
| На порту никто не отвечает | TerminalUnreachable | Запустить терминал |
| Токен уже не текущий | ApiError с кодом unauthorized | Ещё раз скопировать токен |
| У терминала другая версия API | IncompatibleTerminal | См. Совместимость |
Это имена в Python. В TypeScript имена оканчиваются на Error, например
TokenMissingError.
Задать порт и токен самому
import os
from spectre_terminal import Terminal
found = Terminal.discover(port=48181)
direct = Terminal(os.environ["SPECTRE_LOCAL_API_TOKEN"], port=48181)discover() с портом не читает instance.json. Конструктор принимает токен
и порт как есть.
Это нужно для второго терминала на другом порту. Поддерживается один
терминал на машине. Хост — всегда 127.0.0.1 или localhost.
Прочитать порт без клиента
Программа на другом языке читает local_api_port из instance.json:
{ "pid": 108957, "http_port": 46727, "local_api_port": 48180 }| Система | Путь |
|---|---|
| Linux | $XDG_DATA_HOME/spectre-terminal/instance.json, по умолчанию ~/.local/share/spectre-terminal/instance.json |
| macOS | ~/Library/Application Support/spectre-terminal/instance.json |
| Windows | %LOCALAPPDATA%\spectre-terminal\instance.json |
local_api_port отсутствует или равен null, пока API выключен. Не
используйте http_port: это не Local API.