#!/usr/bin/env python3
"""Test ALL remaining zero-record scripts in big batches."""
import subprocess, sys, os, json, time

ALL = [
    "crawl_dxbei.py", "crawl_sinopec.py", "crawl_hepu.py", "crawl_dx.py",
    "crawl_susong_towns.py", "crawl_zichuan.py", "crawl_pengze.py", "crawl_luan.py",
    "crawl_zztstzq_hpslqk.py", "crawl_nanchong.py", "crawl_zhijin.py", "crawl_zge.py",
    "crawl_zyzf.py", "crawl_jsshan.py", "crawl_snjkq.py", "crawl_penglai.py",
    "crawl_fc_xzhy.py", "crawl_fc_zdjs.py", "crawl_zibo.py", "crawl_pengxi.py",
    "crawl_wfhb.py", "crawl_capchem.py", "crawl_zoucheng.py", "crawl_neijiang.py",
    "crawl_jxlc_v2.py", "crawl_hequ.py", "crawl_huijingsen.py", "crawl_houqi.py",
    "crawl_hengdong.py", "crawl_hanchuan_sthj.py", "crawl_dachaidan_gsgg.py",
    "crawl_baixiang_gsgg.py", "crawl_jinneng_news.py", "crawl_guixi_sthj_xxgk.py",
    "crawl_suizhou_hjyxpj.py", "crawl_liaoyuan_tzgg.py", "crawl_hsdz_hjbh.py",
    "crawl_cnzhlx_hpgs.py", "crawl_cqfd_hpspqk.py", "crawl_zjshjkj.py",
    "crawl_zhangye_tzgg.py", "crawl_yichun_jjxw.py", "crawl_zhanjiang_hjyxpj.py",
    "crawl_zhanjiang_zdly.py", "crawl_yunfu_slgg.py", "crawl_yinxiangqingyang.py",
    "crawl_weichang.py", "crawl_ww.py", "crawl_xingning_yetang.py",
    "crawl_jiaoling_gkml.py", "crawl_zjcx_hb.py", "crawl_fanchang.py", "crawl_yjq.py",
    "crawl_whjhq.py", "crawl_wanzhi.py", "crawl_yjq_xzsp.py", "crawl_qixian_tzgs.py",
    "crawl_qingshuihe_tzgg.py", "crawl_qhd_gggs_bureau.py", "crawl_anshan_xzspj.py",
    "crawl_cnts_bmwj.py", "crawl_dhms_zjdc.py", "crawl_fc_hygq.py",
    "crawl_guangling_gsgg.py", "crawl_nlx.py", "crawl_pingluo_gsgg.py",
    "crawl_pygyyq_gsgg.py", "crawl_qhd_gggs.py", "crawl_qianan_zdgk.py",
    "crawl_qtxgov_shbz.py", "crawl_quanjiao_tzgg.py", "crawl_yuxi_hjxx.py",
    "crawl_zrpc.py", "crawl_apw.py", "crawl_hbqj_eia.py", "crawl_byeb_sthj.py",
    "crawl_dangtu.py", "crawl_fxxq.py", "crawl_gdhuanke.py", "crawl_gdiecc.py",
    "crawl_guazhou.py", "crawl_hanshou_tzgg.py", "crawl_hengyang_gsgg.py",
    "crawl_kpstz_gkml.py", "crawl_panjin.py", "crawl_panjin_hjbh.py",
    "crawl_qianjiang.py", "crawl_sdcoke.py", "crawl_shucheng.py", "crawl_shuozhou.py",
    "crawl_sxakhidz.py", "crawl_sxx.py", "crawl_tjxzf.py", "crawl_tkx.py",
    "crawl_tongzhou.py", "crawl_xc_gsgg.py", "crawl_yanshougs_sbys.py",
    "crawl_zhcqhj.py", "crawl_to_delete_temp.py",
]

results = {"ok": [], "broken": [], "timeout": []}

for fname in ALL:
    if not os.path.exists(fname):
        continue
    
    # Check syntax
    r_s = subprocess.run([sys.executable, "-m", "py_compile", fname], capture_output=True, text=True, timeout=10)
    if r_s.returncode != 0:
        err = r_s.stderr.strip()[-80:]
        results["broken"].append({"file": fname, "reason": "SYNTAX", "detail": err})
        continue
    
    # Quick test: just try running and check exit code  
    try:
        r = subprocess.run([sys.executable, fname, "--pages", "1"], capture_output=True, text=True, timeout=15)
        # If --pages fails, try bare number
        if r.returncode != 0 and ("invalid" in r.stderr.lower() or "unknown" in r.stderr.lower() or "usage:" in r.stderr.lower()):
            r = subprocess.run([sys.executable, fname, "1"], capture_output=True, text=True, timeout=15)
        # If still fails, try no args
        if r.returncode != 0 and ("usage:" in r.stderr.lower() or "unrecognized" in r.stderr.lower()):
            r = subprocess.run([sys.executable, fname], capture_output=True, text=True, timeout=15)
        
        out = (r.stdout or "")[-100:].strip()
        last = ""
        for line in out.split("\n"):
            if any(x in line for x in ["新增", "New:", "完成", "Done", "OK", "✅", "📊", "共", "Total", "导入"]):
                last = line
        detail = (last or out.split("\n")[-1] if out else "")[:60]
        
        if r.returncode == 0:
            results["ok"].append({"file": fname, "detail": detail})
        else:
            results["broken"].append({"file": fname, "reason": "EXIT_{}".format(r.returncode), "detail": detail or (r.stderr or "").strip()[-80:]})
            
    except subprocess.TimeoutExpired:
        results["timeout"].append({"file": fname})

print(json.dumps(results, ensure_ascii=False, indent=2))
