#!/usr/bin/env python3
"""批量重刷 21 个含 md 表格污染的站点 (v2)
DELETE site_name 旧记录 → 运行对应爬虫脚本（自动适配 --pages=N / 位置参数）→ 记录日志
用法: python3 batch_refresh_tables_v2.py [start_idx] [end_idx]
"""
import subprocess, sys, time, sqlite3, os

DB = '/root/search.db'

JOBS = [
    ("薛城区-审批信息", "crawl_xuecheng.py", 5),
    ("双江县-通知通告", "crawl_shuangjiang.py", 5),
    ("陆丰市人民政府-建设项目环境影响评价", "crawl_lufeng.py", 5),
    ("郯城县-公示公告", "crawl_tancheng_gsgg.py", 5),
    ("临澧县-建设项目环评", "crawl_linli_hp.py", 5),
    ("陆丰市人民政府-通知公告", "crawl_lufeng_tzgg.py", 5),
    ("茂名滨海新区环境保护", "crawl_mgs_hjbh.py", 5),
    ("玉山县-生态环境局-公示公告", "crawl_yushan_sthj.py", 5),
    ("富宁县-生态环境", "crawl_ynfn_sthj.py", 5),
    ("沂水县-经济开发区-公告公示", "crawl_yishui_jjkfq.py", 5),
    ("本溪市明山区通知公告", "crawl_mingshan_tzgg.py", 5),
    ("薛城区-通知公告", "crawl_xuecheng_tzgg.py", 5),
    ("临淄生态环境分局-拟受理", "crawl_linzi.py", 5),
    ("华宁县-环评公示", "crawl_huaning_hp.py", 5),
    ("滦州市人民政府-环评审批公示", "crawl_luanxian.py", 5),
    ("昆都仑区-生态环境", "crawl_kdl_sthj.py", 5),
    ("鄯善县-公告通知", "crawl_shanshan_tzgg.py", 5),
    ("岳阳市-公告公示", "crawl_yueyang_tzgg.py", 5),
    ("旌德县-重大行政决策预公开", "crawl_ahjd.py", 5),
    ("陆良县人民政府-部门动态", "crawl_luliang.py", 5),
    ("天长市-建设项目环境影响评价", "crawl_tianchang_hp.py", 5),
]

start = int(sys.argv[1]) if len(sys.argv) > 1 else 0
end = int(sys.argv[2]) if len(sys.argv) > 2 else len(JOBS)

for i in range(start, min(end, len(JOBS))):
    site, script, pages = JOBS[i]
    print(f"\n[{time.strftime('%H:%M:%S')}] [{i+1}/{len(JOBS)}] {site} ({script})", flush=True)
    conn = sqlite3.connect(DB, timeout=60)
    conn.execute("PRAGMA busy_timeout=60000")
    cur = conn.execute("DELETE FROM gov_raw WHERE site_name=?", (site,))
    deleted = cur.rowcount
    conn.commit()
    conn.close()
    print(f"  DELETE {deleted} 条", flush=True)
    script_path = os.path.join("/root/gov_crawler", script)
    # 探测脚本支持 --pages 还是位置参数
    src = open(script_path).read()
    if '--pages' in src:
        args = [script_path, f"--pages={pages}"]
    else:
        args = [script_path, str(pages)]
    log = f"/tmp/refresh_{os.path.basename(script)}.log"
    try:
        r = subprocess.run(
            ["python3"] + args,
            capture_output=True, text=True, timeout=900,
            cwd="/root/gov_crawler")
        out = (r.stdout + r.stderr)[-600:]
        print(f"  exit={r.returncode}")
        for line in out.strip().split("\n")[-4:]:
            if line.strip():
                print(f"    {line.strip()[:110]}")
    except subprocess.TimeoutExpired:
        print("  TIMEOUT")
    except Exception as e:
        print(f"  ERR {e}")
    time.sleep(1)

print(f"\n===== 批量重刷完成 [{start}:{end}] =====")
