dom/config.py

51 lines
1.4 KiB
Python

import json
from pathlib import Path
from typing import Dict, Any
from dataclasses import dataclass, asdict
@dataclass
class Config:
"""Configuration management for the notification system."""
ollama_endpoint: str = "http://localhost:11434"
ollama_model: str = "llama2"
# Silent time configuration (12pm to 8am)
silent_start: str = "20:00"
silent_end: str = "12:00"
timezone: str = "UTC"
# Interval configuration (in minutes)
min_interval: int = 3
max_interval: int = 180
# Bark notification service
bark_api_url: str = ""
bark_device_key: str = ""
# Ntfy notification service
ntfy_api_url: str = ""
ntfy_topic: str = ""
ntfy_access_token: str = ""
# Template settings
templates_dir: str = "templates"
# Ollama settings
strip_think_tags: bool = True
def __post_init__(self):
"""Load configuration from file if exists."""
config_file = Path("config/config.json")
if config_file.exists():
with open(config_file, 'r') as f:
data = json.load(f)
for key, value in data.items():
if hasattr(self, key):
setattr(self, key, value)
def save(self):
"""Save current configuration to file."""
config_file = Path("config/config.json")
with open(config_file, 'w') as f:
json.dump(asdict(self), f, indent=2)