File size: 1,712 Bytes
d20ef33 |
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 |
# -*- coding:utf-8 -*-
from cookie import suno_auths
from utils import get_credits
import logging
import asyncio
async def get_token():
disabled_accounts = set()
while True:
for i, suno_auth in sorted(suno_auths.items()):
if suno_auth.is_disabled or i in disabled_accounts:
continue
token = suno_auth.get_token()
try:
credits_info = await get_credits(token)
credits = credits_info.get('credits_left', 0)
logging.info(f"当前账号 {suno_auth.get_session_id()} 积分: {credits}")
if credits > 5:
return token
except Exception as e:
logging.error(f"账号 {suno_auth.get_session_id()} 获取积分失败: {e}")
suno_auth.disable()
disabled_accounts.add(i)
if len(disabled_accounts) == len(suno_auths):
logging.warning("所有账号都已被禁用,等待 1 小时后重试...")
await asyncio.sleep(3600) # 等待1小时 (3600秒)
# 重置所有账号的禁用状态
for suno_auth in suno_auths.values():
suno_auth.enable()
disabled_accounts.clear()
else:
logging.warning("所有可用账号积分已用尽,等待 1 小时后重试...")
await asyncio.sleep(3600) # 等待1小时 (3600秒)
# 在程序启动时重置所有账号的禁用状态
def reset_account_status():
for suno_auth in suno_auths.values():
suno_auth.enable()
# 确保在主程序中调用此函数
reset_account_status() |