mirror of
https://github.com/LifeArchiveProject/WeChatDataAnalysis.git
synced 2026-06-18 15:54:08 +08:00
71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
微信解密工具主启动脚本
|
|
|
|
使用方法:
|
|
uv run main.py
|
|
|
|
默认在10392端口启动API服务
|
|
"""
|
|
|
|
import uvicorn
|
|
import os
|
|
from pathlib import Path
|
|
from wechat_decrypt_tool.network_access import get_lan_access_host
|
|
from wechat_decrypt_tool.runtime_settings import read_effective_backend_host, read_effective_backend_port
|
|
|
|
def main():
|
|
"""启动微信解密工具API服务"""
|
|
host, host_source = read_effective_backend_host(default="127.0.0.1")
|
|
port, port_source = read_effective_backend_port(default=10392)
|
|
access_host = "127.0.0.1" if host in {"0.0.0.0", "::"} else host
|
|
lan_access_host = get_lan_access_host(default="127.0.0.1") if host in {"0.0.0.0", "::"} else access_host
|
|
|
|
print("=" * 60)
|
|
print("微信解密工具 API 服务")
|
|
print("=" * 60)
|
|
print("正在启动服务...")
|
|
if port_source == "env":
|
|
print("端口来源: 环境变量 WECHAT_TOOL_PORT")
|
|
elif port_source == "settings":
|
|
print("端口来源: 配置文件 output/runtime_settings.json(由网页/桌面设置写入)")
|
|
else:
|
|
print("端口来源: 默认值")
|
|
if host_source == "env":
|
|
print("监听地址来源: 环境变量 WECHAT_TOOL_HOST")
|
|
elif host_source == "settings":
|
|
print("监听地址来源: 配置文件 output/runtime_settings.json(由网页/桌面设置写入)")
|
|
else:
|
|
print("监听地址来源: 默认值")
|
|
print(f"监听地址: {host}")
|
|
print(f"API文档: http://{access_host}:{port}/docs")
|
|
print(f"健康检查: http://{access_host}:{port}/api/health")
|
|
if lan_access_host != access_host:
|
|
print(f"局域网 MCP: http://{lan_access_host}:{port}/mcp")
|
|
print("按 Ctrl+C 停止服务")
|
|
print("=" * 60)
|
|
|
|
repo_root = Path(__file__).resolve().parent
|
|
enable_reload = os.environ.get("WECHAT_TOOL_RELOAD", "0") == "1"
|
|
|
|
# 启动API服务
|
|
uvicorn.run(
|
|
"wechat_decrypt_tool.api:app",
|
|
host=host,
|
|
port=port,
|
|
reload=enable_reload,
|
|
reload_dirs=[str(repo_root / "src")] if enable_reload else None,
|
|
reload_excludes=[
|
|
"output/*",
|
|
"output/**",
|
|
"frontend/*",
|
|
"frontend/**",
|
|
".venv/*",
|
|
".venv/**",
|
|
] if enable_reload else None,
|
|
log_level="info"
|
|
)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|