#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""监控 jiexiu IP 解冻, 解冻后自动跑 hjbh --pages=1 入库"""
import requests
import subprocess
import sys
import time

URL = 'http://www.jiexiu.gov.cn/zwgk/bmxxgkml/szfgzbm/jxjzssthjjjxfj/fdzdnrgksthjj/hjbhly/gknrjxfj'
HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36',
}

MAX_WAIT = 3600  # 最多等 1 小时
check_interval = 60
t0 = time.time()

print('开始监控 jiexiu IP 解冻...', flush=True)
while time.time() - t0 < MAX_WAIT:
    try:
        r = requests.get(URL, headers=HEADERS, timeout=20)
        if r.status_code == 200 and 'infoList' in r.text:
            print(f'[UNFROZEN] 解冻成功 (等待 {int(time.time()-t0)}s), 开始跑 hjbh --pages=1', flush=True)
            rc = subprocess.run(
                ['python3', '/root/gov_crawler/crawl_jiexiu_hjbh.py', '--pages=1'],
                capture_output=True, text=True, timeout=600, cwd='/root/gov_crawler'
            )
            print(rc.stdout[-800:], flush=True)
            if rc.returncode != 0:
                print('STDERR:', rc.stderr[-500:], flush=True)
            print('[DONE] hjbh 入库完成', flush=True)
            sys.exit(0)
        else:
            print(f'[{int(time.time()-t0)}s] status={r.status_code} 仍冻结', flush=True)
    except Exception as e:
        print(f'[{int(time.time()-t0)}s] probe error: {type(e).__name__}', flush=True)
    time.sleep(check_interval)

print('[TIMEOUT] 1小时未解冻, 请手动处理', flush=True)
sys.exit(1)
