#!/usr/bin/env python3
import json
import sys
from datetime import datetime, timezone
from pathlib import Path

PROJECT = Path(__file__).resolve().parents[1]
PROMOTION = PROJECT / "story/promotion-report.json"
BRIEF = PROJECT / "script/story-brief.json"
OUT = PROJECT / "output/info.txt"
RECEIPT = PROJECT / "log/metadata-verification.json"
PUBLISHING_TITLE = "Anh Đồng Ý Liên Hôn, Tôi Trả Chìa Khóa Giữ Mười Hai Năm"
DESCRIPTION_TEMPLATE = """Khi Thẩm Trạch Ngôn đồng ý một cuộc liên hôn để giữ vị trí trong gia tộc, Lâm Vãn Ninh trả lại chiếc chìa khóa phòng chiếu cô đã giữ suốt mười hai năm. Cô không muốn tiếp tục làm một người nhà luôn có mặt nhưng chưa từng được hỏi có muốn ở lại hay không.

Ba mươi ngày trước lễ mở cửa lại rạp Tân Quang, Vãn Ninh tự giành quyền điều hành, đặt ranh giới với người thanh mai trúc mã và đối mặt với sai lầm do chính lòng tin của mình tạo ra. Còn Trạch Ngôn phải lựa chọn giữa vị trí được sắp đặt và quyền được cô chủ động chọn lại. Kỷ Minh Tâm, người bị đặt vào cuộc liên hôn, không phải tình địch mà là một người phụ nữ khác đang tìm quyền quyết định cuộc đời mình.

🎧 Tên truyện: {canonical_title}
🎙 Giọng đọc: Huyền An Audio
📚 Thể loại: Ngôn tình đô thị, thanh mai trúc mã, hào môn, liên hôn
Tình trạng: Trọn bộ

Nếu yêu thích câu chuyện, hãy đăng ký kênh và để lại cảm nhận của bạn dưới phần bình luận.

Huyền An Audio – Lắng nghe một thế giới khác.

Nội dung được phát hành độc quyền tại Huyền An Audio. Vui lòng không sao chép và đăng tải lại dưới bất kỳ hình thức nào.

#HuyenAnAudio #TruyenAudio #NgheTruyen #TruyenHay #ThanhMaiTrucMa #LienHon"""


def main():
    if not PROMOTION.is_file() or not BRIEF.is_file():
        print("Metadata blocked: promotion/brief missing", file=sys.stderr)
        return 1
    promotion = json.loads(PROMOTION.read_text(encoding="utf-8"))
    brief = json.loads(BRIEF.read_text(encoding="utf-8"))
    canon = promotion.get("spoken_sha256")
    if promotion.get("verified") is not True or not canon or promotion.get("canonical_title") != brief.get("canonical_title"):
        print("Metadata blocked: promotion authority invalid", file=sys.stderr)
        return 1
    youtube_title = PUBLISHING_TITLE + " | Truyện Audio Full | Huyền An Audio"
    if not 2 <= len(youtube_title) <= 100:
        print("Metadata blocked: title length", file=sys.stderr)
        return 1
    description = DESCRIPTION_TEMPLATE.format(canonical_title=brief["canonical_title"])
    OUT.parent.mkdir(parents=True, exist_ok=True)
    OUT.write_text("TITLE\n" + youtube_title + "\n\nDESCRIPTION\n" + description.strip() + "\n", encoding="utf-8")
    receipt = {
        "version": 1, "verified": True, "source_canon_sha256": canon,
        "canonical_title": brief["canonical_title"], "publishing_title_variant": PUBLISHING_TITLE,
        "title": youtube_title, "title_length": len(youtube_title),
        "description_chars": len(description.strip()), "output": "output/info.txt",
        "checked_at": datetime.now(timezone.utc).isoformat(),
    }
    RECEIPT.parent.mkdir(parents=True, exist_ok=True)
    RECEIPT.write_text(json.dumps(receipt, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
    print(json.dumps(receipt, ensure_ascii=False))
    return 0


if __name__ == "__main__":
    sys.exit(main())
