From 19d879d3f6cd6688796ece8f8cc813a8257cff00 Mon Sep 17 00:00:00 2001 From: YuF-9468 Date: Thu, 5 Mar 2026 09:21:16 +0800 Subject: [PATCH 1/2] fix(parser): guard invalid tnode seeding json response --- app/modules/indexer/parser/tnode.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/modules/indexer/parser/tnode.py b/app/modules/indexer/parser/tnode.py index fc07ab08..5035d2ee 100644 --- a/app/modules/indexer/parser/tnode.py +++ b/app/modules/indexer/parser/tnode.py @@ -63,7 +63,14 @@ class TNodeSiteUserInfo(SiteParserBase): """ 解析用户做种信息 """ - seeding_info = json.loads(html_text) + try: + seeding_info = json.loads(html_text) + except json.JSONDecodeError: + return None + + if not isinstance(seeding_info, dict): + return None + if seeding_info.get("status") != 200: return None From 31938812d09a7a29e839656e606f3fc92693e66c Mon Sep 17 00:00:00 2001 From: YuF-9468 Date: Thu, 5 Mar 2026 09:35:25 +0800 Subject: [PATCH 2/2] chore: add warning logs for invalid tnode seeding payload --- app/modules/indexer/parser/tnode.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/modules/indexer/parser/tnode.py b/app/modules/indexer/parser/tnode.py index 5035d2ee..a5038c9c 100644 --- a/app/modules/indexer/parser/tnode.py +++ b/app/modules/indexer/parser/tnode.py @@ -3,6 +3,7 @@ import json import re from typing import Optional +from app.log import logger from app.modules.indexer.parser import SiteParserBase, SiteSchema from app.utils.string import StringUtils @@ -65,10 +66,12 @@ class TNodeSiteUserInfo(SiteParserBase): """ try: seeding_info = json.loads(html_text) - except json.JSONDecodeError: + except json.JSONDecodeError as e: + logger.warning(f"{self._site_name}: Failed to decode seeding info JSON: {e}") return None if not isinstance(seeding_info, dict): + logger.warning(f"{self._site_name}: Seeding info payload is not a dictionary") return None if seeding_info.get("status") != 200: