diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index 08d780b4..8de1174c 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -42,7 +42,10 @@ def read_subscribes( subscribes = Subscribe.list(db) for subscribe in subscribes: if subscribe.sites: - subscribe.sites = json.loads(str(subscribe.sites)) + try: + subscribe.sites = json.loads(str(subscribe.sites)) + except json.JSONDecodeError: + subscribe.sites = [] else: subscribe.sites = [] return subscribes @@ -168,7 +171,10 @@ def subscribe_mediaid( meta.begin_season = season result = Subscribe.get_by_title(db, title=meta.name, season=meta.begin_season) if result and result.sites: - result.sites = json.loads(result.sites) + try: + result.sites = json.loads(result.sites) + except json.JSONDecodeError: + result.sites = [] return result if result else Subscribe() @@ -322,7 +328,10 @@ def read_subscribe( historys = SubscribeHistory.list_by_type(db, mtype=mtype, page=page, count=count) for history in historys: if history and history.sites: - history.sites = json.loads(history.sites) + try: + history.sites = json.loads(history.sites) + except json.JSONDecodeError: + history.sites = [] return historys @@ -396,7 +405,10 @@ def read_subscribe( return Subscribe() subscribe = Subscribe.get(db, subscribe_id) if subscribe and subscribe.sites: - subscribe.sites = json.loads(subscribe.sites) + try: + subscribe.sites = json.loads(subscribe.sites) + except json.JSONDecodeError: + subscribe.sites = [] return subscribe diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index ea5490a4..9b919369 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -2,6 +2,7 @@ import json import random import time from datetime import datetime +from json import JSONDecodeError from typing import Dict, List, Optional, Union, Tuple from app.chain import ChainBase @@ -459,7 +460,10 @@ class SubscribeChain(ChainBase): 获取订阅中涉及的站点清单 """ if subscribe.sites: - return json.loads(subscribe.sites) + try: + return json.loads(subscribe.sites) + except JSONDecodeError: + return [] # 默认站点 return self.systemconfig.get(SystemConfigKey.RssSites) or [] @@ -780,7 +784,10 @@ class SubscribeChain(ChainBase): return note = [] if subscribe.note: - note = json.loads(subscribe.note) + try: + note = json.loads(subscribe.note) + except JSONDecodeError: + note = [] for context in downloads: meta = context.meta_info mediainfo = context.media_info @@ -811,7 +818,10 @@ class SubscribeChain(ChainBase): return False if not episodes: return False - note = json.loads(subscribe.note) + try: + note = json.loads(subscribe.note) + except JSONDecodeError: + return False if set(episodes).issubset(set(note)): return True return False @@ -1023,7 +1033,10 @@ class SubscribeChain(ChainBase): for subscribe in self.subscribeoper.list(): if not subscribe.sites: continue - sites = json.loads(subscribe.sites) or [] + try: + sites = json.loads(subscribe.sites) + except JSONDecodeError: + sites = [] if site_id not in sites: continue sites.remove(site_id)