#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""语文当日练习拍照 → 企微群机器人（markdown 消息，含照片链接）。
用法：python3 push_photo.py <图片路径> [日期] [单元] [公开URL前缀]
企微 webhook 不能上传图片，故推送 markdown，图片链接指向隧道公开地址供家长点击查看。"""
import json, os, sys, urllib.request, datetime

WEBHOOK = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b42a6075-e686-4948-9ef6-f2365ef727d3"
# 公开访问前缀（学习工作台域名 + 静态根），/photos/ 位于其下
PUBLIC = "https://xinxin.win"

def send_markdown(content):
    body = {"msgtype": "markdown", "markdown": {"content": content}}
    req = urllib.request.Request(WEBHOOK, data=json.dumps(body).encode("utf-8"),
                                 headers={"Content-Type": "application/json"})
    with urllib.request.urlopen(req, timeout=15) as r:
        resp = json.loads(r.read().decode("utf-8"))
    if resp.get("errcode") != 0:
        raise RuntimeError("send error: " + json.dumps(resp, ensure_ascii=False))
    return resp

if __name__ == "__main__":
    args = sys.argv[1:]
    if not args:
        print("用法: python3 push_photo.py <图片路径> [日期] [单元]")
        sys.exit(1)
    path = args[0]
    date = args[1] if len(args) > 1 else datetime.date.today().isoformat()
    unit = args[2] if len(args) > 2 else ""
    if not os.path.exists(path):
        print("图片不存在:", path)
        sys.exit(1)
    # 公开 URL：photos/日期/文件名
    rel = os.path.relpath(path, os.path.dirname(os.path.dirname(path))).replace("\\", "/")
    # photos 目录在工作空间根下，rel 应从工作空间根开始，这里取 path 的最后两段
    seg = path.replace("\\", "/").split("/")
    rel_public = "/photos/" + seg[-2] + "/" + seg[-1]
    photo_url = PUBLIC + rel_public
    title = ("【芯芯 · 语文当日练习】\n"
             "📅 <font color=\"info\">%s</font>　" % date +
             ("单元：%s" % unit if unit else "今日单元") + "\n")
    msg = (title +
           "芯芯已完成今日语文练习，家长可点开查看照片：\n"
           "🔗 [点击查看练习照片](%s)" % photo_url)
    try:
        send_markdown(msg)
        print("已推送企微:", date, unit, photo_url)
    except Exception as e:
        print("推送失败:", e)
        sys.exit(1)