X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Futils%2Fconfig.py;h=a46c0c66493e3519ab1af41cefe7d88e8087ddbf;hb=d67a78c3f86751a551b370c32aaf3934e772825f;hp=f3996d3861d7f6ae04647bc3866bb679f552c8e2;hpb=1c01e4a7aa37eeef825c6918fc90b154a7f4ccc7;p=mpd-sima.git diff --git a/sima/utils/config.py b/sima/utils/config.py index f3996d3..a46c0c6 100644 --- a/sima/utils/config.py +++ b/sima/utils/config.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2010, 2011, 2013, 2014, 2015 Jack Kaliko +# Copyright (c) 2009-2015, 2019-2021 kaliko +# Copyright (c) 2019 sacha # # This file is part of sima # @@ -48,13 +49,16 @@ DEFAULT_CONF = { 'sima': { 'internal': "Crop, Lastfm, Random", 'contrib': "", - 'user_db': "false", + 'user_db': False, 'history_duration': 8, 'queue_length': 2, 'var_dir': 'empty', - 'musicbrainzid': "true", + 'musicbrainzid': True, + 'repeat_disable_queue': True, + 'single_disable_queue': True, + 'mopidy_compat': False, }, - 'daemon':{ + 'daemon': { 'daemon': False, 'pidfile': "", }, @@ -66,35 +70,48 @@ DEFAULT_CONF = { 'consume': 10, 'priority': 0, }, - 'echonest': { - 'queue_mode': "track", #TODO control values - 'max_art': 15, - 'single_album': "false", - 'track_to_add': 1, - 'album_to_add': 1, - 'depth': 1, - 'priority': 100, - }, 'lastfm': { - 'queue_mode': "track", #TODO control values + 'queue_mode': "track", # TODO control values 'max_art': 10, - 'single_album': "false", + 'single_album': False, 'track_to_add': 1, 'album_to_add': 1, + 'shuffle_album': False, + 'track_to_add_from_album': 0, # <=0 means keep all 'depth': 1, 'cache': True, 'priority': 100, }, 'random': { - 'flavour': "sensible", # in pure, sensible + 'flavour': "sensible", # in pure, sensible 'track_to_add': 1, 'priority': 50, }, + 'tags': { + 'comment': "", + 'date': "", + 'genre': "", + 'label': "", + 'originaldate': "", + 'filter': "", + 'queue_mode': "track", + 'single_album': False, + 'track_to_add': 1, + 'album_to_add': 1, + 'priority': 80, + }, + 'genre': { + 'queue_mode': "track", + 'single_album': False, + 'track_to_add': 1, + 'album_to_add': 1, + 'priority': 80, + }, } # -class ConfMan(object): # CONFIG MANAGER CLASS +class ConfMan: # CONFIG MANAGER CLASS """ Configuration manager. Default configuration is stored in DEFAULT_CONF dictionnary. @@ -122,18 +139,18 @@ class ConfMan(object): # CONFIG MANAGER CLASS self.use_envar() self.startopt = options - ## INIT CALLS + # INIT CALLS self.init_config() self.supersedes_config_with_cmd_line_options() - # Controls files access - self.control_facc() # set dbfile self.config['sima']['db_file'] = join(self.config['sima']['var_dir'], 'sima.db') + # Controls files access + self.control_facc() # Create directories data_dir = self.config['sima']['var_dir'] if not isdir(data_dir): - self.log.trace('Creating "{}"'.format(data_dir)) + self.log.trace('Creating "%s"', data_dir) makedirs(data_dir) chmod(data_dir, 0o700) @@ -141,11 +158,12 @@ class ConfMan(object): # CONFIG MANAGER CLASS """Controls file access. This is relevant only for file provided through the configuration file since files provided on the command line are already checked with - argparse. + argparse. Also add config['sima']['db_file'] contructed here in init """ ok = True for op, ftochk in [('logfile', self.config.get('log', 'logfile')), - ('pidfile', self.config.get('daemon', 'pidfile')),]: + ('pidfile', self.config.get('daemon', 'pidfile')), + ('db file', self.config.get('sima', 'db_file'))]: if not ftochk: continue if isdir(ftochk): @@ -162,8 +180,6 @@ class ConfMan(object): # CONFIG MANAGER CLASS self.log.critical('no write access to "%s" (%s)', ftochk, op) ok = False if not ok: - if exists(self.conf_file): - self.log.warning('Try to check the configuration file: %s', self.conf_file) sys.exit(2) def control_mod(self): @@ -185,6 +201,14 @@ class ConfMan(object): # CONFIG MANAGER CLASS for opt in self.config.options(sec): if opt in list(self.startopt.keys()): self.config.set(sec, opt, str(self.startopt.get(opt))) + # honor MPD_HOST format as in mpc(1) for command line option --host + if self.startopt.get('host'): + if '@' in self.startopt.get('host'): + host, passwd = utils.parse_mpd_host(self.startopt.get('host')) + if passwd: + self.config.set('MPD', 'password', passwd) + if host: + self.config.set('MPD', 'host', host) def use_envar(self): """Use MPD en.var. to set defaults""" @@ -222,6 +246,7 @@ class ConfMan(object): # CONFIG MANAGER CLASS pass elif environ.get('XDG_CONFIG_HOME'): conf_dir = join(environ.get('XDG_CONFIG_HOME'), DIRNAME) + self.conf_file = join(conf_dir, CONF_FILE) elif homedir and isdir(homedir) and homedir not in ['/']: conf_dir = join(homedir, '.config', DIRNAME) self.conf_file = join(conf_dir, CONF_FILE) @@ -230,7 +255,7 @@ class ConfMan(object): # CONFIG MANAGER CLASS self.log.critical('Please use "--config" to locate the conf file') sys.exit(1) - ## Sima sqlite DB + # Sima sqlite DB self.config['sima']['var_dir'] = join(data_dir) # If no conf file present, uses defaults