Files
2026-01-17 18:47:07 +08:00

75 lines
1.6 KiB
Python

"""
预设管理模块
处理 Meta 预设的加载和保存
"""
import logging
import os
from typing import Any, Dict, List
from . import config
from .utils import load_json, save_json
logger = logging.getLogger("SimplePrompt")
def get_presets() -> Dict[str, List[Dict[str, Any]]]:
"""
获取预设列表(默认 + 自定义)
Returns:
包含 defaults 和 customs 的字典
"""
defaults = load_json(config.DEFAULT_PRESETS_PATH, [])
customs = load_json(config.CUSTOM_PRESETS_PATH, [])
# Ensure default file exists
if not os.path.exists(config.DEFAULT_PRESETS_PATH):
defaults = []
try:
save_json(config.DEFAULT_PRESETS_PATH, defaults)
except Exception:
pass
return {"defaults": defaults, "customs": customs}
def save_custom_presets(presets: List[Dict[str, Any]]) -> None:
"""
保存自定义预设
Args:
presets: 预设列表
Raises:
Exception: 保存失败时抛出异常
"""
save_json(config.CUSTOM_PRESETS_PATH, presets)
def get_all_presets() -> List[Dict[str, Any]]:
"""
获取所有预设(合并默认和自定义)
Returns:
预设列表
"""
data = get_presets()
return data["defaults"] + data["customs"]
def get_preset_by_id(preset_id: str) -> Dict[str, Any] | None:
"""
根据 ID 获取预设
Args:
preset_id: 预设 ID
Returns:
预设信息,如果不存在则返回 None
"""
for preset in get_all_presets():
if preset.get("id") == preset_id:
return preset
return None