Добавлено описание и документация для HVideoTool, включая функционал, требования, установку и запуск приложения для обнаружения цензуры на изображениях.
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
"""Persist a handful of user choices to ~/HVideoTool/settings.json.
|
||||
|
||||
Slimmed down for the image-inspector tool: it remembers the detector, the model
|
||||
path, the overlay threshold, and the last opened folder.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from .config import AppConfig
|
||||
|
||||
_PATH = Path.home() / "HVideoTool" / "settings.json"
|
||||
|
||||
|
||||
def _read() -> dict:
|
||||
try:
|
||||
return json.loads(_PATH.read_text(encoding="utf-8"))
|
||||
except (OSError, ValueError):
|
||||
return {}
|
||||
|
||||
|
||||
def _write(data: dict) -> None:
|
||||
_PATH.parent.mkdir(parents=True, exist_ok=True)
|
||||
_PATH.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
|
||||
|
||||
def apply(config: AppConfig) -> None:
|
||||
"""Overlay persisted settings onto ``config`` (mutates it in place)."""
|
||||
data = _read()
|
||||
if data.get("detector"):
|
||||
config.detector = data["detector"]
|
||||
if "model_path" in data:
|
||||
config.model_path = data["model_path"]
|
||||
if "threshold" in data:
|
||||
config.default_threshold = float(data["threshold"])
|
||||
|
||||
|
||||
def save(config: AppConfig) -> None:
|
||||
"""Persist the configurable settings, preserving other keys (e.g. last_dir)."""
|
||||
data = _read()
|
||||
data.update(
|
||||
detector=config.detector,
|
||||
model_path=config.model_path,
|
||||
threshold=config.default_threshold,
|
||||
)
|
||||
_write(data)
|
||||
|
||||
|
||||
def last_dir() -> str | None:
|
||||
return _read().get("last_dir")
|
||||
|
||||
|
||||
def set_last_dir(path: str) -> None:
|
||||
data = _read()
|
||||
data["last_dir"] = path
|
||||
_write(data)
|
||||
Reference in New Issue
Block a user