修复bug

This commit is contained in:
zhinianboke 2025-07-30 11:29:20 +08:00
parent 20e2dcdc96
commit c7bcc72b98
4 changed files with 50 additions and 3 deletions

View File

@ -93,10 +93,22 @@ async def main():
continue
try:
await manager._add_cookie_async(cid, val)
logger.info(f"启动数据库中的 Cookie 任务: {cid}")
# 直接启动任务,不重新保存到数据库
from db_manager import db_manager
logger.info(f"正在获取Cookie详细信息: {cid}")
cookie_info = db_manager.get_cookie_details(cid)
user_id = cookie_info.get('user_id') if cookie_info else None
logger.info(f"Cookie详细信息获取成功: {cid}, user_id: {user_id}")
logger.info(f"正在创建异步任务: {cid}")
task = loop.create_task(manager._run_xianyu(cid, val, user_id))
manager.tasks[cid] = task
logger.info(f"启动数据库中的 Cookie 任务: {cid} (用户ID: {user_id})")
logger.info(f"任务已添加到管理器,当前任务数: {len(manager.tasks)}")
except Exception as e:
logger.error(f"启动 Cookie 任务失败: {cid}, {e}")
import traceback
logger.error(f"详细错误信息: {traceback.format_exc()}")
# 2) 如果配置文件中有新的 Cookie也加载它们
for entry in COOKIES_LIST:

View File

@ -55,17 +55,27 @@ class XianyuLive:
def __init__(self, cookies_str=None, cookie_id: str = "default", user_id: int = None):
"""初始化闲鱼直播类"""
logger.info(f"{cookie_id}】开始初始化XianyuLive...")
if not cookies_str:
cookies_str = COOKIES_STR
if not cookies_str:
raise ValueError("未提供cookies请在global_config.yml中配置COOKIES_STR或通过参数传入")
logger.info(f"{cookie_id}】解析cookies...")
self.cookies = trans_cookies(cookies_str)
logger.info(f"{cookie_id}】cookies解析完成包含字段: {list(self.cookies.keys())}")
self.cookie_id = cookie_id # 唯一账号标识
self.cookies_str = cookies_str # 保存原始cookie字符串
self.user_id = user_id # 保存用户ID用于token刷新时保持正确的所有者关系
self.base_url = WEBSOCKET_URL
if 'unb' not in self.cookies:
raise ValueError(f"{cookie_id}】Cookie中缺少必需的'unb'字段,当前字段: {list(self.cookies.keys())}")
self.myid = self.cookies['unb']
logger.info(f"{cookie_id}】用户ID: {self.myid}")
self.device_id = generate_device_id(self.myid)
# 心跳相关配置
@ -2161,7 +2171,10 @@ class XianyuLive:
async def main(self):
"""主程序入口"""
try:
logger.info(f"{self.cookie_id}】开始启动XianyuLive主程序...")
await self.create_session() # 创建session
logger.info(f"{self.cookie_id}】Session创建完成开始WebSocket连接循环...")
while True:
try:
# 检查账号是否启用
@ -2173,17 +2186,28 @@ class XianyuLive:
headers = WEBSOCKET_HEADERS.copy()
headers['Cookie'] = self.cookies_str
logger.info(f"{self.cookie_id}】准备建立WebSocket连接到: {self.base_url}")
logger.debug(f"{self.cookie_id}】WebSocket headers: {headers}")
# 兼容不同版本的websockets库
async with await self._create_websocket_connection(headers) as websocket:
logger.info(f"{self.cookie_id}】WebSocket连接建立成功")
self.ws = websocket
logger.info(f"{self.cookie_id}】开始初始化WebSocket连接...")
await self.init(websocket)
logger.info(f"{self.cookie_id}】WebSocket初始化完成")
# 启动心跳任务
logger.info(f"{self.cookie_id}】启动心跳任务...")
self.heartbeat_task = asyncio.create_task(self.heartbeat_loop(websocket))
# 启动token刷新任务
logger.info(f"{self.cookie_id}】启动token刷新任务...")
self.token_refresh_task = asyncio.create_task(self.token_refresh_loop())
logger.info(f"{self.cookie_id}】开始监听WebSocket消息...")
async for message in websocket:
try:
message_data = json.loads(message)

View File

@ -53,14 +53,24 @@ class CookieManager:
# ------------------------ 内部协程 ------------------------
async def _run_xianyu(self, cookie_id: str, cookie_value: str, user_id: int = None):
"""在事件循环中启动 XianyuLive.main"""
from XianyuAutoAsync import XianyuLive # 延迟导入,避免循环
logger.info(f"{cookie_id}】_run_xianyu方法开始执行...")
try:
logger.info(f"{cookie_id}】正在导入XianyuLive...")
from XianyuAutoAsync import XianyuLive # 延迟导入,避免循环
logger.info(f"{cookie_id}】XianyuLive导入成功")
logger.info(f"{cookie_id}】开始创建XianyuLive实例...")
logger.info(f"{cookie_id}】Cookie值长度: {len(cookie_value)}")
live = XianyuLive(cookie_value, cookie_id=cookie_id, user_id=user_id)
logger.info(f"{cookie_id}】XianyuLive实例创建成功开始调用main()...")
await live.main()
except asyncio.CancelledError:
logger.info(f"XianyuLive 任务已取消: {cookie_id}")
except Exception as e:
logger.error(f"XianyuLive 任务异常({cookie_id}): {e}")
import traceback
logger.error(f"详细错误信息: {traceback.format_exc()}")
async def _add_cookie_async(self, cookie_id: str, cookie_value: str, user_id: int = None):
if cookie_id in self.tasks:

View File

@ -9,6 +9,7 @@ import os
from typing import Any, Dict, List
import blackboxprotobuf
from loguru import logger
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs