From 22ae8b8f8775985627310aecbbd610df26252412 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 15 May 2025 12:00:09 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=9D=9Estr=E7=B1=BB=E5=9E=8B=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/config.py | 26 ++++++++++++++++++-------- app/helper/wallpaper.py | 17 +++++++++++------ 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index e22f421e..b650d7b8 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -1,4 +1,5 @@ import copy +import json import os import re import secrets @@ -361,13 +362,16 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel): if field_name in fields_not_keep_spaces: value = re.sub(r"\s+", "", value) return value, str(value) != str(original_value) - # # 后续考虑支持 list 类型的处理 - # elif expected_type is list: - # if isinstance(value, list): - # return value, False - # if isinstance(value, str): - # items = [item.strip() for item in value.split(",") if item.strip()] - # return items, items != original_value.split(",") + # 支持 list 类型的处理 + elif expected_type is list: + if isinstance(value, list): + return value, str(value) != str(original_value) + if isinstance(value, str): + items = json.loads(value) + if isinstance(original_value, list): + return items, items != original_value + else: + return items, str(items) != str(original_value) # 可根据需要添加更多类型处理 else: return value, str(value) != str(original_value) @@ -408,7 +412,13 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel): logger.warning(message) return False, message else: - set_key(SystemUtils.get_env_path(), field.name, str(converted_value) if converted_value is not None else "") + # 如果是列表、字典或集合类型,将其转换为JSON字符串 + if isinstance(converted_value, (list, dict, set)): + value_to_write = json.dumps(converted_value) + else: + value_to_write = str(converted_value) if converted_value is not None else "" + + set_key(SystemUtils.get_env_path(), field.name, value_to_write) if is_converted: logger.info(f"配置项 '{field.name}' 已自动修正并写入到 'app.env' 文件") return True, message diff --git a/app/helper/wallpaper.py b/app/helper/wallpaper.py index e5162f12..bc30e9b1 100644 --- a/app/helper/wallpaper.py +++ b/app/helper/wallpaper.py @@ -89,12 +89,17 @@ class WallpaperHelper(metaclass=Singleton): wallpaper_list = [] resp = self.req.get_res(settings.CUSTOMIZE_WALLPAPER_API_URL) if resp and resp.status_code == 200: - try: - result = resp.json() - if isinstance(result, list) or isinstance(result, dict) or isinstance(result, str): - wallpaper_list = find_files_with_suffixes(result, settings.SECURITY_IMAGE_SUFFIXES) - except Exception as err: - print(str(err)) + # 如果返回的是图片格式 + content_type = resp.headers.get('Content-Type') + if content_type and content_type.lower() == 'image/jpeg': + wallpaper_list.append(resp.url) + else: + try: + result = resp.json() + if isinstance(result, list) or isinstance(result, dict) or isinstance(result, str): + wallpaper_list = find_files_with_suffixes(result, settings.SECURITY_IMAGE_SUFFIXES) + except Exception as err: + print(str(err)) return wallpaper_list else: return []