#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""境外涉华舆情简报 - 小时采集脚本（扩大数据源）"""

import json, os, requests
from datetime import datetime

SEARXNG_URL = 'http://localhost:8080/search'
HOURLY_DIR = '/home/admin/.openclaw/workspace/reports/overseas-china-briefing/hourly'
LOG_FILE = '/home/admin/.openclaw/workspace/reports/overseas-china-briefing/cron.log'

QUERIES = [
    # 台湾问题
    'site:xinhuanet.com 台湾 美国 OR 军售',
    'site:globaltimes.cn Taiwan US OR arms',
    'site:reuters.com Taiwan China US',
    'site:scmp.com Taiwan China',
    'site:cna.com.tw 台湾 美国',
    
    # 科技封锁
    'site:xinhuanet.com 中国 科技 OR 芯片 OR 制裁',
    'site:reuters.com China technology sanction',
    'site:apnews.com China chip semiconductor',
    'site:ft.com China tech US',
    
    # 人权议题
    'site:bbc.com China human rights Xinjiang',
    'site:nytimes.com China human rights',
    'site:xinhuanet.com 新疆 西藏 人权',
    
    # 一带一路
    'site:reuters.com China Belt and Road',
    'site:scmp.com China BRI investment',
    'site:xinhuanet.com 一带一路 合作',
    
    # 军事安全
    'site:globaltimes.cn 中国 军事 OR 南海',
    'site:reuters.com China military South China Sea',
    'site:scmp.com China PLA navy',
    
    # 国际关系
    'site:reuters.com China US relations',
    'site:ft.com China Europe relations',
    'site:xinhuanet.com 中国 外交 OR 中美',
]

def log(msg):
    ts = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    line = f'[{ts}] {msg}'
    print(line)
    os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)
    with open(LOG_FILE, 'a', encoding='utf-8') as f:
        f.write(line + '\n')

def main():
    log('========== 境外涉华 hourly 采集启动 ==========')
    hour = datetime.now().strftime('%Y%m%d_%H00')
    output_file = f'{HOURLY_DIR}/{hour}.json'
    os.makedirs(HOURLY_DIR, exist_ok=True)
    
    log(f'开始采集 {hour} 时段数据...（{len(QUERIES)} 个查询）')
    all_results = []
    
    for q in QUERIES:
        try:
            params = {'q': q, 'format': 'json', 'language': 'zh'}
            r = requests.get(SEARXNG_URL, params=params, timeout=15)
            if r.status_code == 200:
                all_results.append({'query': q, 'data': r.json()})
                log(f'✓ 采集完成：{q[:50]}')
        except Exception as e:
            log(f'✗ 搜索失败 {q[:30]}: {e}')
    
    with open(output_file, 'w', encoding='utf-8') as f:
        json.dump({'timestamp': datetime.now().isoformat(), 'queries': all_results}, f, ensure_ascii=False, indent=2)
    
    log(f'采集完成，共 {len(all_results)} 个查询')
    log('========== 小时采集任务完成 ==========')

if __name__ == '__main__':
    main()
