#!/usr/bin/env python3 """ RapidAPI检查工具 从cauldron_new迁移的简化版本 """ import requests import time from typing import Dict, List, Any from config.settings import get_rapidapi_key class RapidAPIChecker: """RapidAPI服务检查器""" def __init__(self): """初始化检查器""" try: self.api_key = get_rapidapi_key() except Exception as e: print(f"❌ 无法获取RapidAPI密钥: {e}") self.api_key = "" self.headers = { 'X-RapidAPI-Key': self.api_key, 'Content-Type': 'application/json' } def test_api(self, host: str, endpoint: str, params: Dict = None, method: str = 'GET') -> Dict[str, Any]: """ 测试特定的RapidAPI服务 Args: host: API主机名 endpoint: API端点 params: 请求参数 method: HTTP方法 Returns: 测试结果 """ self.headers['X-RapidAPI-Host'] = host url = f"https://{host}{endpoint}" try: if method.upper() == 'GET': response = requests.get(url, headers=self.headers, params=params, timeout=8) else: response = requests.post(url, headers=self.headers, json=params, timeout=8) return { 'success': response.status_code == 200, 'status_code': response.status_code, 'response_size': len(response.text), 'response_time': response.elapsed.total_seconds(), 'error': None if response.status_code == 200 else response.text[:200] } except Exception as e: return { 'success': False, 'status_code': None, 'response_size': 0, 'response_time': 0, 'error': str(e) } def check_common_apis(self) -> Dict[str, Dict[str, Any]]: """检查常用的RapidAPI服务""" print("🔍 检查RapidAPI订阅状态") # 常用API列表 apis_to_check = [ { 'name': 'Yahoo Finance', 'host': 'yahoo-finance15.p.rapidapi.com', 'endpoint': '/api/yahoo/qu/quote/AAPL' }, { 'name': 'Alpha Vantage', 'host': 'alpha-vantage.p.rapidapi.com', 'endpoint': '/query?function=GLOBAL_QUOTE&symbol=AAPL' }, { 'name': 'Seeking Alpha', 'host': 'seeking-alpha.p.rapidapi.com', 'endpoint': '/symbols/get-profile?symbols=AAPL' } ] results = {} for api in apis_to_check: print(f" 测试 {api['name']}...") result = self.test_api(api['host'], api['endpoint']) results[api['name']] = result status = "✅ 可用" if result['success'] else "❌ 不可用" print(f" {status} - {result.get('response_time', 0):.2f}s") time.sleep(0.5) # 避免请求过快 return results def main(): """主函数""" checker = RapidAPIChecker() results = checker.check_common_apis() print("\n📊 检查结果总结:") available_count = sum(1 for result in results.values() if result['success']) print(f"可用API: {available_count}/{len(results)}") if __name__ == "__main__": main()