mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-30 04:27:40 +08:00
58 lines
2.6 KiB
Python
58 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
||
import re
|
||
|
||
from lxml import etree
|
||
|
||
from app.modules.indexer.parser import SiteSchema
|
||
from app.modules.indexer.parser.nexus_php import NexusPhpSiteUserInfo
|
||
|
||
|
||
class NexusProjectSiteUserInfo(NexusPhpSiteUserInfo):
|
||
schema = SiteSchema.NexusProject
|
||
|
||
def _parse_site_page(self, html_text: str):
|
||
html_text = self._prepare_html_text(html_text)
|
||
|
||
user_detail = re.search(r"userdetails\.php\?id=(\d+)", html_text)
|
||
if user_detail and user_detail.group().strip():
|
||
self._user_detail_page = user_detail.group().strip().lstrip('/')
|
||
self.userid = user_detail.group(1)
|
||
else:
|
||
# 兼容部分 NexusProject 变种站点(如 star-space.net)的
|
||
# p_user/user_detail.php?uid= 用户定位格式
|
||
user_detail = re.search(r"user_detail\.php\?uid=(\d+)", html_text)
|
||
if user_detail and user_detail.group().strip():
|
||
self._user_detail_page = user_detail.group().strip().lstrip('/')
|
||
self.userid = user_detail.group(1)
|
||
uname = re.search(
|
||
r"user_detail\.php\?uid=\d+[^>]*?>\s*<[^>]*>([^<]+)<", html_text)
|
||
if uname:
|
||
self.username = uname.group(1).strip()
|
||
|
||
self._torrent_seeding_page = f"viewusertorrents.php?id={self.userid}&show=seeding"
|
||
|
||
def _parse_user_traffic_info(self, html_text):
|
||
# 兼容部分 NexusProject 变种站点(如 star-space.net)以
|
||
# span#user_info / span#user_info_no_hover 文本展示流量:
|
||
# "上传:445.11 G" / "下载:29.61 G"(单位无 B 后缀)
|
||
try:
|
||
html = etree.HTML(html_text)
|
||
if html is not None:
|
||
body_text = " ".join(html.xpath(
|
||
'//span[@id="user_info"]//text() | //span[@id="user_info_no_hover"]//text()'))
|
||
size_match = re.search(r"上传[::]\s*([\d.,]+)\s*([GMKT]?i?B?)", body_text, re.I)
|
||
if size_match:
|
||
self.upload = self.num_filesize(
|
||
f"{size_match.group(1).replace(',', '')} {size_match.group(2).upper()}B")
|
||
size_match = re.search(r"下载[::]\s*([\d.,]+)\s*([GMKT]?i?B?)", body_text, re.I)
|
||
if size_match:
|
||
self.download = self.num_filesize(
|
||
f"{size_match.group(1).replace(',', '')} {size_match.group(2).upper()}B")
|
||
if self.upload and self.download:
|
||
self.ratio = round(self.upload / self.download, 3)
|
||
if self.upload or self.download:
|
||
return
|
||
except Exception:
|
||
pass
|
||
super()._parse_user_traffic_info(html_text)
|