mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-29 03:56:43 +08:00
fix(indexer): close quality ratchet regression
This commit is contained in:
@@ -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:
|
||||
"""
|
||||
|
||||
@@ -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位)
|
||||
|
||||
Reference in New Issue
Block a user