""" Google API相关功能模块 - 提供Google API的调用和验证功能 """ import requests def validate_api_key(api_key): """ 验证Google API密钥是否有效 Args: api_key (str): 需要验证的Google API密钥 Returns: dict: 包含验证结果的字典,包括: - success (bool): API密钥验证成功为True,失败为False - return_message (str): 验证响应的具体消息,成功时为空字符串,失败时为错误详情 - balance (float): 账户余额,固定为0 - states (str): 账户状态,付费版或免费版 """ url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro:generateContent" params = { "key": api_key } payload = { "contents": [ { "parts": [{"text": "Hello"}] } ], "generationConfig": { "maxOutputTokens": 1 } } try: response = requests.post(url, params=params, json=payload) if response.status_code == 200: states = check_paid_account(api_key) return { "success": True, "return_message": "200: Success!", "balance": 0, "states": states } else: return_message = "" try: error_data = response.json() if "error" in error_data: return_message = error_data["error"].get("message", "") if "details" in error_data["error"]: for detail in error_data["error"]["details"]: if detail.get("errorMessage"): return_message += f" {detail['errorMessage']}" return_message = f"{response.status_code}: {return_message}" except: return_message = f"{response.status_code}: {response.text or f'HTTP错误'}" return { "success": False, "return_message": return_message, "balance": 0, "states": "" } except Exception as e: error_str = str(e) print(f"验证API密钥时出错: {error_str}") return { "success": False, "return_message": f"500: 请求异常: {error_str}", "balance": 0, "states": "" } def check_paid_account(api_key): """ 检查Google API密钥是否为付费账户 Args: api_key (str): Google API密钥 Returns: str: 账户状态,付费版返回"Paid",免费版返回"Free" """ try: imagen_url = "https://generativelanguage.googleapis.com/v1beta/models/imagen-3.0-generate-002:predict" params = {"key": api_key} payload = { "instances": [{"prompt": "Hi"}] } timeout = 3 try: response = requests.post(imagen_url, params=params, json=payload, timeout=timeout) if response.status_code == 200: return "Paid" else: return "Free" except requests.exceptions.Timeout: return "Paid" except Exception: return "Free" except Exception as e: print(f"检查账户类型时出错: {str(e)}") return "Free"