39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
from pydantic import BaseModel
|
||
from typing import List
|
||
import json
|
||
# Модель для источника
|
||
class Source(BaseModel):
|
||
name: str
|
||
url: str
|
||
prompt: str
|
||
|
||
# Модель для настроек (список источников)
|
||
class Settings(BaseModel):
|
||
sources: List[Source]
|
||
|
||
# Путь к файлу с настройками
|
||
SETTINGS_FILE = "config.json"
|
||
|
||
# Чтение настроек из файла
|
||
def read_settings() -> Settings:
|
||
try:
|
||
with open(SETTINGS_FILE, "r", encoding="utf-8") as f:
|
||
data = json.load(f)
|
||
return Settings(**data)
|
||
except (FileNotFoundError, json.JSONDecodeError):
|
||
return Settings(sources=[])
|
||
|
||
# Запись настроек в файл
|
||
def write_settings(settings: Settings):
|
||
with open(SETTINGS_FILE, "w", encoding="utf-8") as f:
|
||
json.dump(settings.dict(), f, ensure_ascii=False, indent=2)
|
||
|
||
# Обновление данных по источнику
|
||
def update_source(new_source: Source) -> dict:
|
||
settings = read_settings()
|
||
for i, source in enumerate(settings.sources):
|
||
if source.name == new_source.name:
|
||
settings.sources[i] = new_source
|
||
write_settings(settings)
|
||
return {"code": 0, "message": f"Источник '{new_source.name}' успешно обновлен."}
|
||
return {"code": 1, "message": f"Источник с именем '{new_source.name}' не найден."} |