mirror of
https://github.com/zhinianboke/xianyu-auto-reply.git
synced 2025-08-01 12:07:36 +08:00
修复bug
This commit is contained in:
parent
20e2dcdc96
commit
c7bcc72b98
16
Start.py
16
Start.py
@ -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:
|
||||
|
@ -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)
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user