#!/usr/bin/env python3
"""修复嵌套函数脚本的 --pages 参数兼容（保持 if __name__ 缩进）
仅处理:    pages = int(sys.argv[1]) if len(sys.argv) > 1 else N
替换为:    _p = [int(a.split("=",1)[1]) for a in sys.argv if a.startswith("--pages=")] or [int(a) for a in sys.argv[1:] if a.isdigit()] or [N]
           pages = _p[0]
"""
import os, re, glob, ast

DIR = '/root/gov_crawler'

def fix_pages(s):
    if '--pages' in s:
        return s, False
    changed = False
    # 匹配 4 空格缩进版本（if __name__ 块内）
    m = re.search(r"^    pages = int\(sys\.argv\[1\]\) if len\(sys\.argv\) > 1 else (\d+)$", s, re.M)
    if m:
        default = m.group(1)
        repl = (f"    _pages_args = [int(a.split('=', 1)[1]) for a in sys.argv if a.startswith('--pages=')]\n"
                f"    _pages_args = _pages_args or [int(a) for a in sys.argv[1:] if a.isdigit()]\n"
                f"    pages = _pages_args[0] if _pages_args else {default}")
        s = s.replace(m.group(0), repl)
        changed = True
    return s, changed

fixed = []
for p in glob.glob(os.path.join(DIR, 'crawl_*.py')):
    s = open(p).read()
    s2, c = fix_pages(s)
    if c:
        try:
            ast.parse(s2)
            open(p, 'w').write(s2)
            fixed.append(os.path.basename(p))
        except Exception as e:
            print(f"FAIL {os.path.basename(p)}: {e}")

print(f"修复 pages 兼容 ({len(fixed)}):")
for f in fixed:
    print('  ', f)
