Files
guizang-social-card-skill/scripts/package-live-photo.py
T
郭浩 f492caeb8b v0.15: Live Photo 生产规则 — 平台限制、拼图版式、长视频处理、发布提醒、可见文案规则
新增 Live Photo 正式能力:单视频、二宫格、三宫格、四宫格、三连拼图、
长视频低成本诊断。增加 references/live-photo-production.md 生产规范、
scripts/ 工具链(contact sheet / .pvt 打包 / Apple metadata)、
validator R8 visual bounds + R9 title gap、文档约束测试。

由 Codex 完成主体实现。
2026-07-01 16:11:34 +08:00

39 lines
1.1 KiB
Python

#!/usr/bin/env python3
"""Package a JPG/MOV pair as an AirDrop-friendly Live Photo .pvt bundle.
Run with:
UV_CACHE_DIR=/private/tmp/uv-cache \
UV_TOOL_DIR=/private/tmp/uv-tools \
uvx --from makelive python scripts/package-live-photo.py IMG.JPG IMG.MOV
"""
from __future__ import annotations
import argparse
from pathlib import Path
from makelive import save_live_photo_pair_as_pvt
def main() -> None:
parser = argparse.ArgumentParser(description="Package a JPG/MOV pair as a Live Photo .pvt bundle.")
parser.add_argument("jpg", type=Path, help="Key photo path, usually 1080x1440 JPG.")
parser.add_argument("mov", type=Path, help="Paired H.264 MOV path.")
args = parser.parse_args()
jpg = args.jpg.expanduser().resolve()
mov = args.mov.expanduser().resolve()
if not jpg.exists():
raise SystemExit(f"missing JPG: {jpg}")
if not mov.exists():
raise SystemExit(f"missing MOV: {mov}")
asset_id, pvt_path = save_live_photo_pair_as_pvt(str(jpg), str(mov))
print(asset_id)
print(pvt_path)
if __name__ == "__main__":
main()