mirror of
https://github.com/cunnymessiah/keychecker.git
synced 2026-05-10 18:39:04 -07:00
deepseek update
This commit is contained in:
@@ -74,8 +74,9 @@ class APIKey:
|
|||||||
self.pro_voice_limit = 0
|
self.pro_voice_limit = 0
|
||||||
|
|
||||||
elif provider == Provider.DEEPSEEK:
|
elif provider == Provider.DEEPSEEK:
|
||||||
self.balance = ""
|
self.balance = "$0.0 USD"
|
||||||
self.available = False
|
self.available = False
|
||||||
|
self.rate_limited = False
|
||||||
|
|
||||||
def clone(self):
|
def clone(self):
|
||||||
cloned_key = APIKey(self.provider, self.api_key)
|
cloned_key = APIKey(self.provider, self.api_key)
|
||||||
|
|||||||
+29
-15
@@ -1,33 +1,47 @@
|
|||||||
import APIKey
|
import APIKey
|
||||||
|
|
||||||
|
|
||||||
async def check_whale(key: APIKey, session):
|
async def check_whale(key: APIKey, session):
|
||||||
async with session.get(f'https://api.deepseek.com/models', headers={'Authorization': f'Bearer {key.api_key}'}) as response:
|
valid = await check_balance(key, session)
|
||||||
if response.status != 200:
|
return valid
|
||||||
return
|
|
||||||
if not await check_balance(key, session):
|
|
||||||
return
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
async def check_balance(key: APIKey, session):
|
async def check_balance(key: APIKey, session):
|
||||||
async with session.get(f'https://api.deepseek.com/user/balance', headers={'Authorization': f'Bearer {key.api_key}'}) as response:
|
async with session.get(f'https://api.deepseek.com/user/balance', headers={'Authorization': f'Bearer {key.api_key}'}) as response:
|
||||||
if response.status != 200:
|
if response.status == 429:
|
||||||
return
|
return False
|
||||||
|
elif response.status != 200:
|
||||||
|
return None
|
||||||
|
|
||||||
data = await response.json()
|
data = await response.json()
|
||||||
key.available = data.get('is_available', False)
|
key.available = data.get('is_available', False)
|
||||||
balance_infos = data.get('balance_infos', [])
|
balance_infos = data.get('balance_infos', [])
|
||||||
if balance_infos:
|
total_usd = 0.0
|
||||||
key.balance = float(balance_infos[0].get('total_balance', '0.0'))
|
for balance in balance_infos:
|
||||||
|
amount = float(balance.get('total_balance', '0.0'))
|
||||||
|
currency = balance.get('currency', 'USD')
|
||||||
|
if currency == 'CNY':
|
||||||
|
amount *= 0.14
|
||||||
|
total_usd += amount
|
||||||
|
|
||||||
|
key.balance = f'${total_usd:.1f} USD'
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def pretty_print_deepseek_keys(keys):
|
def pretty_print_deepseek_keys(keys):
|
||||||
keys = sorted(keys, key=lambda x: x.balance, reverse=True)
|
def get_balance_value(key):
|
||||||
|
return float(key.balance.split()[0].replace('$', ''))
|
||||||
|
|
||||||
|
keys = sorted(keys, key=lambda x: (
|
||||||
|
x.rate_limited,
|
||||||
|
get_balance_value(x) == 0,
|
||||||
|
-get_balance_value(x)
|
||||||
|
))
|
||||||
|
|
||||||
print('-' * 90)
|
print('-' * 90)
|
||||||
available = sum(1 for key in keys if key.available)
|
available = sum(1 for key in keys if key.available)
|
||||||
print(f'Validated {len(keys)} Deepseek keys:')
|
print(f'Validated {len(keys)} Deepseek keys:')
|
||||||
for key in keys:
|
for key in keys:
|
||||||
balance_str = f'| ${key.balance}' if key.available else ''
|
balance_str = f' | {key.balance}' if key.available else ''
|
||||||
print(f'{key.api_key} {balance_str}')
|
ratelimit_str = f' | rate-limited' if key.rate_limited else ''
|
||||||
print(f'\n--- Total Valid Deepseek Keys: {len(keys)} ({available} with sufficient usage balance) ---\n')
|
print(f'{key.api_key}{balance_str}{ratelimit_str}')
|
||||||
|
print(f'\n--- Total Valid Deepseek Keys: {len(keys)} ({available} with sufficient usage balance) ---\n')
|
||||||
@@ -183,12 +183,25 @@ async def validate_vertexai(key: APIKey, sem):
|
|||||||
|
|
||||||
|
|
||||||
async def validate_whale(key: APIKey, sem):
|
async def validate_whale(key: APIKey, sem):
|
||||||
async with sem, aiohttp.ClientSession() as session:
|
retry_count = 4
|
||||||
|
async with sem, deepseek_semaphore, aiohttp.ClientSession() as session:
|
||||||
IO.conditional_print(f"Checking Deepseek key: {key.api_key}", args.verbose)
|
IO.conditional_print(f"Checking Deepseek key: {key.api_key}", args.verbose)
|
||||||
if await check_whale(key, session) is None:
|
key_status = await check_whale(key, session)
|
||||||
|
if key_status is None:
|
||||||
IO.conditional_print(f"Invalid Deepseek key: {key.api_key}", args.verbose)
|
IO.conditional_print(f"Invalid Deepseek key: {key.api_key}", args.verbose)
|
||||||
return
|
return
|
||||||
|
elif key_status is False:
|
||||||
|
i = 0
|
||||||
|
while await check_whale(key, session) is False and i < retry_count:
|
||||||
|
i += 1
|
||||||
|
await asyncio.sleep(2)
|
||||||
|
print(f"Stuck determining status of rate limited Deepseek key '{key.api_key[-8:]}' - attempt {i} of {retry_count}")
|
||||||
|
key.rate_limited = True
|
||||||
|
else:
|
||||||
|
if i < retry_count:
|
||||||
|
key.rate_limited = False
|
||||||
IO.conditional_print(f"Deepseek key '{key.api_key}' is valid", args.verbose)
|
IO.conditional_print(f"Deepseek key '{key.api_key}' is valid", args.verbose)
|
||||||
|
# await asyncio.sleep(5)
|
||||||
api_keys.add(key)
|
api_keys.add(key)
|
||||||
|
|
||||||
|
|
||||||
@@ -226,7 +239,7 @@ deepseek_regex = re.compile(r'sk-[a-f0-9]{32}')
|
|||||||
executor = ThreadPoolExecutor(max_workers=100)
|
executor = ThreadPoolExecutor(max_workers=100)
|
||||||
concurrent_connections = asyncio.Semaphore(1500)
|
concurrent_connections = asyncio.Semaphore(1500)
|
||||||
makersuite_semaphore = asyncio.Semaphore(50) # when did google become such a pussy
|
makersuite_semaphore = asyncio.Semaphore(50) # when did google become such a pussy
|
||||||
|
deepseek_semaphore = asyncio.Semaphore(50)
|
||||||
|
|
||||||
async def validate_keys():
|
async def validate_keys():
|
||||||
tasks = []
|
tasks = []
|
||||||
|
|||||||
Reference in New Issue
Block a user