|
@@ -1,57 +1,51 @@
|
|
|
-import os
|
|
|
|
|
import configparser
|
|
import configparser
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-CONFIG = configparser.ConfigParser()
|
|
|
|
|
-if os.path.isfile('settings.ini'):
|
|
|
|
|
- CONFIG.read('settings.ini')
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-class SettingEntry:
|
|
|
|
|
- def __init__(self, name, env_name=None, default=None, namespace='DEFAULT', type=str):
|
|
|
|
|
- self.name = name
|
|
|
|
|
- self.environment = env_name
|
|
|
|
|
- self.default = default
|
|
|
|
|
- self.value = default
|
|
|
|
|
- self.namespace = namespace
|
|
|
|
|
- self.read_from_env = False
|
|
|
|
|
- self.type = type
|
|
|
|
|
-
|
|
|
|
|
- self.read_config()
|
|
|
|
|
-
|
|
|
|
|
- if os.getenv(self.environment) is not None:
|
|
|
|
|
- self.read_from_env = True
|
|
|
|
|
- self.set(os.getenv(self.environment))
|
|
|
|
|
-
|
|
|
|
|
- def __str__(self):
|
|
|
|
|
- return '{} => {}'.format(self.name, self.value)
|
|
|
|
|
-
|
|
|
|
|
- def __eq__(self, other):
|
|
|
|
|
- return self.name == other
|
|
|
|
|
-
|
|
|
|
|
- def read_config(self):
|
|
|
|
|
- if self.namespace in CONFIG and self.name in CONFIG[self.namespace] and not self.read_from_env:
|
|
|
|
|
- self.set(CONFIG[self.namespace][self.name])
|
|
|
|
|
-
|
|
|
|
|
- def set(self, value):
|
|
|
|
|
- self.value = self.type(value)
|
|
|
|
|
-
|
|
|
|
|
- def get(self):
|
|
|
|
|
- return self.type(self.value)
|
|
|
|
|
|
|
+import os
|
|
|
|
|
+from pathlib import Path
|
|
|
|
|
+from helper import console
|
|
|
|
|
|
|
|
|
|
|
|
|
class Settings:
|
|
class Settings:
|
|
|
- # Directory to permanently save the file (ENV: MD_SAVEDIR)
|
|
|
|
|
- SaveDir = SettingEntry('saveDir', 'MD_SAVEDIR', '~/Downloads', 'music-downloader', os.path.expanduser)
|
|
|
|
|
-
|
|
|
|
|
- # Directory to temporary download the file (ENV: MD_TMP)
|
|
|
|
|
- tmpDir = SettingEntry('tmpDir', 'MD_TMP', '~/tmp', 'music-downloader', os.path.expanduser)
|
|
|
|
|
-
|
|
|
|
|
- # Minimal debug level (ENV: MD_LOGGING)
|
|
|
|
|
- Debuglvl = SettingEntry('debuglvl', 'MD_LOGGING', 0, 'music-downloader', int)
|
|
|
|
|
-
|
|
|
|
|
- # Minimal bitrate to auto download the file (ENV: MD_QUALITY)
|
|
|
|
|
- MinQuality = SettingEntry('minQuality', 'MD_QUALITY', 300, 'music-downloader', int)
|
|
|
|
|
-
|
|
|
|
|
- #Format for downloaded file ID3 comment
|
|
|
|
|
- CommentFormat = SettingEntry('commentFormat', 'MD_COMMENT', '', 'music-downloader')
|
|
|
|
|
|
|
+ # Collect all the setting instances
|
|
|
|
|
+ __list__ = []
|
|
|
|
|
+
|
|
|
|
|
+ __config__ = None
|
|
|
|
|
+
|
|
|
|
|
+ __file__ = Path('settings.ini')
|
|
|
|
|
+
|
|
|
|
|
+ def initialize():
|
|
|
|
|
+ from .settingsentry import SettingEntry
|
|
|
|
|
+ # Directory to permanently save the file (ENV: MD_SAVEDIR)
|
|
|
|
|
+ Settings.SaveDir = SettingEntry('saveDir', 'MD_SAVEDIR', '~/Downloads', 'music-downloader', os.path.expanduser)
|
|
|
|
|
+
|
|
|
|
|
+ # Directory to temporary download the file (ENV: MD_TMP)
|
|
|
|
|
+ Settings.tmpDir = SettingEntry('tmpDir', 'MD_TMP', '~/tmp', 'music-downloader', os.path.expanduser)
|
|
|
|
|
+
|
|
|
|
|
+ # Minimal debug level (ENV: MD_LOGGING)
|
|
|
|
|
+ Settings.Debuglvl = SettingEntry('debuglvl', 'MD_LOGGING', 0, 'music-downloader', int)
|
|
|
|
|
+
|
|
|
|
|
+ # Minimal bitrate to auto download the file (ENV: MD_QUALITY)
|
|
|
|
|
+ Settings.MinQuality = SettingEntry('minQuality', 'MD_QUALITY', 300, 'music-downloader', int)
|
|
|
|
|
+
|
|
|
|
|
+ # Format for downloaded file ID3 comment
|
|
|
|
|
+ Settings.CommentFormat = SettingEntry('commentFormat', 'MD_COMMENT', '', 'music-downloader')
|
|
|
|
|
+
|
|
|
|
|
+ def write():
|
|
|
|
|
+ for entry in Settings.__list__:
|
|
|
|
|
+ entry.push_config()
|
|
|
|
|
+ console.output('Writing settings to \'{0}\''.format(Settings.__file__.absolute()), console.DBG_INFO)
|
|
|
|
|
+ Settings.__config__.write(Settings.__file__.open('w'))
|
|
|
|
|
+
|
|
|
|
|
+ def read():
|
|
|
|
|
+ _config = configparser.ConfigParser()
|
|
|
|
|
+ if Settings.__file__.exists():
|
|
|
|
|
+ console.output('Reading settings from \'{0}\''.format(Settings.__file__.absolute()), console.DBG_INFO)
|
|
|
|
|
+ _config.read(Settings.__file__)
|
|
|
|
|
+ Settings.__config__ = _config
|
|
|
|
|
+ else:
|
|
|
|
|
+ console.output('Settings not found at \'{0}\''.format(Settings.__file__.absolute()), console.DBG_INFO)
|
|
|
|
|
+
|
|
|
|
|
+ SaveDir = None
|
|
|
|
|
+ tmpDir = None
|
|
|
|
|
+ Debuglvl = None
|
|
|
|
|
+ MinQuality = None
|
|
|
|
|
+ CommentFormat = None
|