fix m-team

This commit is contained in:
jxxghp
2024-03-23 19:00:04 +08:00
parent 8d64728543
commit f85b10cf55
5 changed files with 29 additions and 69 deletions

View File

@@ -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

View File

@@ -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):
"""

View File

@@ -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],

View File

@@ -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,

View File

@@ -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