"""下载 — fetch a model by operator id through a signed URL. tripocli download --operator -o model.glb """ import os NAME = "download" HELP = "下载模型:按 operator_id 获取签名直链并保存" def add_arguments(parser): parser.add_argument("--operator", required=True, help="operator_id") parser.add_argument("-o", "--output", default="model.glb", help="保存路径(默认 model.glb)") def run(ctx): args = ctx.args filename = os.path.basename(args.output) url = ctx.client.download_url(args.operator, filename) if not url: raise ValueError(f"operator {args.operator} 未返回下载直链") path = os.path.abspath(args.output) ctx.out.line(f"📥 下载中: {path}") ctx.client.download(url, path) payload = {"operator_id": args.operator, "url": url, "output_file": path} ctx.out.data(payload, human=lambda: ctx.out.line(f"✨ 已保存: {path}")) return payload