File size: 3,653 Bytes
5ad3e05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99fc92f
5ad3e05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
"""

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"