#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""register_danzhai.py —— 注册 crawl_danzhai_hjzf.py 到 daily_crawl_config.json

安全：先备份；字段集合对齐同组(贵州)既有条目；追加后校验 JSON 合法 +
     逐条 script 在磁盘上存在；打印 1-based 序号（Dis-db 回填要用）。
"""
import json
import os
import shutil
import sys

CFG = "/root/gov_crawler/daily_crawl_config.json"
BAK = "/root/gov_crawler/Archive/daily_crawl_config.json.bak_20260924_danzhai"
SCRIPT = "crawl_danzhai_hjzf.py"

cfg = json.load(open(CFG, encoding="utf-8"))
print("注册前条目数:", len(cfg))

print("\n=== 同组(贵州)既有条目样例 ===")
for i, c in enumerate(cfg):
    if (c.get("group") or "") == "贵州":
        print("  #%d %s" % (i + 1, json.dumps(c, ensure_ascii=False)[:300]))
        break

if any((c.get("script") or "") == SCRIPT for c in cfg):
    print("\n⚠️ 该 script 已注册，不重复添加")
    for i, c in enumerate(cfg):
        if (c.get("script") or "") == SCRIPT:
            print("  已存在序号: #%d %s" % (i + 1, json.dumps(c, ensure_ascii=False)[:200]))
    sys.exit(0)

# 字段集合对齐同组条目
tmpl = None
for c in cfg:
    if (c.get("group") or "") == "贵州":
        tmpl = c
        break
if tmpl is None:
    tmpl = cfg[-1]
print("\n模板键集合:", sorted(tmpl.keys()))

entry = {}
for k in tmpl.keys():
    entry[k] = tmpl[k]
entry.update({
    "name": "丹寨县人民政府-环境执法监管",
    "display_name": "丹寨县人民政府-环境执法监管",
    "script": SCRIPT,
    "args": ["--pages=5"],
    "group": "贵州",
    "note": "丹寨县环境执法监管, TRS createPageHTML 19页275条/15条每页, "
            "第N页=index_(N-1).html, ul.NewsList>li>a[title]+span日期, "
            "正文 div.Article_Con>font#Zoom>div.trs_editor_view",
})
print("\n待追加条目:")
print(" ", json.dumps(entry, ensure_ascii=False)[:600])

cfg.append(entry)
os.makedirs(os.path.dirname(BAK), exist_ok=True)
if not os.path.exists(BAK):
    shutil.copy2(CFG, BAK)

with open(CFG, "w", encoding="utf-8") as f:
    json.dump(cfg, f, ensure_ascii=False, indent=2)

# 校验：JSON 合法 + 逐条 script 存在
cfg2 = json.load(open(CFG, encoding="utf-8"))
print("\n注册后条目数:", len(cfg2))
missing = [c.get("script") for c in cfg2
           if c.get("script") and not os.path.exists(os.path.join("/root/gov_crawler", c["script"]))]
print("config 中 script 在磁盘缺失的条目:", len(missing), missing[:6])
idx = [i + 1 for i, c in enumerate(cfg2) if (c.get("script") or "") == SCRIPT]
print("✅ 已注册  %s  序号(1-based) = %s" % (SCRIPT, idx))
print("备份:", BAK)
