From 106789319b1de06e9e8206c3a8d1dedab84496a1 Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 23 Mar 2026 17:43:09 +0100 Subject: unify settings api into one file --- cogs/utils/settings.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 cogs/utils/settings.py (limited to 'cogs/utils') diff --git a/cogs/utils/settings.py b/cogs/utils/settings.py new file mode 100644 index 0000000..0a1716f --- /dev/null +++ b/cogs/utils/settings.py @@ -0,0 +1,62 @@ +# This file is part of Senator Sperma +# Licensed under the GPL-3.0 License +# Copyright (C) 2026 Salmonik @ salmonik@tuta.io +# https://codeberg.org/salmonik/senator-sperma + +import json +import logging +import aiofiles +import os + +logger = logging.getLogger(__name__) + +_settings = None +settings_file = "data/settings.json" + +async def load_settings(): + global _settings + global settings_file + + default_settings = { + 'volume': 1.0, + 'baseurl': 'http://localhost:8080' + } + + try: + if os.path.exists(settings_file): + async with aiofiles.open(settings_file, 'r') as f: + content = await f.read() + if content.strip(): + _settings = json.loads(content) + logger.info("Settings loaded into memory") + else: + _settings = default_settings + await save_settings() + logger.warning("Empty settings.json, reset to defaults") + else: + _settings = default_settings + await save_settings() + logger.info("Created default settings.json") + except (json.JSONDecodeError, Exception) as e: + logger.error(f"Error loading settings: {e}") + _settings = default_settings + + return _settings + + +async def save_settings(): + if _settings: + async with aiofiles.open(settings_file, 'w') as f: + await f.write(json.dumps(_settings, indent=2)) + + +def get_settings(): + return _settings + + +def get_volume(): + return _settings.get('volume', 1.0) if _settings else 1.0 + + +def get_baseurl(): + return _settings.get('baseurl', 'http://localhost:8080').rstrip('/') if _settings else 'http://localhost:8080' \ No newline at end of file -- cgit v1.2.3