fix(indexer): close quality ratchet regression

This commit is contained in:
jxxghp
2026-08-26 22:53:36 +08:00
parent ee53d6df01
commit 9e81421eba
6 changed files with 104 additions and 27 deletions
+3 -4
View File
@@ -8,13 +8,12 @@ from urllib.parse import urljoin, urlsplit
from requests import Session
from app.runtime.settings import get_runtime_setting
from app.adapters.network.cloudflare import under_challenge
from app.runtime.log import logger
from app.adapters.network.http import RequestUtils
from app.domain.site import SiteUtils
from app.foundation import size as size_tools
from app.runtime.log import logger
from app.runtime.settings import get_runtime_setting
# 站点框架
@@ -170,7 +169,7 @@ class SiteParserBase(metaclass=ABCMeta):
self._torrent_seeding_headers = None
# 错误信息
self.err_msg = None
self.err_msg: Optional[str] = None
def site_schema(self) -> SiteSchema:
"""
+10 -11
View File
@@ -1,15 +1,14 @@
# -*- coding: utf-8 -*-
import json
from urllib.parse import urljoin
from typing import Optional, Tuple
from app.runtime.log import logger
from app.runtime.settings import get_runtime_setting
from urllib.parse import urljoin
from app.adapters.network.http import RequestUtils
from app.domain import site as site_rules
from app.foundation import temporal as time_tools
from app.modules.indexer.parser import SiteParserBase, SiteSchema
from app.runtime.log import logger
from app.runtime.settings import get_runtime_setting
class RousiSiteUserInfo(SiteParserBase):
@@ -86,15 +85,12 @@ class RousiSiteUserInfo(SiteParserBase):
return
if not isinstance(data, dict):
# 基类把 err_msg 推断为 None,运行时契约允许解析器写入错误文本。
self.err_msg = "用户数据响应结构无效" # type: ignore[assignment]
self.err_msg = "用户数据响应结构无效"
logger.warning(f"{self._site_name} API 响应结构无效")
return
if data.get("code") != 0:
self.err_msg = str( # type: ignore[assignment]
data.get("message") or "未知错误"
)
self.err_msg = str(data.get("message") or "未知错误")
logger.warning(f"{self._site_name} API 错误: {self.err_msg}")
return
@@ -108,8 +104,11 @@ class RousiSiteUserInfo(SiteParserBase):
self.user_level = user_info.get("level_text") or user_info.get("role_text")
# 注册时间:统一格式为 YYYY-MM-DD HH:MM:SS
join_at = time_tools.normalize_datetime(
str(user_info.get("registered_at") or "")
registered_at = user_info.get("registered_at")
join_at = (
time_tools.normalize_datetime(registered_at)
if isinstance(registered_at, str)
else None
)
if join_at:
# 确保格式为 YYYY-MM-DD HH:MM:SS (19位)