from loguru import logger from PyQt6.QtCore import QThread, pyqtSignal from PyQt6.QtGui import QPixmap from ..api import miaoStarsBasicApi class UserNickNameUpdateThread(QThread): successUpdate = pyqtSignal() errorUpdate = pyqtSignal(str) def __init__(self, nickName: str): super().__init__() logger.debug(f"初始化用户昵称服务线程 - 昵称: {nickName}") self.nickName = nickName def run(self): logger.info(f"开始更新用户昵称 - 昵称: {self.nickName}") try: response = miaoStarsBasicApi.updateUserNickname(self.nickName) print(response) if response["code"] == 0: self.successUpdate.emit() else: logger.error("更新失败:", response["msg"]) self.errorUpdate.emit(response["msg"]) except Exception as e: logger.error(f"更新用户昵称过程中发生异常: {e}") self.errorUpdate.emit("系统错误,请稍后重试") class UserAvatarUpdateThread(QThread): successUpdate = pyqtSignal() errorUpdate = pyqtSignal(str) def __init__(self, avatarPath: str): super().__init__() logger.debug(f"初始化用户头像服务线程 - 头像路径: {avatarPath}") self.avatarPath = avatarPath def run(self): logger.info(f"开始更新用户头像 - 头像路径: {self.avatarPath}") try: response = miaoStarsBasicApi.updateUserAvatar(self.avatarPath) if response["code"] == 0: logger.info("头像更新成功") self.successUpdate.emit() else: logger.error(f"更新失败,错误信息: {response['msg']}") self.errorUpdate.emit(f"更新失败: {response['msg']}") except Exception as e: logger.error(f"更新用户头像过程中发生异常: {e}") self.errorUpdate.emit("系统错误,请稍后重试") class GetUserAvatarThread(QThread): avatarPixmap = pyqtSignal(QPixmap) def __init__(self, size: str): super().__init__() logger.debug(f"初始化获取用户头像服务线程 - 头像尺寸: {size}") self.size = size def run(self): logger.info(f"开始获取用户头像 - 头像尺寸: {self.size}") try: response = miaoStarsBasicApi.getUserAvatar(self.size) self.avatarPixmap.emit(response) except Exception as e: logger.error(f"获取用户头像过程中发生异常: {e}") self.avatarPixmap.emit(QPixmap(":app/images/logo.png")) class GetPackThread(QThread): storageDictSignal = pyqtSignal(dict) def __init__(self): super().__init__() def run(self): logger.info("开始请求用户配额包") try: response = miaoStarsBasicApi.getUserPack() self.storageDictSignal.emit(response) except Exception as e: logger.error(f"获取用户配额包过程中发生异常: {e}") self.storageDictSignal.emit( { "code": 0, "data": { "base": 0, "pack": 0, "used": 0, "total": 0, "packs": [], }, "msg": "", } ) class GetPoliciesThread(QThread): """获取策略列表线程""" successGetSignal = pyqtSignal(list) errorSignal = pyqtSignal(str) def __init__(self): super().__init__() def run(self): try: response = miaoStarsBasicApi.getPolicy() if response["code"] == 0: self.successGetSignal.emit(response["data"]) else: self.errorSignal.emit(f"API返回错误: {response.get('msg')}") except Exception as e: self.errorSignal.emit(f"获取策略列表失败: {str(e)}") class ChangePolicyThread(QThread): """更改策略线程""" successChangedSignal = pyqtSignal() errorSignal = pyqtSignal(str) def __init__(self, path, policy_id): super().__init__() self.path = path self.policy_id = policy_id def run(self): try: response = miaoStarsBasicApi.changePolicy(self.path, self.policy_id) if response["code"] == 0: self.successChangedSignal.emit() else: self.errorSignal.emit( f"更改策略失败: {response.get('msg', '未知错误')}" ) except Exception as e: self.errorSignal.emit(f"更改策略请求失败: {str(e)}") class DeleteTagThread(QThread): """删除标签线程""" successDeleteSignal = pyqtSignal() errorSignal = pyqtSignal(str) def __init__(self, tagId): super().__init__() self.tagId = tagId def run(self): try: response = miaoStarsBasicApi.deleteTag(self.tagId) if response["code"] == 0: self.successDeleteSignal.emit() logger.info(f"删除标签成功: {self.tagId}") else: logger.error(f"删除标签失败: {response.get('msg')}") self.errorSignal.emit(f"删除标签失败: {response.get('msg')}") except Exception as e: self.errorSignal.emit(f"{str(e)}") logger.error(f"删除标签请求失败: {str(e)}") class AddTagThread(QThread): """添加标签的线程类""" successSignal = pyqtSignal(str, dict) # 标签名称, 响应数据 errorSignal = pyqtSignal(str, str) # 标签名称, 错误信息 def __init__(self, name, expression, parent=None): super().__init__(parent) self.name = name self.expression = expression def run(self): """线程执行的主方法""" try: response = miaoStarsBasicApi.addTag(self.name, self.expression) if response["code"] == 0: logger.info(f"添加标签成功: {self.name}") self.successSignal.emit(self.name, response) else: logger.error(f"添加标签失败: {self.name} - {response.get('msg')}") self.errorSignal.emit(self.name, response.get("msg")) except Exception as e: logger.error(f"添加标签异常: {self.name} - {str(e)}") self.errorSignal.emit(self.name, str(e))