refactor(types): govern mtorrent site parser

This commit is contained in:
jxxghp
2026-10-17 01:18:23 +08:00
parent 9844b80884
commit 9d36adce97

View File

@@ -1,14 +1,16 @@
# -*- coding: utf-8 -*-
import json
from typing import Optional, Tuple
from operator import iadd
from typing import Optional
from urllib.parse import urljoin
from app.domain import site as site_rules
from app.modules.indexer.parser import SiteParserBase, SiteSchema
from app.modules.indexer.parser import SitePage, SiteParserBase, SiteSchema
from app.runtime.log import logger
class MTorrentSiteUserInfo(SiteParserBase):
"""解析 MTorrent 站点的用户资料、流量与消息。"""
schema = SiteSchema.MTorrent
request_mode = "apikey"
@@ -34,7 +36,7 @@ class MTorrentSiteUserInfo(SiteParserBase):
"18": "Bet memberStaff",
}
def _parse_site_page(self, html_text: str):
def _parse_site_page(self, html_text: SitePage) -> None:
"""
获取站点页面地址
"""
@@ -63,7 +65,7 @@ class MTorrentSiteUserInfo(SiteParserBase):
"x-api-key": self.apikey,
}
def _parse_logged_in(self, html_text):
def _parse_logged_in(self, html_text: str) -> bool:
"""
判断是否登录成功, 通过判断是否存在用户信息
暂时跳过检测,待后续优化
@@ -72,12 +74,14 @@ class MTorrentSiteUserInfo(SiteParserBase):
"""
return True
def _parse_user_base_info(self, html_text: str):
def _parse_user_base_info(self, html_text: SitePage) -> None:
"""
解析用户基本信息,这里把_parse_user_traffic_info和_parse_user_detail_info合并到这里
"""
if not html_text:
return None
if isinstance(html_text, dict):
raise TypeError("the JSON object must be str, bytes or bytearray, not dict")
detail = json.loads(html_text)
if not detail or detail.get("code") != "0":
return
@@ -99,13 +103,13 @@ class MTorrentSiteUserInfo(SiteParserBase):
"userid": self.userid
}
def _parse_user_traffic_info(self, html_text: str):
def _parse_user_traffic_info(self, html_text: str) -> None:
"""
解析用户流量信息
"""
pass
def _parse_user_detail_info(self, html_text: str):
def _parse_user_detail_info(self, html_text: str) -> None:
"""
解析用户详细信息
"""
@@ -161,10 +165,14 @@ class MTorrentSiteUserInfo(SiteParserBase):
if self.seeding >= seeder_count:
return None
# 还有下一页
self._torrent_seeding_params["pageNumber"] += 1
parameters = self._torrent_seeding_params
if parameters is None:
raise TypeError("'NoneType' object is not subscriptable")
# 保留原有 += 运算及异常,不把动态请求参数强制转换为整数。
parameters["pageNumber"] = iadd(parameters["pageNumber"], 1)
return ""
def _parse_message_unread_links(self, html_text: str, msg_links: list) -> Optional[str]:
def _parse_message_unread_links(self, html_text: str, msg_links: list[str]) -> Optional[str]:
"""
解析未读消息链接,这里直接读出详情
"""
@@ -190,7 +198,7 @@ class MTorrentSiteUserInfo(SiteParserBase):
# 是否存在下页数据
return None
def _parse_message_content(self, html_text) -> Tuple[Optional[str], Optional[str], Optional[str]]:
def _parse_message_content(self, html_text: str) -> None:
"""
解析消息内容
"""