diff --git a/package.json b/package.json index 548c3c9..b08f9b0 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,12 @@ "name": "站点自动签到", "description": "自动模拟登录、签到站点。", "labels": "站点", - "version": "2.4", + "version": "2.4.1", "icon": "signin.png", "author": "thsrite", "level": 2, "history": { + "v2.4.1": "修复海胆签到失败问题", "v2.4": "适配m-team Api地址变化", "v2.3.2": "修复YemaPT登录失败,支持YemaPT自动签到", "v2.3.1": "修复签到报错问题", @@ -31,11 +32,13 @@ "name": "站点数据统计", "description": "自动统计和展示站点数据。", "labels": "站点,仪表板", - "version": "3.9.1", + "version": "3.9.3", "icon": "statistic.png", "author": "lightolly", "level": 2, "history": { + "v3.9.3": "修复PTT的用户等级统计", + "v3.9.2": "修复YemaPT的上传下载统计错误", "v3.9.1": "修复mteam域名地址", "v3.9": "修复YemaPT站点数据统计", "v3.8": "适配m-team Api地址变化", @@ -169,10 +172,13 @@ "name": "播放限速", "description": "外网播放媒体库视频时,自动对下载器进行限速。", "labels": "网络", - "version": "1.1", + "version": "1.2", "icon": "Librespeed_A.png", "author": "Shurelol", - "level": 1 + "level": 1, + "history": { + "v1.2": "增加不限速路径配置,以应对网盘直链播放的情况" + } }, "CloudflareSpeedTest": { "name": "Cloudflare IP优选", diff --git a/plugins/autosignin/__init__.py b/plugins/autosignin/__init__.py index 1c9a5a3..a3d21d0 100644 --- a/plugins/autosignin/__init__.py +++ b/plugins/autosignin/__init__.py @@ -38,7 +38,7 @@ class AutoSignIn(_PluginBase): # 插件图标 plugin_icon = "signin.png" # 插件版本 - plugin_version = "2.4" + plugin_version = "2.4.1" # 插件作者 plugin_author = "thsrite" # 作者主页 diff --git a/plugins/autosignin/sites/haidan.py b/plugins/autosignin/sites/haidan.py index 38a4af3..23f6b03 100644 --- a/plugins/autosignin/sites/haidan.py +++ b/plugins/autosignin/sites/haidan.py @@ -39,7 +39,15 @@ class HaiDan(_ISiteSigninHandler): render = site_info.get("render") # 签到 - html_text = self.get_page_source(url='https://www.haidan.video/signin.php', + # 签到页会重定向到index.php,由于302重定向特性,导致index.php没有携带cookie + self.get_page_source(url='https://www.haidan.video/signin.php', + cookie=site_cookie, + ua=ua, + proxy=proxy, + render=render) + + # 重新携带cookie获取index.php查看签到结果 + html_text = self.get_page_source(url='https://www.haidan.video/index.php', cookie=site_cookie, ua=ua, proxy=proxy, diff --git a/plugins/sitestatistic/__init__.py b/plugins/sitestatistic/__init__.py index 752ee13..90b2218 100644 --- a/plugins/sitestatistic/__init__.py +++ b/plugins/sitestatistic/__init__.py @@ -43,7 +43,7 @@ class SiteStatistic(_PluginBase): # 插件图标 plugin_icon = "statistic.png" # 插件版本 - plugin_version = "3.9.1" + plugin_version = "3.9.3" # 插件作者 plugin_author = "lightolly" # 作者主页 diff --git a/plugins/sitestatistic/siteuserinfo/nexus_php.py b/plugins/sitestatistic/siteuserinfo/nexus_php.py index e5efd06..c1deced 100644 --- a/plugins/sitestatistic/siteuserinfo/nexus_php.py +++ b/plugins/sitestatistic/siteuserinfo/nexus_php.py @@ -340,6 +340,12 @@ class NexusPhpSiteUserInfo(ISiteUserInfo): self.user_level = user_levels_text[0].xpath("string(.)").strip() return + # 适配PTT用户等级 + user_levels_text = html.xpath('//tr/td[text()="用户等级"]/following-sibling::td[1]/b/@title') + if user_levels_text: + self.user_level = user_levels_text[0].strip() + return + user_levels_text = html.xpath('//a[contains(@href, "userdetails")]/text()') if not self.user_level and user_levels_text: for user_level_text in user_levels_text: diff --git a/plugins/sitestatistic/siteuserinfo/yema.py b/plugins/sitestatistic/siteuserinfo/yema.py index 636d55e..44a23d7 100644 --- a/plugins/sitestatistic/siteuserinfo/yema.py +++ b/plugins/sitestatistic/siteuserinfo/yema.py @@ -62,8 +62,8 @@ class TYemaSiteUserInfo(ISiteUserInfo): self.user_level = user_info.get("level") self.join_at = StringUtils.unify_datetime_str(user_info.get("registerTime")) - self.upload = user_info.get('uploadSize') - self.download = user_info.get('downloadSize') + self.upload = user_info.get('promotionUploadSize') + self.download = user_info.get('promotionDownloadSize') self.ratio = round(self.upload / (self.download or 1), 2) self.bonus = user_info.get("bonus") self.message_unread = 0 diff --git a/plugins/speedlimiter/__init__.py b/plugins/speedlimiter/__init__.py index 4700c6c..517f683 100644 --- a/plugins/speedlimiter/__init__.py +++ b/plugins/speedlimiter/__init__.py @@ -23,7 +23,7 @@ class SpeedLimiter(_PluginBase): # 插件图标 plugin_icon = "Librespeed_A.png" # 插件版本 - plugin_version = "1.1" + plugin_version = "1.2" # 插件作者 plugin_author = "Shurelol" # 作者主页 @@ -55,6 +55,7 @@ class SpeedLimiter(_PluginBase): _unlimited_ips = {} # 当前限速状态 _current_state = "" + _exclude_path = "" def init_plugin(self, config: dict = None): # 读取配置 @@ -66,6 +67,8 @@ class SpeedLimiter(_PluginBase): self._noplay_up_speed = float(config.get("noplay_up_speed")) if config.get("noplay_up_speed") else 0 self._noplay_down_speed = float(config.get("noplay_down_speed")) if config.get("noplay_down_speed") else 0 self._current_state = f"U:{self._noplay_up_speed},D:{self._noplay_down_speed}" + self._exclude_path = config.get("exclude_path") + try: # 总带宽 self._bandwidth = int(float(config.get("bandwidth") or 0)) * 1000000 @@ -355,6 +358,23 @@ class SpeedLimiter(_PluginBase): } } ] + }, + { + 'component': 'VCol', + 'props': { + 'cols': 12, + 'md': 6 + }, + 'content': [ + { + 'component': 'VTextField', + 'props': { + 'model': 'exclude_path', + 'label': '不限速路径', + 'placeholder': '包含该路径的媒体不限速,多个请换行' + } + } + ] } ] } @@ -371,7 +391,8 @@ class SpeedLimiter(_PluginBase): "bandwidth": None, "allocation_ratio": "", "ipv4": "", - "ipv6": "" + "ipv6": "", + "exclude_path": "" } def get_page(self) -> List[dict]: @@ -415,7 +436,9 @@ class SpeedLimiter(_PluginBase): sessions = res.json() for session in sessions: if session.get("NowPlayingItem") and not session.get("PlayState", {}).get("IsPaused"): - playing_sessions.append(session) + if not self.__path_execluded(session.get("NowPlayingItem").get("Path")): + playing_sessions.append(session) + except Exception as e: logger.error(f"获取Emby播放会话失败:{str(e)}") continue @@ -438,7 +461,8 @@ class SpeedLimiter(_PluginBase): sessions = res.json() for session in sessions: if session.get("NowPlayingItem") and not session.get("PlayState", {}).get("IsPaused"): - playing_sessions.append(session) + if not self.__path_execluded(session.get("NowPlayingItem").get("Path")): + playing_sessions.append(session) except Exception as e: logger.error(f"获取Jellyfin播放会话失败:{str(e)}") continue @@ -495,6 +519,18 @@ class SpeedLimiter(_PluginBase): self.__set_limiter(limit_type="未播放", upload_limit=self._noplay_up_speed, download_limit=self._noplay_down_speed) + def __path_execluded(self, path: str) -> bool: + """ + 判断是否在不限速路径内 + """ + if self._exclude_path: + exclude_paths = self._exclude_path.split("\n") + for exclude_path in exclude_paths: + if exclude_path in path: + logger.info(f"{path} 在不限速路径:{exclude_path} 内,跳过限速") + return True + return False + def __calc_limit(self, total_bit_rate: float) -> float: """ 计算智能上传限速