#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""把页脚三个「二维码待补」占位框换成真码（宝锐公众号 / 小红书 / 视频号）。

身份由 macOS Vision 解码确认（不能贴错标签）：
  公众号.png → weixin.qq.com/r/...   ｜ 视频号.png → weixin.qq.com/f/...
  小红书.png → xhslink.com/m/...
素材来源：飞书发来的原图（用户目录里那三张是 iCloud 占位文件、blocks=0 读不出）。
"""
import io, os, shutil

BASE = '/Users/liuxinyuan/Desktop/Hermes输出-工作类/科研2026秋季促销/华南农大海报_20260920'
QRDIR = os.path.join(BASE, 'qr')
SRC = {
    '公众号': '/Users/liuxinyuan/.hermes/cache/images/img_03a15c92ebaf.jpg',
    '小红书': '/Users/liuxinyuan/.hermes/cache/images/img_7a1a4753f79e.jpg',
    '视频号': '/Users/liuxinyuan/.hermes/cache/images/img_bd7360c8c813.jpg',
}

os.makedirs(QRDIR, exist_ok=True)
for name, src in SRC.items():
    dst = os.path.join(QRDIR, name + '.png')
    shutil.copy(src, dst)
    print('  ✅ 素材 %s ← %s (%d B)' % (name, os.path.basename(src), os.path.getsize(dst)))

p = os.path.join(BASE, 'gen_poster.py')
s = io.open(p, encoding='utf-8').read()

# ① 常量：加载三码 base64
anchor = "QR_APPLY = b64('/Users/liuxinyuan/work/公司资料/试用装申请.png')"
assert anchor in s, '未找到 QR_APPLY 常量'
add = anchor + """
# 页脚三码（2026-09-21 用户提供；身份经 Vision 解码确认）
QRDIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'qr')
QR_SOC = {n: b64(os.path.join(QRDIR, n + '.png')) for n in ('公众号', '小红书', '视频号')}"""
if 'QR_SOC' not in s:
    s = s.replace(anchor, add, 1)

# ② HTML：占位框 → 真码 img
for name, ph in (('公众号', '__QRWX__'), ('小红书', '__QRXHS__'), ('视频号', '__QRSPH__')):
    old = '<div class="qc"><span class="ph">二维码<br>待补</span><div class="t">宝锐%s</div></div>' % name
    new = '<div class="qc"><img src="%s" alt="宝锐%s二维码"><div class="t">宝锐%s</div></div>' % (ph, name, name)
    if old in s:
        s = s.replace(old, new, 1)
        print('  ✅ HTML 占位 → %s' % name)
    elif ph in s:
        print('  = %s 已是真码' % name)
    else:
        raise SystemExit('  ❌ 未命中占位块: %s' % name)

# ③ 替换链
if "__QRWX__" in s:
    anc2 = "   .replace('__QRAPPLY__', QR_APPLY) \\"
    assert anc2 in s, '未找到替换链锚点'
    s = s.replace(anc2, anc2 + "\n   .replace('__QRWX__', QR_SOC['公众号']) \\\n   .replace('__QRXHS__', QR_SOC['小红书']) \\\n   .replace('__QRSPH__', QR_SOC['视频号']) \\", 1)

# ④ 残留检查元组
if "'__QRWX__'" not in s:
    anc3 = "'__QRAPPLY__',"
    assert anc3 in s, '未找到残留检查元组'
    s = s.replace(anc3, anc3 + " '__QRWX__', '__QRXHS__', '__QRSPH__',", 1)

io.open(p, 'w', encoding='utf-8').write(s)
print('\n  ✅ gen_poster.py 已更新（4 处）')
