#!/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/taiwan-daily-briefing/hourly'
LOG_FILE = '/home/admin/.openclaw/workspace/reports/taiwan-daily-briefing/cron.log'

QUERIES = [
    # 两岸关系
    'site:xinhuanet.com 台湾 OR 台海 OR 台独',
    'site:people.com.cn 台湾 OR 统一',
    'site:globaltimes.cn Taiwan OR 台独',
    'site:observer.cn 台湾 OR 台独',
    'site:reuters.com Taiwan China',
    'site:scmp.com Taiwan China',
    
    # 台独动向
    'site:globaltimes.cn 赖清德 OR 民进党',
    'site:xinhuanet.com 台独 OR 去中国化',
    
    # 美台往来
    'site:globaltimes.cn 美台 OR 军售',
    'site:reuters.com Taiwan US arms',
    'site:scmp.com Taiwan US relations',
    'site:cna.com.tw 台湾 美国',
    
    # 军事动态
    'site:globaltimes.cn 台海 OR 军演',
    'site:reuters.com Taiwan military China',
    'site:scmp.com PLA Taiwan drill',
    
    # 岛内政治
    'site:cna.com.tw 台湾 选举 OR 立法院',
    'site:reuters.com Taiwan election',
    
    # 国际舆论
    'site:bbc.com Taiwan China',
    'site:nytimes.com Taiwan China',
    'site:ft.com Taiwan China',
    'site:udn.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[:40]}')
        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()
