From f85b10cf553e43f94e928d91870973c064229d21 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 23 Mar 2024 19:00:04 +0800 Subject: [PATCH] fix m-team --- package.json | 4 +- plugins/autosignin/__init__.py | 68 +++---------------- plugins/sitestatistic/__init__.py | 6 +- .../sitestatistic/siteuserinfo/__init__.py | 5 +- .../sitestatistic/siteuserinfo/mtorrent.py | 15 ++-- 5 files changed, 29 insertions(+), 69 deletions(-) diff --git a/package.json b/package.json index 53ae594..a7fa034 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "AutoSignIn": { "name": "站点自动签到", "description": "自动模拟登录站点、签到。", - "version": "1.4", + "version": "1.5", "icon": "signin.png", "author": "thsrite", "level": 2 @@ -18,7 +18,7 @@ "SiteStatistic": { "name": "站点数据统计", "description": "自动统计和展示站点数据。", - "version": "2.0", + "version": "2.1", "icon": "statistic.png", "author": "lightolly", "level": 2 diff --git a/plugins/autosignin/__init__.py b/plugins/autosignin/__init__.py index 96e2b07..2331898 100644 --- a/plugins/autosignin/__init__.py +++ b/plugins/autosignin/__init__.py @@ -12,6 +12,7 @@ from apscheduler.triggers.cron import CronTrigger from ruamel.yaml import CommentedMap from app import schemas +from app.chain.site import SiteChain from app.core.config import settings from app.core.event import EventManager, eventmanager, Event from app.db.site_oper import SiteOper @@ -36,7 +37,7 @@ class AutoSignIn(_PluginBase): # 插件图标 plugin_icon = "signin.png" # 插件版本 - plugin_version = "1.4" + plugin_version = "1.5" # 插件作者 plugin_author = "thsrite" # 作者主页 @@ -51,6 +52,7 @@ class AutoSignIn(_PluginBase): # 私有属性 sites: SitesHelper = None siteoper: SiteOper = None + sitechain: SiteChain = None # 事件管理器 event: EventManager = None # 定时器 @@ -76,6 +78,7 @@ class AutoSignIn(_PluginBase): self.sites = SitesHelper() self.siteoper = SiteOper() self.event = EventManager() + self.sitechain = SiteChain() # 停止现有任务 self.stop_service() @@ -955,8 +958,7 @@ class AutoSignIn(_PluginBase): """ return site_info.get("name"), self.__login_base(site_info) - @staticmethod - def __login_base(site_info: CommentedMap) -> str: + def __login_base(self, site_info: CommentedMap) -> str: """ 模拟登陆通用处理 :param site_info: 站点信息 @@ -964,61 +966,11 @@ class AutoSignIn(_PluginBase): """ if not site_info: return "" - site = site_info.get("name") - site_url = site_info.get("url") - site_cookie = site_info.get("cookie") - ua = site_info.get("ua") - render = site_info.get("render") - proxies = settings.PROXY if site_info.get("proxy") else None - proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None - if not site_url or not site_cookie: - logger.warn(f"未配置 {site} 的站点地址或Cookie,无法签到") - return "" - # 模拟登录 - try: - # 访问链接 - site_url = str(site_url).replace("attendance.php", "") - logger.info(f"开始站点模拟登陆:{site},地址:{site_url}...") - if render: - page_source = PlaywrightHelper().get_page_source(url=site_url, - cookies=site_cookie, - ua=ua, - proxies=proxy_server) - if not SiteUtils.is_logged_in(page_source): - if under_challenge(page_source): - return f"无法通过Cloudflare!" - return f"仿真登录失败,Cookie已失效!" - else: - return "模拟登陆成功" - else: - res = RequestUtils(cookies=site_cookie, - ua=ua, - proxies=proxies - ).get_res(url=site_url) - # 判断登录状态 - if res and res.status_code in [200, 500, 403]: - if not SiteUtils.is_logged_in(res.text): - if under_challenge(res.text): - msg = "站点被Cloudflare防护,请打开站点浏览器仿真" - elif res.status_code == 200: - msg = "Cookie已失效" - else: - msg = f"状态码:{res.status_code}" - logger.warn(f"{site} 模拟登陆失败,{msg}") - return f"模拟登陆失败,{msg}!" - else: - logger.info(f"{site} 模拟登陆成功") - return f"模拟登陆成功" - elif res is not None: - logger.warn(f"{site} 模拟登陆失败,状态码:{res.status_code}") - return f"模拟登陆失败,状态码:{res.status_code}!" - else: - logger.warn(f"{site} 模拟登陆失败,无法打开网站") - return f"模拟登陆失败,无法打开网站!" - except Exception as e: - logger.warn("%s 模拟登陆失败:%s" % (site, str(e))) - traceback.print_exc() - return f"模拟登陆失败:{str(e)}!" + state, msg = self.sitechain.test(site_info.get("url")) + if state: + return f"模拟登陆成功" + else: + return f"模拟登陆失败:{msg}" def stop_service(self): """ diff --git a/plugins/sitestatistic/__init__.py b/plugins/sitestatistic/__init__.py index 9367095..fecea76 100644 --- a/plugins/sitestatistic/__init__.py +++ b/plugins/sitestatistic/__init__.py @@ -43,7 +43,7 @@ class SiteStatistic(_PluginBase): # 插件图标 plugin_icon = "statistic.png" # 插件版本 - plugin_version = "2.0" + plugin_version = "2.1" # 插件作者 plugin_author = "lightolly" # 作者主页 @@ -1263,10 +1263,10 @@ class SiteStatistic(_PluginBase): # 按照上传降序排序 sites = self._sites_data.keys() uploads = [self._sites_data[site].get("upload") or 0 if not yesterday_sites_data.get(site) else - (self._sites_data[site].get("upload") or 0) - ( + int(self._sites_data[site].get("upload") or 0) - int( yesterday_sites_data[site].get("upload") or 0) for site in sites] downloads = [self._sites_data[site].get("download") or 0 if not yesterday_sites_data.get(site) else - (self._sites_data[site].get("download") or 0) - ( + int(self._sites_data[site].get("download") or 0) - int( yesterday_sites_data[site].get("download") or 0) for site in sites] data_list = sorted(list(zip(sites, uploads, downloads)), key=lambda x: x[1], diff --git a/plugins/sitestatistic/siteuserinfo/__init__.py b/plugins/sitestatistic/siteuserinfo/__init__.py index 5535a68..a1e5e6b 100644 --- a/plugins/sitestatistic/siteuserinfo/__init__.py +++ b/plugins/sitestatistic/siteuserinfo/__init__.py @@ -278,8 +278,6 @@ class ISiteUserInfo(metaclass=ABCMeta): proxies = settings.PROXY if self._proxy else None if self._ua or headers or self._addition_headers: req_headers = {} - if headers: - req_headers.update(headers) req_headers.update({ "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", @@ -289,6 +287,9 @@ class ISiteUserInfo(metaclass=ABCMeta): if self._addition_headers: req_headers.update(self._addition_headers) + if headers: + req_headers.update(headers) + if params: res = RequestUtils(cookies=self._site_cookie, session=self._session, diff --git a/plugins/sitestatistic/siteuserinfo/mtorrent.py b/plugins/sitestatistic/siteuserinfo/mtorrent.py index be76710..7b73fee 100644 --- a/plugins/sitestatistic/siteuserinfo/mtorrent.py +++ b/plugins/sitestatistic/siteuserinfo/mtorrent.py @@ -61,13 +61,13 @@ class MTorrentSiteUserInfo(ISiteUserInfo): self.upload = int(user_info.get("memberCount", {}).get("uploaded") or '0') self.download = int(user_info.get("memberCount", {}).get("downloaded") or '0') self.ratio = user_info.get("memberCount", {}).get("shareRate") or 0 - self.bonus = float(user_info.get("bonus") or '0') + self.bonus = user_info.get("memberCount", {}).get("bonus") or 0 self.message_unread = 1 self._torrent_seeding_params = { - "pageNumber": "1", - "pageSize": "20000", - "type": "seeding", + "pageNumber": 1, + "pageSize": 20000, + "type": "SEEDING", "userid": self.userid } @@ -123,11 +123,18 @@ class MTorrentSiteUserInfo(ISiteUserInfo): return None messages = messages_info.get("data", {}).get("data", []) for message in messages: + if not message.get("unread"): + continue head = message.get("title") date = message.get("createdDate") content = message.get("context") if head and date and content: self.message_unread_contents.append((head, date, content)) + # 设置已读 + self._get_page_content( + url=urljoin(self.site_url, f"api/msg/markRead"), + params={"msgId": message.get("id")} + ) # 是否存在下页数据 return None