#!/usr/bin/env python3
"""Clean up and retry ningguo"""
import sqlite3
import subprocess

DB_PATH = "/root/search.db"
conn = sqlite3.connect(DB_PATH)
c = conn.cursor()

c.execute("SELECT COUNT(*) FROM gov_raw WHERE script_name='crawl_ningguo_qtxx.py'")
cnt = c.fetchone()[0]
print(f"当前数据: {cnt}条")

if cnt > 0:
    c.execute("SELECT id, title FROM gov_raw WHERE script_name='crawl_ningguo_qtxx.py' LIMIT 10")
    for row in c.fetchall():
        print(f"  id={row[0]}: {row[1][:60]}")

    c.execute("DELETE FROM gov_search WHERE rowid IN (SELECT id FROM gov_raw WHERE script_name='crawl_ningguo_qtxx.py')")
    c.execute("DELETE FROM gov_raw WHERE script_name='crawl_ningguo_qtxx.py'")
    conn.commit()
    print("已删除")

conn.close()

# Run the fixed crawler
print("\n运行修复后的爬虫...")
result = subprocess.run(
    ["python3", "/root/gov_crawler/crawl_ningguo_qtxx.py", "--pages=1"],
    capture_output=True, text=True, timeout=180
)
print(result.stdout)
if result.stderr:
    stderr_clean = "\n".join(l for l in result.stderr.split("\n") if "Warning" not in l and "warnings" not in l and "urllib3" not in l and "NotOpenSSL" not in l)
    if stderr_clean.strip():
        print(f"STDERR: {stderr_clean[:500]}")

# Verify
conn = sqlite3.connect(DB_PATH)
c = conn.cursor()
c.execute("SELECT COUNT(*) FROM gov_raw WHERE script_name='crawl_ningguo_qtxx.py'")
new_cnt = c.fetchone()[0]
c.execute("SELECT COUNT(*) FROM gov_search WHERE rowid IN (SELECT id FROM gov_raw WHERE script_name='crawl_ningguo_qtxx.py')")
fts_cnt = c.fetchone()[0]
print(f"\n验证: 入库{new_cnt}条, FTS{fts_cnt}条")

# Show samples
c.execute("""
    SELECT id, title, date(publish_date), length(content),
           CASE WHEN content LIKE '%\n\n%' THEN '分段OK' ELSE '未分段' END as quality
    FROM gov_raw 
    WHERE script_name='crawl_ningguo_qtxx.py' 
    ORDER BY id DESC LIMIT 5
""")
for row in c.fetchall():
    print(f"#{row[0]} {row[1][:50]} ({row[2]}, {row[3]}chars) [{row[4]}]")

conn.close()
