Plex-Bot-Music/PlexBot/__init__.py

63 lines
1.7 KiB
Python
Raw Permalink Normal View History

2020-08-10 10:26:38 +02:00
"""
Plex music bot for discord.
2020-08-10 10:26:38 +02:00
Do not import this module, it is intended to be
used exclusively within a docker environment.
"""
2020-07-27 06:08:00 +02:00
import logging
import sys
from pathlib import Path
from typing import Dict
import yaml
2020-07-23 06:21:41 +02:00
2020-07-27 06:08:00 +02:00
FORMAT = "%(asctime)s %(levelname)s: [%(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s"
2020-07-23 06:21:41 +02:00
2020-07-27 06:08:00 +02:00
logging.basicConfig(format=FORMAT)
root_log = logging.getLogger()
plex_log = logging.getLogger("Plex")
bot_log = logging.getLogger("Bot")
2020-07-27 06:08:00 +02:00
def load_config(filename: str) -> Dict[str, str]:
"""Loads config from yaml file
Grabs key/value config pairs from a file.
Args:
filename: str path to yaml file.
Returns:
Dict[str, str] Values from config file.
2020-07-27 06:08:00 +02:00
Raises:
FileNotFound Configuration file not found.
"""
2020-07-27 06:08:00 +02:00
# All config files should be in /config
# for docker deployment.
filename = Path("/config", filename)
try:
with open(filename, "r") as config_file:
config = yaml.safe_load(config_file)
2020-07-27 06:08:00 +02:00
except FileNotFoundError:
root_log.fatal("Configuration file not found.")
2020-07-27 06:08:00 +02:00
sys.exit(-1)
# Convert str level type to logging constant
levels = {
"DEBUG": logging.DEBUG,
"INFO": logging.INFO,
"WARNING": logging.WARNING,
"ERROR": logging.ERROR,
"CRITICAL": logging.CRITICAL,
}
config["root"]["log_level"] = levels[config["root"]["log_level"].upper()]
config["plex"]["log_level"] = levels[config["plex"]["log_level"].upper()]
config["discord"]["log_level"] = levels[config["discord"]["log_level"].upper()]
2020-07-23 06:21:41 +02:00
if config["lyrics"]["token"].lower() == "none":
config["lyrics"]["token"] = None
2020-07-23 06:21:41 +02:00
return config