192 lines
4.9 KiB
Python
192 lines
4.9 KiB
Python
import configparser
|
|
import os
|
|
from os import environ, path
|
|
from dotenv import load_dotenv
|
|
|
|
CONFIG_PATH = 'app/config/config.ini'
|
|
BOT_SECTION = 'bot_envs'
|
|
MEMBARR_VERSION = 1.1
|
|
|
|
config = configparser.ConfigParser()
|
|
|
|
CONFIG_KEYS = ['username', 'password', 'discord_bot_token', 'plex_user', 'plex_pass', 'plex_token',
|
|
'plex_base_url', 'plex_roles', 'plex_server_name', 'plex_libs', 'owner_id', 'channel_id',
|
|
'auto_remove_user', 'jellyfin_api_key', 'jellyfin_server_url', 'jellyfin_roles',
|
|
'jellyfin_libs', 'plex_enabled', 'jellyfin_enabled', 'jellyfin_external_url']
|
|
|
|
# settings
|
|
Discord_bot_token = ""
|
|
plex_roles = None
|
|
PLEXUSER = ""
|
|
PLEXPASS = ""
|
|
PLEX_SERVER_NAME = ""
|
|
PLEX_TOKEN = ""
|
|
PLEX_BASE_URL = ""
|
|
Plex_LIBS = None
|
|
JELLYFIN_SERVER_URL = ""
|
|
JELLYFIN_API_KEY = ""
|
|
jellyfin_libs = ""
|
|
jellyfin_roles = None
|
|
plex_configured = True
|
|
jellyfin_configured = True
|
|
|
|
switch = 0
|
|
|
|
# TODO: make this into a class
|
|
|
|
if(path.exists('bot.env')):
|
|
try:
|
|
load_dotenv(dotenv_path='bot.env')
|
|
# settings
|
|
Discord_bot_token = environ.get('discord_bot_token')
|
|
switch = 1
|
|
|
|
except Exception as e:
|
|
pass
|
|
|
|
try:
|
|
Discord_bot_token = str(os.environ['token'])
|
|
switch = 1
|
|
except Exception as e:
|
|
pass
|
|
|
|
if not (path.exists(CONFIG_PATH)):
|
|
with open (CONFIG_PATH, 'w') as fp:
|
|
pass
|
|
|
|
|
|
|
|
config = configparser.ConfigParser()
|
|
config.read(CONFIG_PATH)
|
|
|
|
plex_token_configured = True
|
|
try:
|
|
PLEX_TOKEN = config.get(BOT_SECTION, 'plex_token')
|
|
PLEX_BASE_URL = config.get(BOT_SECTION, 'plex_base_url')
|
|
except:
|
|
print("No Plex auth token details found")
|
|
plex_token_configured = False
|
|
|
|
# Get Plex config
|
|
try:
|
|
PLEX_SERVER_NAME = config.get(BOT_SECTION, 'plex_server_name')
|
|
PLEXUSER = config.get(BOT_SECTION, 'plex_user')
|
|
PLEXPASS = config.get(BOT_SECTION, 'plex_pass')
|
|
except:
|
|
print("No Plex login info found")
|
|
if not plex_token_configured:
|
|
print("Could not load plex config")
|
|
plex_configured = False
|
|
|
|
# Get Plex roles config
|
|
try:
|
|
plex_roles = config.get(BOT_SECTION, 'plex_roles')
|
|
except:
|
|
print("Could not get Plex roles config")
|
|
plex_roles = None
|
|
if plex_roles:
|
|
plex_roles = list(plex_roles.split(','))
|
|
else:
|
|
plex_roles = []
|
|
|
|
# Get Plex libs config
|
|
try:
|
|
Plex_LIBS = config.get(BOT_SECTION, 'plex_libs')
|
|
except:
|
|
print("Could not get Plex libs config. Defaulting to all libraries.")
|
|
Plex_LIBS = None
|
|
if Plex_LIBS is None:
|
|
Plex_LIBS = ["all"]
|
|
else:
|
|
Plex_LIBS = list(Plex_LIBS.split(','))
|
|
|
|
# Get Jellyfin config
|
|
try:
|
|
JELLYFIN_SERVER_URL = config.get(BOT_SECTION, 'jellyfin_server_url')
|
|
JELLYFIN_API_KEY = config.get(BOT_SECTION, "jellyfin_api_key")
|
|
except:
|
|
print("Could not load Jellyfin config")
|
|
jellyfin_configured = False
|
|
|
|
try:
|
|
JELLYFIN_EXTERNAL_URL = config.get(BOT_SECTION, "jellyfin_external_url")
|
|
if not JELLYFIN_EXTERNAL_URL:
|
|
JELLYFIN_EXTERNAL_URL = JELLYFIN_SERVER_URL
|
|
except:
|
|
JELLYFIN_EXTERNAL_URL = JELLYFIN_SERVER_URL
|
|
print("Could not get Jellyfin external url. Defaulting to server url.")
|
|
|
|
# Get Jellyfin roles config
|
|
try:
|
|
jellyfin_roles = config.get(BOT_SECTION, 'jellyfin_roles')
|
|
except:
|
|
print("Could not get Jellyfin roles config")
|
|
jellyfin_roles = None
|
|
if jellyfin_roles:
|
|
jellyfin_roles = list(jellyfin_roles.split(','))
|
|
else:
|
|
jellyfin_roles = []
|
|
|
|
# Get Jellyfin libs config
|
|
try:
|
|
jellyfin_libs = config.get(BOT_SECTION, 'jellyfin_libs')
|
|
except:
|
|
print("Could not get Jellyfin libs config. Defaulting to all libraries.")
|
|
jellyfin_libs = None
|
|
if jellyfin_libs is None:
|
|
jellyfin_libs = ["all"]
|
|
else:
|
|
jellyfin_libs = list(jellyfin_libs.split(','))
|
|
|
|
# Get Enable config
|
|
try:
|
|
USE_JELLYFIN = config.get(BOT_SECTION, 'jellyfin_enabled')
|
|
USE_JELLYFIN = USE_JELLYFIN.lower() == "true"
|
|
except:
|
|
print("Could not get Jellyfin enable config. Defaulting to False")
|
|
USE_JELLYFIN = False
|
|
|
|
try:
|
|
USE_PLEX = config.get(BOT_SECTION, "plex_enabled")
|
|
USE_PLEX = USE_PLEX.lower() == "true"
|
|
except:
|
|
print("Could not get Plex enable config. Defaulting to False")
|
|
USE_PLEX = False
|
|
|
|
def get_config():
|
|
"""
|
|
Function to return current config
|
|
"""
|
|
try:
|
|
config.read(CONFIG_PATH)
|
|
return config
|
|
except Exception as e:
|
|
print(e)
|
|
print('error in reading config')
|
|
return None
|
|
|
|
|
|
def change_config(key, value):
|
|
"""
|
|
Function to change the key, value pair in config
|
|
"""
|
|
try:
|
|
config = configparser.ConfigParser()
|
|
config.read(CONFIG_PATH)
|
|
except Exception as e:
|
|
print(e)
|
|
print("Cannot Read config.")
|
|
|
|
try:
|
|
config.set(BOT_SECTION, key, str(value))
|
|
except Exception as e:
|
|
config.add_section(BOT_SECTION)
|
|
config.set(BOT_SECTION, key, str(value))
|
|
|
|
try:
|
|
with open(CONFIG_PATH, 'w') as configfile:
|
|
config.write(configfile)
|
|
except Exception as e:
|
|
print(e)
|
|
print("Cannot write to config.")
|