bazarr/bazarr/config.py

256 lines
7.5 KiB
Python
Raw Normal View History

2018-12-14 22:18:52 +00:00
# coding=utf-8
2020-03-26 19:37:17 +00:00
import hashlib
2018-12-14 22:18:52 +00:00
import os
from simpleconfigparser import simpleconfigparser
2018-12-14 22:18:52 +00:00
2019-01-02 19:43:40 +00:00
from get_args import args
2018-12-14 22:18:52 +00:00
defaults = {
'general': {
'ip': '0.0.0.0',
'port': '6767',
2019-12-30 19:18:42 +00:00
'base_url': '',
'path_mappings': '[]',
'debug': 'False',
'branch': 'master',
'auto_update': 'True',
'single_language': 'False',
'minimum_score': '90',
'use_scenename': 'True',
'use_postprocessing': 'False',
'postprocessing_cmd': '',
'use_sonarr': 'False',
'use_radarr': 'False',
'path_mappings_movie': '[]',
'serie_default_enabled': 'False',
'serie_default_language': '[]',
'serie_default_hi': 'False',
2019-05-24 17:42:54 +00:00
'serie_default_forced': 'False',
'movie_default_enabled': 'False',
'movie_default_language': '[]',
'movie_default_hi': 'False',
2019-05-24 17:42:54 +00:00
'movie_default_forced': 'False',
'page_size': '25',
'page_size_manual_search': '5',
'minimum_score_movie': '70',
'use_embedded_subs': 'True',
'utf8_encode': 'True',
'ignore_pgs_subs': 'False',
'adaptive_searching': 'False',
'enabled_providers': '',
'throtteled_providers': '{}',
'multithreading': 'True',
2019-03-26 19:49:03 +00:00
'chmod_enabled': 'False',
2019-02-27 20:55:06 +00:00
'chmod': '0640',
'subfolder': 'current',
'subfolder_custom': '',
'update_restart': 'True',
2019-03-17 18:53:36 +00:00
'upgrade_subs': 'True',
'upgrade_frequency': '12',
2019-03-19 04:08:53 +00:00
'days_to_upgrade_subs': '7',
2019-04-07 20:09:17 +00:00
'upgrade_manual': 'True',
'anti_captcha_provider': 'None',
2020-05-07 11:39:59 +00:00
'wanted_search_frequency': '3',
'wanted_search_frequency_movie': '3'
2019-01-15 16:25:13 +00:00
},
'auth': {
'type': 'None',
'username': '',
'password': ''
2019-01-15 16:25:13 +00:00
},
'sonarr': {
'ip': '127.0.0.1',
'port': '8989',
'base_url': '/',
'ssl': 'False',
'apikey': '',
2019-01-06 17:15:43 +00:00
'full_update': 'Daily',
'full_update_day': '6',
'full_update_hour': '4',
2019-01-06 17:15:43 +00:00
'only_monitored': 'False',
2020-05-06 12:09:41 +00:00
'series_sync': '1',
'episodes_sync': '5',
2019-10-05 21:15:57 +00:00
},
'radarr': {
'ip': '127.0.0.1',
'port': '7878',
'base_url': '/',
'ssl': 'False',
'apikey': '',
2019-01-06 17:15:43 +00:00
'full_update': 'Daily',
'full_update_day': '6',
'full_update_hour': '5',
2019-01-06 17:15:43 +00:00
'only_monitored': 'False',
2020-05-06 12:09:41 +00:00
'movies_sync': '5',
2019-10-05 21:15:57 +00:00
},
'proxy': {
'type': 'None',
'url': '',
'port': '',
'username': '',
'password': '',
'exclude': 'localhost,127.0.0.1'
2019-01-15 16:25:13 +00:00
},
'opensubtitles': {
'username': '',
2019-01-03 20:57:21 +00:00
'password': '',
2019-01-04 20:01:18 +00:00
'use_tag_search': 'False',
2019-01-24 15:55:36 +00:00
'vip': 'False',
'ssl': 'False',
2019-01-04 20:01:18 +00:00
'timeout': '15',
'skip_wrong_fps': 'False'
2019-01-15 16:25:13 +00:00
},
'addic7ed': {
'username': '',
2019-01-03 20:57:21 +00:00
'password': '',
'random_agents': 'True'
},
2020-01-16 20:38:41 +00:00
'legendasdivx': {
'username': '',
'password': ''
},
'legendastv': {
'username': '',
'password': ''
2019-01-15 16:25:13 +00:00
},
'xsubs': {
'username': '',
'password': ''
},
2019-01-04 20:01:18 +00:00
'assrt': {
'token': ''
2019-04-07 20:09:17 +00:00
},
'anticaptcha': {
'anti_captcha_key': ''
},
'deathbycaptcha': {
'username': '',
'password': ''
},
'napisy24': {
'username': '',
'password': ''
2019-06-21 01:34:14 +00:00
},
'subscene': {
'username': '',
'password': ''
},
'betaseries': {
'token': ''
},
'analytics': {
'enabled': 'True'
2019-10-05 21:15:57 +00:00
},
'titlovi': {
'username': '',
'password': ''
2019-04-07 20:09:17 +00:00
}
}
2020-01-29 11:53:29 +00:00
settings = simpleconfigparser(defaults=defaults, interpolation=None)
2019-01-02 19:43:40 +00:00
settings.read(os.path.join(args.config_dir, 'config', 'config.ini'))
2018-12-14 22:18:52 +00:00
settings.general.base_url = settings.general.base_url if settings.general.base_url else '/'
2018-12-15 00:36:28 +00:00
base_url = settings.general.base_url
2019-11-06 01:49:08 +00:00
2020-03-11 10:58:45 +00:00
def save_settings(settings_items):
2020-04-24 15:19:18 +00:00
from database import database
2020-03-11 10:58:45 +00:00
for key, value in settings_items:
2020-04-25 12:23:22 +00:00
# Intercept database stored settings
2020-04-24 10:56:03 +00:00
if key == 'enabled_languages':
2020-04-24 15:19:18 +00:00
database.execute("UPDATE table_settings_languages SET enabled=0")
for item in value:
database.execute("UPDATE table_settings_languages SET enabled=1 WHERE code2=?", (item,))
2020-04-24 10:56:03 +00:00
continue
2020-04-29 02:39:30 +00:00
# Make sure that text based form values aren't pass as list unless they are language list
if isinstance(value, list) and len(value) == 1 and key not in ['settings-general-serie_default_language',
'settings-general-movie_default_language']:
2020-04-24 15:19:18 +00:00
value = value[0]
2020-04-29 02:39:30 +00:00
# Make sure empty language list are stored correctly due to bug in bootstrap-select
if key in ['settings-general-serie_default_language', 'settings-general-movie_default_language'] and value == ['null']:
value = []
2020-03-11 10:58:45 +00:00
settings_keys = key.split('-')
if value == 'true':
value = 'True'
elif value == 'false':
value = 'False'
2020-03-26 19:37:17 +00:00
if key == 'settings-auth-password':
value = hashlib.md5(value.encode('utf-8')).hexdigest()
2020-03-11 10:58:45 +00:00
if settings_keys[0] == 'settings':
settings[settings_keys[1]][settings_keys[2]] = str(value)
with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle:
settings.write(handle)
2019-11-06 01:49:08 +00:00
def url_sonarr():
if settings.sonarr.getboolean('ssl'):
protocol_sonarr = "https"
else:
protocol_sonarr = "http"
if settings.sonarr.base_url == '':
settings.sonarr.base_url = "/"
if not settings.sonarr.base_url.startswith("/"):
settings.sonarr.base_url = "/" + settings.sonarr.base_url
if settings.sonarr.base_url.endswith("/"):
settings.sonarr.base_url = settings.sonarr.base_url[:-1]
return protocol_sonarr + "://" + settings.sonarr.ip + ":" + settings.sonarr.port + settings.sonarr.base_url
def url_sonarr_short():
if settings.sonarr.getboolean('ssl'):
protocol_sonarr = "https"
else:
protocol_sonarr = "http"
if settings.sonarr.base_url == '':
settings.sonarr.base_url = "/"
if not settings.sonarr.base_url.startswith("/"):
settings.sonarr.base_url = "/" + settings.sonarr.base_url
if settings.sonarr.base_url.endswith("/"):
settings.sonarr.base_url = settings.sonarr.base_url[:-1]
return protocol_sonarr + "://" + settings.sonarr.ip + ":" + settings.sonarr.port
def url_radarr():
if settings.radarr.getboolean('ssl'):
protocol_radarr = "https"
else:
protocol_radarr = "http"
if settings.radarr.base_url == '':
settings.radarr.base_url = "/"
if not settings.radarr.base_url.startswith("/"):
settings.radarr.base_url = "/" + settings.radarr.base_url
if settings.radarr.base_url.endswith("/"):
settings.radarr.base_url = settings.radarr.base_url[:-1]
return protocol_radarr + "://" + settings.radarr.ip + ":" + settings.radarr.port + settings.radarr.base_url
def url_radarr_short():
if settings.radarr.getboolean('ssl'):
protocol_radarr = "https"
else:
protocol_radarr = "http"
if settings.radarr.base_url == '':
settings.radarr.base_url = "/"
if not settings.radarr.base_url.startswith("/"):
settings.radarr.base_url = "/" + settings.radarr.base_url
if settings.radarr.base_url.endswith("/"):
settings.radarr.base_url = settings.radarr.base_url[:-1]
return protocol_radarr + "://" + settings.radarr.ip + ":" + settings.radarr.port