44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
|
|
from app.app_config import PATH_STORE_FILE, SFM_DEFAULT_INPUT_DIR
|
|
|
|
|
|
def get_user_path(user_id: str) -> str:
|
|
payload = _load_data()
|
|
value = payload.get(user_id)
|
|
if isinstance(value, str) and value.strip():
|
|
return value
|
|
return SFM_DEFAULT_INPUT_DIR
|
|
|
|
|
|
def set_user_path(user_id: str, input_dir: str) -> None:
|
|
payload = _load_data()
|
|
payload[user_id] = input_dir
|
|
_save_data(payload)
|
|
|
|
|
|
def _load_data() -> dict[str, str]:
|
|
if not PATH_STORE_FILE.exists():
|
|
return {}
|
|
try:
|
|
raw = json.loads(PATH_STORE_FILE.read_text(encoding="utf-8"))
|
|
except json.JSONDecodeError:
|
|
return {}
|
|
if not isinstance(raw, dict):
|
|
return {}
|
|
normalized: dict[str, str] = {}
|
|
for key, value in raw.items():
|
|
if isinstance(key, str) and isinstance(value, str):
|
|
normalized[key] = value
|
|
return normalized
|
|
|
|
|
|
def _save_data(payload: dict[str, str]) -> None:
|
|
PATH_STORE_FILE.parent.mkdir(parents=True, exist_ok=True)
|
|
PATH_STORE_FILE.write_text(
|
|
json.dumps(payload, ensure_ascii=False, indent=2, sort_keys=True),
|
|
encoding="utf-8",
|
|
)
|