diff --git a/app/modules/indexer/parser/nexus_audiences.py b/app/modules/indexer/parser/nexus_audiences.py index 45db0201c..1c2ee2209 100644 --- a/app/modules/indexer/parser/nexus_audiences.py +++ b/app/modules/indexer/parser/nexus_audiences.py @@ -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): """ diff --git a/tests/test_nexus_audiences_parser.py b/tests/test_nexus_audiences_parser.py index de7673c2a..1c26b6cab 100644 --- a/tests/test_nexus_audiences_parser.py +++ b/tests/test_nexus_audiences_parser.py @@ -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""" + + testuser + + """ + + 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",