mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
修复知行 极速之星 框架解析 做种信息
This commit is contained in:
@@ -23,8 +23,8 @@ class BitptSiteUserInfo(SiteParserBase):
|
|||||||
self._sys_mail_unread_page = None
|
self._sys_mail_unread_page = None
|
||||||
self._user_mail_unread_page = None
|
self._user_mail_unread_page = None
|
||||||
self._mail_unread_params = {}
|
self._mail_unread_params = {}
|
||||||
self._torrent_seeding_page = "browse.php?t=myseed"
|
self._torrent_seeding_base = "browse.php"
|
||||||
self._torrent_seeding_params = {"st": "2", "d": "desc"}
|
self._torrent_seeding_params = {"t": "myseed", "st": "2", "d": "desc"}
|
||||||
self._torrent_seeding_headers = {}
|
self._torrent_seeding_headers = {}
|
||||||
self._addition_headers = {}
|
self._addition_headers = {}
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ class BitptSiteUserInfo(SiteParserBase):
|
|||||||
self.bonus = float(re.search(r'累计([\d\.]+)', bonus_str).group(1)) if re.search(r'累计([\d\.]+)', bonus_str) else 0
|
self.bonus = float(re.search(r'累计([\d\.]+)', bonus_str).group(1)) if re.search(r'累计([\d\.]+)', bonus_str) else 0
|
||||||
self.message_unread = 0
|
self.message_unread = 0
|
||||||
|
|
||||||
if self._torrent_seeding_page:
|
if hasattr(self, '_torrent_seeding_base') and self._torrent_seeding_base:
|
||||||
self.seeding = 0
|
self.seeding = 0
|
||||||
self.seeding_size = 0
|
self.seeding_size = 0
|
||||||
else:
|
else:
|
||||||
@@ -86,15 +86,23 @@ class BitptSiteUserInfo(SiteParserBase):
|
|||||||
if not html_text:
|
if not html_text:
|
||||||
return 0, 0
|
return 0, 0
|
||||||
soup = BeautifulSoup(html_text, 'html.parser')
|
soup = BeautifulSoup(html_text, 'html.parser')
|
||||||
torrents = soup.find_all('tr', id=re.compile(r'^t\d+'))
|
torrent_table = soup.find('table', class_='torrenttable')
|
||||||
|
if not torrent_table:
|
||||||
|
return 0, 0
|
||||||
|
rows = torrent_table.find_all('tr')
|
||||||
|
if len(rows) <= 1:
|
||||||
|
return 0, 0
|
||||||
|
torrents = [row for row in rows[1:] if 'btr' in row.get('class', [])]
|
||||||
page_seeding = 0
|
page_seeding = 0
|
||||||
page_seeding_size = 0
|
page_seeding_size = 0
|
||||||
for torrent in torrents:
|
for torrent in torrents:
|
||||||
size_td = torrent.find('td', class_='r')
|
size_td = torrent.find('td', class_='r')
|
||||||
if size_td:
|
if size_td:
|
||||||
size_text = size_td.find('a').text if size_td.find('a') else size_td.text.strip()
|
size_a = size_td.find('a')
|
||||||
page_seeding += 1
|
size_text = size_a.text.strip() if size_a else size_td.text.strip()
|
||||||
page_seeding_size += StringUtils.num_filesize(size_text)
|
if size_text:
|
||||||
|
page_seeding += 1
|
||||||
|
page_seeding_size += StringUtils.num_filesize(size_text)
|
||||||
return page_seeding, page_seeding_size
|
return page_seeding, page_seeding_size
|
||||||
|
|
||||||
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) -> Optional[str]:
|
||||||
@@ -121,9 +129,8 @@ class BitptSiteUserInfo(SiteParserBase):
|
|||||||
basic_html = self._get_page_content(url=urljoin(self._base_url, basic_url))
|
basic_html = self._get_page_content(url=urljoin(self._base_url, basic_url))
|
||||||
self._parse_user_base_info(basic_html)
|
self._parse_user_base_info(basic_html)
|
||||||
|
|
||||||
if self._torrent_seeding_page:
|
if hasattr(self, '_torrent_seeding_base') and self._torrent_seeding_base:
|
||||||
seeding_base = self._torrent_seeding_page
|
seeding_base_url = urljoin(self._base_url, self._torrent_seeding_base)
|
||||||
seeding_base_url = urljoin(self._base_url, seeding_base)
|
|
||||||
params = self._torrent_seeding_params.copy()
|
params = self._torrent_seeding_params.copy()
|
||||||
page_num = 1
|
page_num = 1
|
||||||
while True:
|
while True:
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class ZhixingSiteUserInfo(SiteParserBase):
|
|||||||
self._sys_mail_unread_page = None
|
self._sys_mail_unread_page = None
|
||||||
self._user_mail_unread_page = None
|
self._user_mail_unread_page = None
|
||||||
self._mail_unread_params = {}
|
self._mail_unread_params = {}
|
||||||
self._torrent_seeding_base = "user/{uid}/seeding/"
|
self._torrent_seeding_base = "user/{uid}/seeding"
|
||||||
self._torrent_seeding_params = {}
|
self._torrent_seeding_params = {}
|
||||||
self._torrent_seeding_headers = {}
|
self._torrent_seeding_headers = {}
|
||||||
self._addition_headers = {}
|
self._addition_headers = {}
|
||||||
@@ -63,6 +63,8 @@ class ZhixingSiteUserInfo(SiteParserBase):
|
|||||||
value = re.split(r'\s*\(', value_text)[0].strip().split('查看')[0].strip()
|
value = re.split(r'\s*\(', value_text)[0].strip().split('查看')[0].strip()
|
||||||
info_dict[key] = value
|
info_dict[key] = value
|
||||||
|
|
||||||
|
self._basic_info = info_dict # Save for fallback
|
||||||
|
|
||||||
self.userid = info_dict.get('UID')
|
self.userid = info_dict.get('UID')
|
||||||
self.username = info_dict.get('用户名')
|
self.username = info_dict.get('用户名')
|
||||||
self.user_level = info_dict.get('用户组')
|
self.user_level = info_dict.get('用户组')
|
||||||
@@ -81,12 +83,9 @@ class ZhixingSiteUserInfo(SiteParserBase):
|
|||||||
self.bonus = float(info_dict.get('保种积分')) if '保种积分' in info_dict else 0.0
|
self.bonus = float(info_dict.get('保种积分')) if '保种积分' in info_dict else 0.0
|
||||||
self.message_unread = 0 # 暂无消息解析
|
self.message_unread = 0 # 暂无消息解析
|
||||||
|
|
||||||
if hasattr(self, '_torrent_seeding_base') and self._torrent_seeding_base:
|
# Temporarily set seeding from basic, will override or fallback later
|
||||||
self.seeding = 0
|
self.seeding = int(info_dict.get('当前保种数量')) if '当前保种数量' in info_dict else 0
|
||||||
self.seeding_size = 0
|
self.seeding_size = num_filesize_safe(info_dict.get('当前保种容量')) if '当前保种容量' in info_dict else 0
|
||||||
else:
|
|
||||||
self.seeding = int(info_dict.get('当前保种数量')) if '当前保种数量' in info_dict else 0
|
|
||||||
self.seeding_size = num_filesize_safe(info_dict.get('当前保种容量')) if '当前保种容量' in info_dict else 0
|
|
||||||
|
|
||||||
def _parse_user_traffic_info(self, html_text: str):
|
def _parse_user_traffic_info(self, html_text: str):
|
||||||
pass
|
pass
|
||||||
@@ -144,6 +143,8 @@ class ZhixingSiteUserInfo(SiteParserBase):
|
|||||||
basic_html = self._get_page_content(url=urljoin(self._base_url, basic_url))
|
basic_html = self._get_page_content(url=urljoin(self._base_url, basic_url))
|
||||||
self._parse_user_base_info(basic_html)
|
self._parse_user_base_info(basic_html)
|
||||||
if hasattr(self, '_torrent_seeding_base') and self._torrent_seeding_base:
|
if hasattr(self, '_torrent_seeding_base') and self._torrent_seeding_base:
|
||||||
|
self.seeding = 0 # Reset to sum from pages
|
||||||
|
self.seeding_size = 0
|
||||||
seeding_base = self._torrent_seeding_base.format(uid=self.userid)
|
seeding_base = self._torrent_seeding_base.format(uid=self.userid)
|
||||||
seeding_base_url = urljoin(self._base_url, seeding_base)
|
seeding_base_url = urljoin(self._base_url, seeding_base)
|
||||||
page_num = 1
|
page_num = 1
|
||||||
@@ -156,6 +157,16 @@ class ZhixingSiteUserInfo(SiteParserBase):
|
|||||||
if page_seeding == 0:
|
if page_seeding == 0:
|
||||||
break
|
break
|
||||||
page_num += 1
|
page_num += 1
|
||||||
|
# Fallback to basic if no seeding found from pages
|
||||||
|
if self.seeding == 0 and hasattr(self, '_basic_info'):
|
||||||
|
def num_filesize_safe(s: str):
|
||||||
|
if s:
|
||||||
|
s = s.strip()
|
||||||
|
if re.match(r'^\d+(\.\d+)?$', s):
|
||||||
|
s += ' B'
|
||||||
|
return StringUtils.num_filesize(s) if s else 0
|
||||||
|
self.seeding = int(self._basic_info.get('当前保种数量', 0))
|
||||||
|
self.seeding_size = num_filesize_safe(self._basic_info.get('当前保种容量', ''))
|
||||||
|
|
||||||
# 🔑 最终对外统一转字符串,避免 join 报错
|
# 🔑 最终对外统一转字符串,避免 join 报错
|
||||||
self.userid = str(self.userid or "")
|
self.userid = str(self.userid or "")
|
||||||
@@ -170,4 +181,4 @@ class ZhixingSiteUserInfo(SiteParserBase):
|
|||||||
self.message_unread = str(self.message_unread or 0)
|
self.message_unread = str(self.message_unread or 0)
|
||||||
|
|
||||||
self.seeding = str(self.seeding or 0)
|
self.seeding = str(self.seeding or 0)
|
||||||
self.seeding_size = str(self.seeding_size or 0)
|
self.seeding_size = str(self.seeding_size or 0)
|
||||||
Reference in New Issue
Block a user