mirror of
https://github.com/zhinianboke/xianyu-auto-reply.git
synced 2025-08-02 04:27: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
|
continue
|
||||||
|
|
||||||
try:
|
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:
|
except Exception as e:
|
||||||
logger.error(f"启动 Cookie 任务失败: {cid}, {e}")
|
logger.error(f"启动 Cookie 任务失败: {cid}, {e}")
|
||||||
|
import traceback
|
||||||
|
logger.error(f"详细错误信息: {traceback.format_exc()}")
|
||||||
|
|
||||||
# 2) 如果配置文件中有新的 Cookie,也加载它们
|
# 2) 如果配置文件中有新的 Cookie,也加载它们
|
||||||
for entry in COOKIES_LIST:
|
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):
|
def __init__(self, cookies_str=None, cookie_id: str = "default", user_id: int = None):
|
||||||
"""初始化闲鱼直播类"""
|
"""初始化闲鱼直播类"""
|
||||||
|
logger.info(f"【{cookie_id}】开始初始化XianyuLive...")
|
||||||
|
|
||||||
if not cookies_str:
|
if not cookies_str:
|
||||||
cookies_str = COOKIES_STR
|
cookies_str = COOKIES_STR
|
||||||
if not cookies_str:
|
if not cookies_str:
|
||||||
raise ValueError("未提供cookies,请在global_config.yml中配置COOKIES_STR或通过参数传入")
|
raise ValueError("未提供cookies,请在global_config.yml中配置COOKIES_STR或通过参数传入")
|
||||||
|
|
||||||
|
logger.info(f"【{cookie_id}】解析cookies...")
|
||||||
self.cookies = trans_cookies(cookies_str)
|
self.cookies = trans_cookies(cookies_str)
|
||||||
|
logger.info(f"【{cookie_id}】cookies解析完成,包含字段: {list(self.cookies.keys())}")
|
||||||
|
|
||||||
self.cookie_id = cookie_id # 唯一账号标识
|
self.cookie_id = cookie_id # 唯一账号标识
|
||||||
self.cookies_str = cookies_str # 保存原始cookie字符串
|
self.cookies_str = cookies_str # 保存原始cookie字符串
|
||||||
self.user_id = user_id # 保存用户ID,用于token刷新时保持正确的所有者关系
|
self.user_id = user_id # 保存用户ID,用于token刷新时保持正确的所有者关系
|
||||||
self.base_url = WEBSOCKET_URL
|
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']
|
self.myid = self.cookies['unb']
|
||||||
|
logger.info(f"【{cookie_id}】用户ID: {self.myid}")
|
||||||
self.device_id = generate_device_id(self.myid)
|
self.device_id = generate_device_id(self.myid)
|
||||||
|
|
||||||
# 心跳相关配置
|
# 心跳相关配置
|
||||||
@ -2161,7 +2171,10 @@ class XianyuLive:
|
|||||||
async def main(self):
|
async def main(self):
|
||||||
"""主程序入口"""
|
"""主程序入口"""
|
||||||
try:
|
try:
|
||||||
|
logger.info(f"【{self.cookie_id}】开始启动XianyuLive主程序...")
|
||||||
await self.create_session() # 创建session
|
await self.create_session() # 创建session
|
||||||
|
logger.info(f"【{self.cookie_id}】Session创建完成,开始WebSocket连接循环...")
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
# 检查账号是否启用
|
# 检查账号是否启用
|
||||||
@ -2173,17 +2186,28 @@ class XianyuLive:
|
|||||||
headers = WEBSOCKET_HEADERS.copy()
|
headers = WEBSOCKET_HEADERS.copy()
|
||||||
headers['Cookie'] = self.cookies_str
|
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库
|
# 兼容不同版本的websockets库
|
||||||
async with await self._create_websocket_connection(headers) as websocket:
|
async with await self._create_websocket_connection(headers) as websocket:
|
||||||
|
logger.info(f"【{self.cookie_id}】WebSocket连接建立成功!")
|
||||||
self.ws = websocket
|
self.ws = websocket
|
||||||
|
|
||||||
|
logger.info(f"【{self.cookie_id}】开始初始化WebSocket连接...")
|
||||||
await self.init(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))
|
self.heartbeat_task = asyncio.create_task(self.heartbeat_loop(websocket))
|
||||||
|
|
||||||
# 启动token刷新任务
|
# 启动token刷新任务
|
||||||
|
logger.info(f"【{self.cookie_id}】启动token刷新任务...")
|
||||||
self.token_refresh_task = asyncio.create_task(self.token_refresh_loop())
|
self.token_refresh_task = asyncio.create_task(self.token_refresh_loop())
|
||||||
|
|
||||||
|
logger.info(f"【{self.cookie_id}】开始监听WebSocket消息...")
|
||||||
|
|
||||||
async for message in websocket:
|
async for message in websocket:
|
||||||
try:
|
try:
|
||||||
message_data = json.loads(message)
|
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):
|
async def _run_xianyu(self, cookie_id: str, cookie_value: str, user_id: int = None):
|
||||||
"""在事件循环中启动 XianyuLive.main"""
|
"""在事件循环中启动 XianyuLive.main"""
|
||||||
from XianyuAutoAsync import XianyuLive # 延迟导入,避免循环
|
logger.info(f"【{cookie_id}】_run_xianyu方法开始执行...")
|
||||||
|
|
||||||
try:
|
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)
|
live = XianyuLive(cookie_value, cookie_id=cookie_id, user_id=user_id)
|
||||||
|
logger.info(f"【{cookie_id}】XianyuLive实例创建成功,开始调用main()...")
|
||||||
await live.main()
|
await live.main()
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
logger.info(f"XianyuLive 任务已取消: {cookie_id}")
|
logger.info(f"XianyuLive 任务已取消: {cookie_id}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"XianyuLive 任务异常({cookie_id}): {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):
|
async def _add_cookie_async(self, cookie_id: str, cookie_value: str, user_id: int = None):
|
||||||
if cookie_id in self.tasks:
|
if cookie_id in self.tasks:
|
||||||
|
@ -9,6 +9,7 @@ import os
|
|||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
import blackboxprotobuf
|
import blackboxprotobuf
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
|
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
|
||||||
import execjs
|
import execjs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user