覆盖文生 3D、图生 3D、多视图、批量生成,以及重拓扑、绑定、动画、智能分割、 纹理、PBR、智能 UV、部件补全、格式导出与下载。 代码组织:一个功能一个模块(tripo/features/),入口薄壳 tripocli.py。
58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
"""本地账号管理服务 — tripocli serve.
|
||
|
||
tripocli serve # 打开 http://127.0.0.1:8765/
|
||
tripocli serve --port 9000 --open # 指定端口并自动打开浏览器
|
||
|
||
页面里可以粘贴/更新 cookie、查看会话有效期与积分额度、切换当前账号、删除账号。
|
||
默认只监听 127.0.0.1:能访问到它的人就能以该账号身份调用接口。
|
||
"""
|
||
|
||
import subprocess
|
||
import sys
|
||
import webbrowser
|
||
|
||
from ..server import serve
|
||
|
||
NAME = "serve"
|
||
HELP = "启动本地账号管理服务(网页里粘贴/更新 cookie、看有效期与积分)"
|
||
|
||
LOOPBACK = {"127.0.0.1", "localhost", "::1"}
|
||
|
||
|
||
def add_arguments(parser):
|
||
parser.add_argument("--host", default="127.0.0.1", help="监听地址(默认 127.0.0.1)")
|
||
parser.add_argument("--port", type=int, default=8765, help="监听端口(默认 8765,0 表示自动分配)")
|
||
parser.add_argument("--open", action="store_true", help="启动后自动打开浏览器")
|
||
parser.add_argument("--quiet", action="store_true", help="不打印请求日志")
|
||
|
||
|
||
def run(ctx):
|
||
args = ctx.args
|
||
httpd, url = serve(host=args.host, port=args.port)
|
||
|
||
if args.quiet:
|
||
httpd.RequestHandlerClass.log_message = lambda *a, **k: None
|
||
|
||
ctx.out.line(f"🖥 账号管理服务已启动: {url}")
|
||
ctx.out.line(f" 账号文件: {ctx.accounts.path}")
|
||
if args.host not in LOOPBACK:
|
||
ctx.out.line(f" ⚠️ 正在监听 {args.host},局域网内任何人都能访问并操作该账号,请谨慎使用")
|
||
ctx.out.line(" 按 Ctrl+C 停止")
|
||
|
||
if args.open:
|
||
try:
|
||
webbrowser.open(url)
|
||
except Exception:
|
||
try:
|
||
subprocess.Popen(["open", url])
|
||
except Exception:
|
||
ctx.out.line(" (无法自动打开浏览器,请手动访问上面的地址)")
|
||
|
||
try:
|
||
httpd.serve_forever()
|
||
except KeyboardInterrupt:
|
||
ctx.out.line("\n已停止")
|
||
finally:
|
||
httpd.server_close()
|
||
return {"url": url}
|