From a0eb5b39c3f3f5f335208d1b6b2f1c72f3a00194 Mon Sep 17 00:00:00 2001 From: Terry Geng Date: Tue, 1 Feb 2022 20:51:39 -0500 Subject: [PATCH] fix(config): Define all fallback in configuration.default.ini. --- command.py | 4 ++-- configuration.default.ini | 8 ++++---- interface.py | 14 ++++++------- media/playlist.py | 2 +- media/url.py | 10 ++++----- media/url_from_playlist.py | 8 ++++---- mumbleBot.py | 42 +++++++++++++++++++------------------- util.py | 3 ++- 8 files changed, 46 insertions(+), 45 deletions(-) diff --git a/command.py b/command.py index c06d88c..8d3ba10 100644 --- a/command.py +++ b/command.py @@ -624,7 +624,7 @@ def cmd_help(bot, user, text, command, parameter): def cmd_stop(bot, user, text, command, parameter): global log - if var.config.getboolean("bot", "clear_when_stop_in_oneshot", fallback=False) \ + if var.config.getboolean("bot", "clear_when_stop_in_oneshot") \ and var.playlist.mode == 'one-shot': cmd_clear(bot, user, text, command, parameter) else: @@ -1152,7 +1152,7 @@ def cmd_shortlist(bot, user, text, command, parameter): def cmd_delete_from_library(bot, user, text, command, parameter): global song_shortlist, log - if not var.config.getboolean("bot", "delete_allowed", fallback=True): + if not var.config.getboolean("bot", "delete_allowed"): bot.mumble.users[text.actor].send_text_message(tr('not_admin')) return diff --git a/configuration.default.ini b/configuration.default.ini index bf79c89..0eea407 100644 --- a/configuration.default.ini +++ b/configuration.default.ini @@ -49,7 +49,7 @@ language = en_US logfile = max_track_duration = 60 max_track_playlist = 20 -music_database_path = +music_database_path = music.db music_folder = music_folder/ pip3_path = venv/bin/pip playback_mode = one-shot @@ -62,9 +62,9 @@ target_version = git tmp_folder = /tmp/ tmp_folder_max_size = 10 username = botamusique -volume = 0.1 +volume = 0.8 when_nobody_in_channel = nothing -youtube_query_cookie = +youtube_query_cookie = {} [webinterface] access_address = http://127.0.0.1:8181 @@ -84,7 +84,7 @@ web_logfile = [debug] ffmpeg = False mumble_connection = False -redirect_ffmpeg_log = True +redirect_ffmpeg_log = False youtube_dl = False [radio] diff --git a/interface.py b/interface.py index 7565da0..27480da 100644 --- a/interface.py +++ b/interface.py @@ -163,7 +163,7 @@ def requires_auth(f): bad_access_count[request.remote_addr] += 1 log.info(f"web: bad token from ip {request.remote_addr}, " f"{bad_access_count[request.remote_addr]} attempts.") - if bad_access_count[request.remote_addr] > var.config.getint("webinterface", "max_attempts", fallback=10): + if bad_access_count[request.remote_addr] > var.config.getint("webinterface", "max_attempts"): banned_ip.append(request.remote_addr) log.info(f"web: access banned for {request.remote_addr}") else: @@ -464,7 +464,7 @@ def post(): var.music_db.manage_special_tags() log.info("web: Local file cache refreshed.") elif action == "stop": - if var.config.getboolean("bot", "clear_when_stop_in_oneshot", fallback=False) \ + if var.config.getboolean("bot", "clear_when_stop_in_oneshot") \ and var.playlist.mode == 'one-shot': var.bot.clear() else: @@ -559,12 +559,12 @@ def library_info(): time.sleep(0.1) tags = var.music_db.query_all_tags() - max_upload_file_size = util.parse_file_size(var.config.get("webinterface", "max_upload_file_size", fallback="30MB")) + max_upload_file_size = util.parse_file_size(var.config.get("webinterface", "max_upload_file_size")) return jsonify(dict( dirs=get_all_dirs(), - upload_enabled=var.config.getboolean("webinterface", "upload_enabled", fallback=True) or var.bot.is_admin(user), - delete_allowed=var.config.getboolean("bot", "delete_allowed", fallback=True) or var.bot.is_admin(user), + upload_enabled=var.config.getboolean("webinterface", "upload_enabled") or var.bot.is_admin(user), + delete_allowed=var.config.getboolean("bot", "delete_allowed") or var.bot.is_admin(user), tags=tags, max_upload_file_size=max_upload_file_size )) @@ -609,7 +609,7 @@ def library(): return redirect("./", code=302) elif payload['action'] == 'delete': - if var.config.getboolean("bot", "delete_allowed", fallback=True): + if var.config.getboolean("bot", "delete_allowed"): items = dicts_to_items(var.music_db.query_music(condition)) for item in items: var.playlist.remove_by_id(item.id) @@ -685,7 +685,7 @@ def library(): def upload(): global log - if not var.config.getboolean("webinterface", "upload_enabled", fallback=True): + if not var.config.getboolean("webinterface", "upload_enabled"): abort(403) file = request.files['file'] diff --git a/media/playlist.py b/media/playlist.py index 2152385..0e81326 100644 --- a/media/playlist.py +++ b/media/playlist.py @@ -396,7 +396,7 @@ class AutoPlaylist(OneshotPlaylist): self.mode = "autoplay" def refresh(self): - dicts = var.music_db.query_random_music(var.config.getint("bot", "autoplay_length", fallback=5), + dicts = var.music_db.query_random_music(var.config.getint("bot", "autoplay_length"), Condition().and_not_sub_condition( Condition().and_like('tags', "%don't autoplay,%"))) diff --git a/media/url.py b/media/url.py index 37c6909..448c9a8 100644 --- a/media/url.py +++ b/media/url.py @@ -131,7 +131,7 @@ class URLItem(BaseItem): } succeed = False with youtube_dl.YoutubeDL(ydl_opts) as ydl: - attempts = var.config.getint('bot', 'download_attempts', fallback=2) + attempts = var.config.getint('bot', 'download_attempts') for i in range(attempts): try: info = ydl.extract_info(self.url, download=False) @@ -175,16 +175,16 @@ class URLItem(BaseItem): }] } - cookie = var.config.get('youtube_dl', 'cookie_file', fallback=None) + cookie = var.config.get('youtube_dl', 'cookie_file') if cookie: - ydl_opts['cookiefile'] = var.config.get('youtube_dl', 'cookie_file', fallback=None) + ydl_opts['cookiefile'] = var.config.get('youtube_dl', 'cookie_file') - user_agent = var.config.get('youtube_dl', 'user_agent', fallback=None) + user_agent = var.config.get('youtube_dl', 'user_agent') if user_agent: youtube_dl.utils.std_headers['User-Agent'] = var.config.get('youtube_dl', 'user_agent') with youtube_dl.YoutubeDL(ydl_opts) as ydl: - attempts = var.config.getint('bot', 'download_attempts', fallback=2) + attempts = var.config.getint('bot', 'download_attempts') download_succeed = False for i in range(attempts): self.log.info("bot: download attempts %d / %d" % (i + 1, attempts)) diff --git a/media/url_from_playlist.py b/media/url_from_playlist.py index 3345fe3..45b72a9 100644 --- a/media/url_from_playlist.py +++ b/media/url_from_playlist.py @@ -15,16 +15,16 @@ def get_playlist_info(url, start_index=0, user=""): 'verbose': var.config.getboolean('debug', 'youtube_dl') } - cookie = var.config.get('youtube_dl', 'cookie_file', fallback=None) + cookie = var.config.get('youtube_dl', 'cookie_file') if cookie: - ydl_opts['cookiefile'] = var.config.get('youtube_dl', 'cookie_file', fallback=None) + ydl_opts['cookiefile'] = var.config.get('youtube_dl', 'cookie_file') - user_agent = var.config.get('youtube_dl', 'user_agent', fallback=None) + user_agent = var.config.get('youtube_dl', 'user_agent') if user_agent: youtube_dl.utils.std_headers['User-Agent'] = var.config.get('youtube_dl', 'user_agent') with youtube_dl.YoutubeDL(ydl_opts) as ydl: - attempts = var.config.getint('bot', 'download_attempts', fallback=2) + attempts = var.config.getint('bot', 'download_attempts') for i in range(attempts): items = [] try: diff --git a/mumbleBot.py b/mumbleBot.py index ef32618..42501a0 100644 --- a/mumbleBot.py +++ b/mumbleBot.py @@ -40,12 +40,12 @@ class MumbleBot: signal.signal(signal.SIGINT, self.ctrl_caught) self.cmd_handle = {} - self.stereo = var.config.getboolean('bot', 'stereo', fallback=True) + self.stereo = var.config.getboolean('bot', 'stereo') if args.channel: self.channel = args.channel else: - self.channel = var.config.get("server", "channel", fallback=None) + self.channel = var.config.get("server", "channel") var.user = args.user var.is_proxified = var.config.getboolean( @@ -137,7 +137,7 @@ class MumbleBot: # ====== Volume ====== self.volume_helper = util.VolumeHelper() - _volume = var.config.getfloat('bot', 'volume', fallback=0.8) + _volume = var.config.getfloat('bot', 'volume') if var.db.has_option('bot', 'volume'): _volume = var.db.getfloat('bot', 'volume') self.volume_helper.set_volume(_volume) @@ -148,14 +148,14 @@ class MumbleBot: self.last_volume_cycle_time = time.time() self._ducking_volume = 0 - _ducking_volume = var.config.getfloat("bot", "ducking_volume", fallback=0.50) + _ducking_volume = var.config.getfloat("bot", "ducking_volume") _ducking_volume = var.db.getfloat("bot", "ducking_volume", fallback=_ducking_volume) self.volume_helper.set_ducking_volume(_ducking_volume) - self.ducking_threshold = var.config.getfloat("bot", "ducking_threshold", fallback=5000) + self.ducking_threshold = var.config.getfloat("bot", "ducking_threshold") self.ducking_threshold = var.db.getfloat("bot", "ducking_threshold", fallback=self.ducking_threshold) - if not var.db.has_option("bot", "ducking") and var.config.getboolean("bot", "ducking", fallback=False) \ + if not var.db.has_option("bot", "ducking") and var.config.getboolean("bot", "ducking") \ or var.config.getboolean("bot", "ducking"): self.is_ducking = True self.mumble.callbacks.set_callback(pymumble.constants.PYMUMBLE_CLBK_SOUNDRECEIVED, @@ -165,7 +165,7 @@ class MumbleBot: assert var.config.get("bot", "when_nobody_in_channel") in ['pause', 'pause_resume', 'stop', 'nothing', ''], \ "Unknown action for when_nobody_in_channel" - if var.config.get("bot", "when_nobody_in_channel", fallback='') in ['pause', 'pause_resume', 'stop']: + if var.config.get("bot", "when_nobody_in_channel") in ['pause', 'pause_resume', 'stop']: user_change_callback = \ lambda user, action: threading.Thread(target=self.users_changed, args=(user, action), daemon=True).start() @@ -177,7 +177,7 @@ class MumbleBot: self._display_rms = False self._max_rms = 0 - self.redirect_ffmpeg_log = var.config.getboolean('debug', 'redirect_ffmpeg_log', fallback=True) + self.redirect_ffmpeg_log = var.config.getboolean('debug', 'redirect_ffmpeg_log') if var.config.getboolean("bot", "auto_check_update"): def check_update(): @@ -202,8 +202,8 @@ class MumbleBot: self.log.info( "\nSIGINT caught, quitting, {} more to kill".format(2 - self.nb_exit)) - if var.config.getboolean('bot', 'save_playlist', fallback=True) \ - and var.config.get("bot", "save_music_library", fallback=True): + if var.config.getboolean('bot', 'save_playlist') \ + and var.config.get("bot", "save_music_library"): self.log.info("bot: save playlist into database") var.playlist.save() @@ -235,7 +235,7 @@ class MumbleBot: self.mumble.users.myself.comment(var.config.get('bot', 'comment')) def set_avatar(self): - avatar_path = var.config.get('bot', 'avatar', fallback=None) + avatar_path = var.config.get('bot', 'avatar') if avatar_path: with open(avatar_path, 'rb') as avatar_file: @@ -598,8 +598,8 @@ class MumbleBot: if self.exit: self._loop_status = "exited" - if var.config.getboolean('bot', 'save_playlist', fallback=True) \ - and var.config.get("bot", "save_music_library", fallback=True): + if var.config.getboolean('bot', 'save_playlist') \ + and var.config.get("bot", "save_music_library"): self.log.info("bot: save playlist into database") var.playlist.save() @@ -841,7 +841,7 @@ if __name__ == '__main__': if logfile: print(f"Redirecting stdout and stderr to log file: {logfile}") handler = logging.handlers.RotatingFileHandler(logfile, mode='a', maxBytes=10240, backupCount=3) # Rotate after 10KB, leave 3 old logs - if var.config.getboolean("bot", "redirect_stderr", fallback=False): + if var.config.getboolean("bot", "redirect_stderr"): sys.stderr = util.LoggerIOWrapper(bot_logger, logging.INFO, fallback_io_buffer=sys.stderr.buffer) else: @@ -862,13 +862,13 @@ if __name__ == '__main__': sanitized_username = "".join([x if x.isalnum() else "_" for x in username]) var.settings_db_path = args.db if args.db is not None else util.solve_filepath( - config.get("bot", "database_path", fallback="") or f"settings-{sanitized_username}.db") + config.get("bot", "database_path") or f"settings-{sanitized_username}.db") var.music_db_path = args.music_db if args.music_db is not None else util.solve_filepath( - config.get("bot", "music_database_path", fallback="") or "music.db") + config.get("bot", "music_database_path")) var.db = SettingsDatabase(var.settings_db_path) - if var.config.get("bot", "save_music_library", fallback=True): + if var.config.get("bot", "save_music_library"): var.music_db = MusicDatabase(var.music_db_path) else: var.music_db = MusicDatabase(":memory:") @@ -889,7 +889,7 @@ if __name__ == '__main__': if args.lang: lang = args.lang else: - lang = var.config.get('bot', 'language', fallback='en_US') + lang = var.config.get('bot', 'language') if lang not in supported_languages: raise KeyError(f"Unsupported language {lang}") @@ -901,7 +901,7 @@ if __name__ == '__main__': # ====================== var.cache = MusicCache(var.music_db) - if var.config.getboolean("bot", "refresh_cache_on_startup", fallback=True): + if var.config.getboolean("bot", "refresh_cache_on_startup"): var.cache.build_dir_cache() # ====================== @@ -911,7 +911,7 @@ if __name__ == '__main__': if var.db.has_option("playlist", "playback_mode"): playback_mode = var.db.get('playlist', 'playback_mode') else: - playback_mode = var.config.get('bot', 'playback_mode', fallback="one-shot") + playback_mode = var.config.get('bot', 'playback_mode') if playback_mode in ["one-shot", "repeat", "random", "autoplay"]: var.playlist = media.playlist.get_playlist(playback_mode) @@ -925,7 +925,7 @@ if __name__ == '__main__': command.register_all_commands(var.bot) # load playlist - if var.config.getboolean('bot', 'save_playlist', fallback=True): + if var.config.getboolean('bot', 'save_playlist'): var.bot_logger.info("bot: load playlist from previous session") var.playlist.load() diff --git a/util.py b/util.py index 82dc86f..50946c2 100644 --- a/util.py +++ b/util.py @@ -323,7 +323,8 @@ def youtube_search(query): import json try: - cookie = json.loads(var.config.get('bot', 'youtube_query_cookie', fallback='{}')) + cookie_json = var.config.get('bot', 'youtube_query_cookie') + cookie = json.loads(cookie_json if cookie_json else '{}') r = requests.get("https://www.youtube.com/results", cookies=cookie, params={'search_query': query}, timeout=5) result_json_match = re.findall(r">var ytInitialData = (.*?);", r.text)