WechatOnCloud/bridge/server.py

57 lines
1.7 KiB
Python
Raw Permalink Normal View History

"""woc-bridge FastAPI 薄入口bridge 1.8.0 重构后)。
监听容器内 :8088通过 xdotool/xclip 操作微信窗口读取微信本地 DB
提供收发消息等能力
s6-rc 服务 `svc-woc-bridge` 常驻拉起 s6/woc-bridge/run
启动前会等待微信窗口出现最多 5 分钟以确保 X 会话就绪
本文件仅负责
1. 解析命令行参数--listen / --wechat-db / --display
2. 构造 BridgeConfig 并调用 _init_state 初始化全局状态
3. 启动 uvicorn
所有业务逻辑路由 / DB 协调 / UI 自动化 / 消息推送均在 woc_bridge 包内
"""
from __future__ import annotations
import argparse
import uvicorn
from woc_bridge.app import app, _init_state
from woc_bridge.config import BridgeConfig
def _parse_args() -> argparse.Namespace:
"""解析命令行参数。"""
parser = argparse.ArgumentParser(description="woc-bridge FastAPI 服务")
parser.add_argument(
"--listen",
default="0.0.0.0:8088",
help="监听地址,格式 host:port默认 0.0.0.0:8088",
)
parser.add_argument(
"--wechat-db",
default="/config",
help="微信数据根目录,默认 /config_find_db_path 会递归查找 message_0.db",
)
parser.add_argument(
"--display",
default=":1",
help="X server display默认 :1",
)
return parser.parse_args()
if __name__ == "__main__":
args = _parse_args()
cfg = BridgeConfig.from_args_and_env(args)
_init_state(cfg)
host, _, port_str = cfg.listen.rpartition(":")
if not host:
host = "0.0.0.0"
port = int(port_str) if port_str else 8088
uvicorn.run(app, host=host, port=port)