mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-10-31 04:14:38 +08:00
fix(indexer): normalize Audiences user levels (#7027)
This commit is contained in:
@@ -383,8 +383,11 @@ class NexusAudiencesSiteUserInfo(NexusPhpSiteUserInfo):
|
||||
self.username = username.strip()
|
||||
|
||||
user_level = user_node.get("data-uploader-badge")
|
||||
if user_level and user_level.strip():
|
||||
self.user_level = user_level.strip()
|
||||
if user_level:
|
||||
# 站点组名仅用于展示,保留通用等级以与其他 NexusPHP 站点一致。
|
||||
user_level = re.sub(r"^\([^)]*\)\s*", "", user_level.strip()).strip()
|
||||
if user_level:
|
||||
self.user_level = user_level # type: ignore[assignment]
|
||||
|
||||
def __parse_uploader_stats(self, stats_text: str):
|
||||
"""
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import pytest
|
||||
|
||||
from app.foundation.size import parse_size
|
||||
from app.modules.indexer.parser.nexus_audiences import NexusAudiencesSiteUserInfo
|
||||
|
||||
@@ -37,7 +39,7 @@ def test_audiences_userbar_metrics_override_generic_nexus_regex():
|
||||
|
||||
assert parser.userid == "18978"
|
||||
assert parser.username == "jxxghp"
|
||||
assert parser.user_level == "(江湖儿女)Elite User"
|
||||
assert parser.user_level == "Elite User"
|
||||
assert parser.upload == parse_size("10.150 TB")
|
||||
assert parser.download == parse_size("3.624 TB")
|
||||
assert parser.ratio == 2.801
|
||||
@@ -46,6 +48,37 @@ def test_audiences_userbar_metrics_override_generic_nexus_regex():
|
||||
assert parser.leeching == 7
|
||||
|
||||
|
||||
@pytest.mark.parametrize("parse_method", ["_parse_user_traffic_info", "_parse_user_detail_info"])
|
||||
@pytest.mark.parametrize("badge, expected", [
|
||||
("(小鬼当家)User", "User"),
|
||||
("(江湖儿女)Elite User", "Elite User"),
|
||||
(" (江湖儿女) Elite User ", "Elite User"),
|
||||
("Elite User", "Elite User"),
|
||||
(" User ", "User"),
|
||||
("(小鬼当家)", "Power User"),
|
||||
(" ", "Power User"),
|
||||
])
|
||||
def test_audiences_user_level_omits_site_group(parse_method, badge, expected):
|
||||
parser = NexusAudiencesSiteUserInfo(
|
||||
site_name="Audiences",
|
||||
url="https://audiences.me/",
|
||||
site_cookie="",
|
||||
apikey=None,
|
||||
token=None,
|
||||
)
|
||||
parser.user_level = "Power User"
|
||||
html_text = f"""
|
||||
<html><body>
|
||||
<a data-uploader-label="testuser" data-uploader-url="userdetails.php?id=123"
|
||||
data-uploader-badge="{badge}">testuser</a>
|
||||
</body></html>
|
||||
"""
|
||||
|
||||
getattr(parser, parse_method)(html_text)
|
||||
|
||||
assert parser.user_level == expected
|
||||
|
||||
|
||||
def test_audiences_inbox_total_unread_badge_uses_unread_part():
|
||||
parser = NexusAudiencesSiteUserInfo(
|
||||
site_name="Audiences",
|
||||
|
||||
Reference in New Issue
Block a user