Перейти к содержимому

Поиск терминала

Клиент сам находит порт терминала и токен, или вы передаёте их сами.

Клиенту нужны две вещи: порт, на котором слушает терминал, и токен. 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Ещё раз скопировать токен
У терминала другая версия APIIncompatibleTerminalСм. Совместимость

Это имена в 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.

На этой странице