| import http.client |
| import json |
| import os |
| import requests |
| SERPER_API_KEYS = [ |
| os.getenv("SERPER_API_KEY_1", ""), |
| os.getenv("SERPER_API_KEY_2", ""), |
| os.getenv("SERPER_API_KEY_3", ""), |
| ] |
|
|
| CURRENT_SERPER_INDEX = 0 |
|
|
|
|
| def get_serper_credits(api_key: str) -> int: |
| try: |
| conn = http.client.HTTPSConnection("google.serper.dev") |
| headers = {"X-API-KEY": api_key} |
| conn.request("GET", "/credits", headers=headers) |
| res = conn.getresponse() |
| data = json.loads(res.read().decode("utf-8")) |
| return int(data.get("credits", 0)) |
| except: |
| return 0 |
|
|
|
|
| def get_valid_serper_key(min_credits=100): |
| global CURRENT_SERPER_INDEX |
|
|
| for idx, key in enumerate(SERPER_API_KEYS): |
| if not key: |
| continue |
| credits = get_serper_credits(key) |
| if credits >= min_credits: |
| CURRENT_SERPER_INDEX = idx |
| return key, credits, CURRENT_SERPER_INDEX |
|
|
| raise Exception( |
| "❌ SERPER credits exhausted on all APIs. Please contact the developer. " |
| "❌ يجب التواصل مع المطور لإضافة API Keys جديدة لSERPER" |
| ) |
|
|