|
|
|
# Author: Nic Wolfe <nic@wolfeden.ca>
|
|
|
|
# URL: http://code.google.com/p/sickbeard/
|
|
|
|
#
|
|
|
|
# This file is part of SickGear.
|
|
|
|
#
|
|
|
|
# SickGear is free software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
#
|
|
|
|
# SickGear is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with SickGear. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
from __future__ import with_statement
|
|
|
|
|
|
|
|
import webbrowser
|
|
|
|
import datetime
|
|
|
|
import socket
|
|
|
|
import os
|
|
|
|
import re
|
|
|
|
|
|
|
|
from threading import Lock
|
|
|
|
|
|
|
|
# apparently py2exe won't build these unless they're imported somewhere
|
|
|
|
import sys
|
|
|
|
import os.path
|
|
|
|
import uuid
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
import ast
|
|
|
|
import base64
|
|
|
|
sys.path.insert(1, os.path.abspath('../lib'))
|
|
|
|
from sickbeard import helpers, logger, db, naming, metadata, providers, scene_exceptions, scene_numbering, \
|
|
|
|
scheduler, auto_post_processer, search_queue, search_propers, search_recent, search_backlog, \
|
|
|
|
show_queue, show_updater, subtitles, traktChecker, version_checker
|
|
|
|
from sickbeard.config import CheckSection, check_setting_int, check_setting_str, ConfigMigrator, minimax
|
|
|
|
from sickbeard.common import SD, SKIPPED
|
|
|
|
from sickbeard.databases import mainDB, cache_db, failed_db
|
|
|
|
from indexers.indexer_config import INDEXER_TVDB
|
|
|
|
from indexers.indexer_api import indexerApi
|
|
|
|
from indexers.indexer_exceptions import indexer_shownotfound, indexer_exception, indexer_error, \
|
|
|
|
indexer_episodenotfound, indexer_attributenotfound, indexer_seasonnotfound, indexer_userabort, indexerExcepts
|
|
|
|
from sickbeard.exceptions import ex
|
|
|
|
from sickbeard.providers.generic import GenericProvider
|
|
|
|
from sickbeard import encodingKludge as ek
|
|
|
|
from lib.adba.aniDBerrors import (AniDBError, AniDBBannedError)
|
|
|
|
from lib.configobj import ConfigObj
|
|
|
|
from lib.libtrakt import TraktAPI
|
|
|
|
import trakt_helpers
|
|
|
|
|
|
|
|
PID = None
|
|
|
|
|
|
|
|
CFG = None
|
|
|
|
CONFIG_FILE = None
|
|
|
|
|
|
|
|
# This is the version of the config we EXPECT to find
|
|
|
|
CONFIG_VERSION = 14
|
|
|
|
|
|
|
|
# Default encryption version (0 for None)
|
|
|
|
ENCRYPTION_VERSION = 0
|
|
|
|
|
|
|
|
PROG_DIR = '.'
|
|
|
|
MY_FULLNAME = None
|
|
|
|
MY_NAME = None
|
|
|
|
MY_ARGS = []
|
|
|
|
SYS_ENCODING = ''
|
|
|
|
DATA_DIR = ''
|
|
|
|
|
|
|
|
# system events
|
|
|
|
events = None
|
|
|
|
|
|
|
|
recentSearchScheduler = None
|
|
|
|
backlogSearchScheduler = None
|
|
|
|
showUpdateScheduler = None
|
|
|
|
versionCheckScheduler = None
|
|
|
|
showQueueScheduler = None
|
|
|
|
searchQueueScheduler = None
|
|
|
|
properFinderScheduler = None
|
|
|
|
autoPostProcesserScheduler = None
|
|
|
|
subtitlesFinderScheduler = None
|
|
|
|
traktCheckerScheduler = None
|
|
|
|
|
|
|
|
showList = None
|
|
|
|
UPDATE_SHOWS_ON_START = False
|
|
|
|
SHOW_UPDATE_HOUR = 3
|
|
|
|
ALLOW_INCOMPLETE_SHOWDATA = False
|
|
|
|
|
|
|
|
providerList = []
|
|
|
|
newznabProviderList = []
|
|
|
|
torrentRssProviderList = []
|
|
|
|
metadata_provider_dict = {}
|
|
|
|
|
|
|
|
NEWEST_VERSION_STRING = None
|
|
|
|
VERSION_NOTIFY = False
|
|
|
|
AUTO_UPDATE = False
|
|
|
|
NOTIFY_ON_UPDATE = False
|
|
|
|
CUR_COMMIT_HASH = None
|
|
|
|
BRANCH = ''
|
|
|
|
GIT_REMOTE = ''
|
|
|
|
CUR_COMMIT_BRANCH = ''
|
|
|
|
|
|
|
|
INIT_LOCK = Lock()
|
|
|
|
started = False
|
|
|
|
|
|
|
|
ACTUAL_LOG_DIR = None
|
|
|
|
LOG_DIR = None
|
|
|
|
FILE_LOGGING_PRESET = 'DB'
|
|
|
|
|
|
|
|
SOCKET_TIMEOUT = None
|
|
|
|
|
|
|
|
WEB_PORT = None
|
|
|
|
WEB_LOG = None
|
|
|
|
WEB_ROOT = None
|
|
|
|
WEB_USERNAME = None
|
|
|
|
WEB_PASSWORD = None
|
|
|
|
WEB_HOST = None
|
|
|
|
WEB_IPV6 = None
|
|
|
|
|
|
|
|
HANDLE_REVERSE_PROXY = False
|
|
|
|
PROXY_SETTING = None
|
|
|
|
PROXY_INDEXERS = True
|
|
|
|
|
|
|
|
CPU_PRESET = 'NORMAL'
|
|
|
|
|
|
|
|
ANON_REDIRECT = None
|
|
|
|
|
|
|
|
USE_API = False
|
|
|
|
API_KEY = None
|
|
|
|
|
|
|
|
ENABLE_HTTPS = False
|
|
|
|
HTTPS_CERT = None
|
|
|
|
HTTPS_KEY = None
|
|
|
|
|
|
|
|
LAUNCH_BROWSER = False
|
|
|
|
CACHE_DIR = None
|
|
|
|
ACTUAL_CACHE_DIR = None
|
|
|
|
ZONEINFO_DIR = None
|
|
|
|
ROOT_DIRS = None
|
|
|
|
TRASH_REMOVE_SHOW = False
|
|
|
|
TRASH_ROTATE_LOGS = False
|
|
|
|
HOME_SEARCH_FOCUS = True
|
|
|
|
SORT_ARTICLE = False
|
|
|
|
DEBUG = False
|
|
|
|
DISPLAY_BACKGROUND = False
|
|
|
|
DISPLAY_BACKGROUND_TRANSPARENT = None
|
|
|
|
DISPLAY_ALL_SEASONS = True
|
|
|
|
SHOW_TAGS = []
|
|
|
|
DEFAULT_SHOW_TAG = ''
|
|
|
|
SHOWLIST_TAGVIEW = ''
|
|
|
|
|
|
|
|
METADATA_XBMC = None
|
|
|
|
METADATA_XBMC_12PLUS = None
|
|
|
|
METADATA_MEDIABROWSER = None
|
|
|
|
METADATA_PS3 = None
|
|
|
|
METADATA_WDTV = None
|
|
|
|
METADATA_TIVO = None
|
|
|
|
METADATA_MEDE8ER = None
|
|
|
|
METADATA_KODI = None
|
|
|
|
|
|
|
|
QUALITY_DEFAULT = None
|
|
|
|
STATUS_DEFAULT = None
|
|
|
|
WANTED_BEGIN_DEFAULT = None
|
|
|
|
WANTED_LATEST_DEFAULT = None
|
|
|
|
FLATTEN_FOLDERS_DEFAULT = False
|
|
|
|
SUBTITLES_DEFAULT = False
|
|
|
|
INDEXER_DEFAULT = None
|
|
|
|
INDEXER_TIMEOUT = None
|
|
|
|
SCENE_DEFAULT = False
|
|
|
|
ANIME_DEFAULT = False
|
|
|
|
USE_IMDB_INFO = True
|
|
|
|
IMDB_ACCOUNTS = []
|
|
|
|
IMDB_DEFAULT_LIST_ID = '64552276'
|
|
|
|
IMDB_DEFAULT_LIST_NAME = 'SickGear'
|
|
|
|
PROVIDER_ORDER = []
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
PROVIDER_HOMES = {}
|
|
|
|
|
|
|
|
NAMING_MULTI_EP = False
|
|
|
|
NAMING_ANIME_MULTI_EP = False
|
|
|
|
NAMING_PATTERN = None
|
|
|
|
NAMING_ABD_PATTERN = None
|
|
|
|
NAMING_CUSTOM_ABD = False
|
|
|
|
NAMING_SPORTS_PATTERN = None
|
|
|
|
NAMING_CUSTOM_SPORTS = False
|
|
|
|
NAMING_ANIME_PATTERN = None
|
|
|
|
NAMING_CUSTOM_ANIME = False
|
|
|
|
NAMING_FORCE_FOLDERS = False
|
|
|
|
NAMING_STRIP_YEAR = False
|
|
|
|
NAMING_ANIME = None
|
|
|
|
|
|
|
|
USE_NZBS = False
|
|
|
|
USE_TORRENTS = False
|
|
|
|
|
|
|
|
NZB_METHOD = None
|
|
|
|
NZB_DIR = None
|
|
|
|
USENET_RETENTION = None
|
|
|
|
TORRENT_METHOD = None
|
|
|
|
TORRENT_DIR = None
|
|
|
|
DOWNLOAD_PROPERS = False
|
|
|
|
CHECK_PROPERS_INTERVAL = None
|
|
|
|
ALLOW_HIGH_PRIORITY = False
|
|
|
|
|
|
|
|
AUTOPOSTPROCESSER_FREQUENCY = None
|
|
|
|
RECENTSEARCH_FREQUENCY = None
|
|
|
|
UPDATE_FREQUENCY = None
|
|
|
|
RECENTSEARCH_STARTUP = False
|
|
|
|
BACKLOG_FREQUENCY = None
|
|
|
|
BACKLOG_STARTUP = False
|
|
|
|
|
|
|
|
DEFAULT_AUTOPOSTPROCESSER_FREQUENCY = 10
|
|
|
|
DEFAULT_RECENTSEARCH_FREQUENCY = 40
|
|
|
|
DEFAULT_BACKLOG_FREQUENCY = 21
|
|
|
|
DEFAULT_UPDATE_FREQUENCY = 1
|
|
|
|
|
|
|
|
MIN_AUTOPOSTPROCESSER_FREQUENCY = 1
|
|
|
|
MIN_RECENTSEARCH_FREQUENCY = 10
|
|
|
|
MIN_BACKLOG_FREQUENCY = 2
|
|
|
|
MAX_BACKLOG_FREQUENCY = 35
|
|
|
|
MIN_UPDATE_FREQUENCY = 1
|
|
|
|
|
|
|
|
BACKLOG_DAYS = 7
|
|
|
|
SEARCH_UNAIRED = False
|
|
|
|
|
|
|
|
ADD_SHOWS_WO_DIR = False
|
|
|
|
CREATE_MISSING_SHOW_DIRS = False
|
|
|
|
RENAME_EPISODES = False
|
|
|
|
AIRDATE_EPISODES = False
|
|
|
|
PROCESS_AUTOMATICALLY = False
|
|
|
|
KEEP_PROCESSED_DIR = False
|
|
|
|
PROCESS_METHOD = None
|
|
|
|
MOVE_ASSOCIATED_FILES = False
|
|
|
|
POSTPONE_IF_SYNC_FILES = True
|
|
|
|
NFO_RENAME = True
|
|
|
|
TV_DOWNLOAD_DIR = None
|
|
|
|
UNPACK = False
|
|
|
|
SKIP_REMOVED_FILES = False
|
|
|
|
|
|
|
|
SAB_USERNAME = None
|
|
|
|
SAB_PASSWORD = None
|
|
|
|
SAB_APIKEY = None
|
|
|
|
SAB_CATEGORY = None
|
|
|
|
SAB_HOST = ''
|
|
|
|
|
|
|
|
NZBGET_USERNAME = None
|
|
|
|
NZBGET_PASSWORD = None
|
|
|
|
NZBGET_CATEGORY = None
|
|
|
|
NZBGET_HOST = None
|
|
|
|
NZBGET_USE_HTTPS = False
|
|
|
|
NZBGET_PRIORITY = 100
|
|
|
|
|
|
|
|
TORRENT_USERNAME = None
|
|
|
|
TORRENT_PASSWORD = None
|
|
|
|
TORRENT_HOST = ''
|
|
|
|
TORRENT_PATH = ''
|
|
|
|
TORRENT_SEED_TIME = None
|
|
|
|
TORRENT_PAUSED = False
|
|
|
|
TORRENT_HIGH_BANDWIDTH = False
|
|
|
|
TORRENT_LABEL = ''
|
|
|
|
TORRENT_VERIFY_CERT = False
|
|
|
|
|
|
|
|
USE_EMBY = False
|
|
|
|
EMBY_UPDATE_LIBRARY = False
|
|
|
|
EMBY_HOST = None
|
|
|
|
EMBY_APIKEY = None
|
|
|
|
|
|
|
|
USE_KODI = False
|
|
|
|
KODI_ALWAYS_ON = True
|
|
|
|
KODI_NOTIFY_ONSNATCH = False
|
|
|
|
KODI_NOTIFY_ONDOWNLOAD = False
|
|
|
|
KODI_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
KODI_UPDATE_LIBRARY = False
|
|
|
|
KODI_UPDATE_FULL = False
|
|
|
|
KODI_UPDATE_ONLYFIRST = False
|
|
|
|
KODI_HOST = ''
|
|
|
|
KODI_USERNAME = None
|
|
|
|
KODI_PASSWORD = None
|
|
|
|
|
|
|
|
USE_XBMC = False
|
|
|
|
XBMC_ALWAYS_ON = True
|
|
|
|
XBMC_NOTIFY_ONSNATCH = False
|
|
|
|
XBMC_NOTIFY_ONDOWNLOAD = False
|
|
|
|
XBMC_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
XBMC_UPDATE_LIBRARY = False
|
|
|
|
XBMC_UPDATE_FULL = False
|
|
|
|
XBMC_UPDATE_ONLYFIRST = False
|
|
|
|
XBMC_HOST = ''
|
|
|
|
XBMC_USERNAME = None
|
|
|
|
XBMC_PASSWORD = None
|
|
|
|
|
|
|
|
USE_PLEX = False
|
|
|
|
PLEX_NOTIFY_ONSNATCH = False
|
|
|
|
PLEX_NOTIFY_ONDOWNLOAD = False
|
|
|
|
PLEX_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
PLEX_UPDATE_LIBRARY = False
|
|
|
|
PLEX_SERVER_HOST = None
|
|
|
|
PLEX_HOST = None
|
|
|
|
PLEX_USERNAME = None
|
|
|
|
PLEX_PASSWORD = None
|
|
|
|
|
|
|
|
USE_GROWL = False
|
|
|
|
GROWL_NOTIFY_ONSNATCH = False
|
|
|
|
GROWL_NOTIFY_ONDOWNLOAD = False
|
|
|
|
GROWL_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
GROWL_HOST = ''
|
|
|
|
GROWL_PASSWORD = None
|
|
|
|
|
|
|
|
USE_PROWL = False
|
|
|
|
PROWL_NOTIFY_ONSNATCH = False
|
|
|
|
PROWL_NOTIFY_ONDOWNLOAD = False
|
|
|
|
PROWL_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
PROWL_API = None
|
|
|
|
PROWL_PRIORITY = 0
|
|
|
|
|
|
|
|
USE_TWITTER = False
|
|
|
|
TWITTER_NOTIFY_ONSNATCH = False
|
|
|
|
TWITTER_NOTIFY_ONDOWNLOAD = False
|
|
|
|
TWITTER_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
TWITTER_USERNAME = None
|
|
|
|
TWITTER_PASSWORD = None
|
|
|
|
TWITTER_PREFIX = None
|
|
|
|
|
|
|
|
USE_BOXCAR2 = False
|
|
|
|
BOXCAR2_NOTIFY_ONSNATCH = False
|
|
|
|
BOXCAR2_NOTIFY_ONDOWNLOAD = False
|
|
|
|
BOXCAR2_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
BOXCAR2_ACCESSTOKEN = None
|
|
|
|
BOXCAR2_SOUND = None
|
|
|
|
|
|
|
|
USE_PUSHOVER = False
|
|
|
|
PUSHOVER_NOTIFY_ONSNATCH = False
|
|
|
|
PUSHOVER_NOTIFY_ONDOWNLOAD = False
|
|
|
|
PUSHOVER_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
PUSHOVER_USERKEY = None
|
|
|
|
PUSHOVER_APIKEY = None
|
|
|
|
PUSHOVER_PRIORITY = 0
|
|
|
|
PUSHOVER_DEVICE = None
|
|
|
|
PUSHOVER_SOUND = None
|
|
|
|
|
|
|
|
USE_LIBNOTIFY = False
|
|
|
|
LIBNOTIFY_NOTIFY_ONSNATCH = False
|
|
|
|
LIBNOTIFY_NOTIFY_ONDOWNLOAD = False
|
|
|
|
LIBNOTIFY_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
|
|
|
|
USE_NMJ = False
|
|
|
|
NMJ_HOST = None
|
|
|
|
NMJ_DATABASE = None
|
|
|
|
NMJ_MOUNT = None
|
|
|
|
|
|
|
|
USE_ANIDB = False
|
|
|
|
ANIDB_USERNAME = None
|
|
|
|
ANIDB_PASSWORD = None
|
|
|
|
ANIDB_USE_MYLIST = False
|
|
|
|
ADBA_CONNECTION = None
|
|
|
|
ANIME_TREAT_AS_HDTV = False
|
|
|
|
|
|
|
|
USE_SYNOINDEX = False
|
|
|
|
|
|
|
|
USE_NMJv2 = False
|
|
|
|
NMJv2_HOST = None
|
|
|
|
NMJv2_DATABASE = None
|
|
|
|
NMJv2_DBLOC = None
|
|
|
|
|
|
|
|
USE_SYNOLOGYNOTIFIER = False
|
|
|
|
SYNOLOGYNOTIFIER_NOTIFY_ONSNATCH = False
|
|
|
|
SYNOLOGYNOTIFIER_NOTIFY_ONDOWNLOAD = False
|
|
|
|
SYNOLOGYNOTIFIER_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
|
|
|
|
USE_TRAKT = False
|
|
|
|
TRAKT_REMOVE_WATCHLIST = False
|
|
|
|
TRAKT_REMOVE_SERIESLIST = False
|
|
|
|
TRAKT_USE_WATCHLIST = False
|
|
|
|
TRAKT_METHOD_ADD = 0
|
|
|
|
TRAKT_START_PAUSED = False
|
|
|
|
TRAKT_SYNC = False
|
|
|
|
TRAKT_DEFAULT_INDEXER = None
|
|
|
|
TRAKT_UPDATE_COLLECTION = {}
|
|
|
|
|
|
|
|
USE_PYTIVO = False
|
|
|
|
PYTIVO_NOTIFY_ONSNATCH = False
|
|
|
|
PYTIVO_NOTIFY_ONDOWNLOAD = False
|
|
|
|
PYTIVO_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
PYTIVO_UPDATE_LIBRARY = False
|
|
|
|
PYTIVO_HOST = ''
|
|
|
|
PYTIVO_SHARE_NAME = ''
|
|
|
|
PYTIVO_TIVO_NAME = ''
|
|
|
|
|
|
|
|
USE_NMA = False
|
|
|
|
NMA_NOTIFY_ONSNATCH = False
|
|
|
|
NMA_NOTIFY_ONDOWNLOAD = False
|
|
|
|
NMA_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
NMA_API = None
|
|
|
|
NMA_PRIORITY = 0
|
|
|
|
|
|
|
|
USE_PUSHALOT = False
|
|
|
|
PUSHALOT_NOTIFY_ONSNATCH = False
|
|
|
|
PUSHALOT_NOTIFY_ONDOWNLOAD = False
|
|
|
|
PUSHALOT_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
PUSHALOT_AUTHORIZATIONTOKEN = None
|
|
|
|
|
|
|
|
USE_PUSHBULLET = False
|
|
|
|
PUSHBULLET_NOTIFY_ONSNATCH = False
|
|
|
|
PUSHBULLET_NOTIFY_ONDOWNLOAD = False
|
|
|
|
PUSHBULLET_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
PUSHBULLET_ACCESS_TOKEN = None
|
|
|
|
PUSHBULLET_DEVICE_IDEN = None
|
|
|
|
|
|
|
|
USE_EMAIL = False
|
|
|
|
EMAIL_OLD_SUBJECTS = None
|
|
|
|
EMAIL_NOTIFY_ONSNATCH = False
|
|
|
|
EMAIL_NOTIFY_ONDOWNLOAD = False
|
|
|
|
EMAIL_NOTIFY_ONSUBTITLEDOWNLOAD = False
|
|
|
|
EMAIL_HOST = None
|
|
|
|
EMAIL_PORT = 25
|
|
|
|
EMAIL_TLS = False
|
|
|
|
EMAIL_USER = None
|
|
|
|
EMAIL_PASSWORD = None
|
|
|
|
EMAIL_FROM = None
|
|
|
|
EMAIL_LIST = None
|
|
|
|
|
|
|
|
GUI_NAME = None
|
|
|
|
DEFAULT_HOME = None
|
|
|
|
HOME_LAYOUT = None
|
|
|
|
HISTORY_LAYOUT = None
|
|
|
|
DISPLAY_SHOW_SPECIALS = False
|
|
|
|
EPISODE_VIEW_LAYOUT = None
|
|
|
|
EPISODE_VIEW_SORT = None
|
|
|
|
EPISODE_VIEW_DISPLAY_PAUSED = False
|
|
|
|
EPISODE_VIEW_MISSED_RANGE = None
|
|
|
|
FUZZY_DATING = False
|
|
|
|
TRIM_ZERO = False
|
|
|
|
DATE_PRESET = None
|
|
|
|
TIME_PRESET = None
|
|
|
|
TIME_PRESET_W_SECONDS = None
|
|
|
|
TIMEZONE_DISPLAY = None
|
|
|
|
THEME_NAME = None
|
|
|
|
POSTER_SORTBY = None
|
|
|
|
POSTER_SORTDIR = None
|
|
|
|
|
|
|
|
USE_SUBTITLES = False
|
|
|
|
SUBTITLES_LANGUAGES = []
|
|
|
|
SUBTITLES_DIR = ''
|
|
|
|
SUBTITLES_SERVICES_LIST = []
|
|
|
|
SUBTITLES_SERVICES_ENABLED = []
|
|
|
|
SUBTITLES_HISTORY = False
|
|
|
|
SUBTITLES_FINDER_FREQUENCY = 1
|
|
|
|
|
|
|
|
USE_FAILED_DOWNLOADS = False
|
|
|
|
DELETE_FAILED = False
|
|
|
|
|
|
|
|
EXTRA_SCRIPTS = []
|
|
|
|
|
|
|
|
GIT_PATH = None
|
|
|
|
|
|
|
|
IGNORE_WORDS = 'core2hd, hevc, MrLss, reenc, x265, danish, deutsch, dutch, flemish, french, german, italian, nordic, norwegian, portuguese, spanish, swedish, turkish'
|
|
|
|
REQUIRE_WORDS = ''
|
|
|
|
|
|
|
|
CALENDAR_UNPROTECTED = False
|
|
|
|
|
|
|
|
TMDB_API_KEY = 'edc5f123313769de83a71e157758030b'
|
|
|
|
|
|
|
|
# to switch between staging and production TRAKT environment
|
|
|
|
TRAKT_STAGING = False
|
|
|
|
|
|
|
|
TRAKT_TIMEOUT = 60
|
|
|
|
TRAKT_VERIFY = True
|
|
|
|
TRAKT_CONNECTED_ACCOUNT = None
|
|
|
|
TRAKT_ACCOUNTS = {}
|
|
|
|
TRAKT_MRU = ''
|
|
|
|
|
|
|
|
if TRAKT_STAGING:
|
|
|
|
# staging trakt values:
|
|
|
|
TRAKT_CLIENT_ID = '2aae3052f90b14235d184cc8f709b12b4fd8ae35f339a060a890c70db92be87a'
|
|
|
|
TRAKT_CLIENT_SECRET = '900e03471220503843d4a856bfbef17080cddb630f2b7df6a825e96e3ff3c39e'
|
|
|
|
TRAKT_PIN_URL = 'https://staging.trakt.tv/pin/638'
|
|
|
|
TRAKT_BASE_URL = 'http://api.staging.trakt.tv/'
|
|
|
|
else:
|
|
|
|
# production trakt values:
|
|
|
|
TRAKT_CLIENT_ID = 'f1c453c67d81f1307f9118172c408a883eb186b094d5ea33080d59ddedb7fc7c'
|
|
|
|
TRAKT_CLIENT_SECRET = '12efb6fb6e863a08934d9904032a90008325df7e23514650cade55e7e7c118c5'
|
|
|
|
TRAKT_PIN_URL = 'https://trakt.tv/pin/6314'
|
|
|
|
TRAKT_BASE_URL = 'https://api-v2launch.trakt.tv/'
|
|
|
|
|
|
|
|
COOKIE_SECRET = base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes)
|
|
|
|
|
|
|
|
__INITIALIZED__ = False
|
|
|
|
|
|
|
|
|
|
|
|
def get_backlog_cycle_time():
|
|
|
|
cycletime = RECENTSEARCH_FREQUENCY * 2 + 7
|
|
|
|
return max([cycletime, 720])
|
|
|
|
|
|
|
|
|
|
|
|
def initialize(consoleLogging=True):
|
|
|
|
with INIT_LOCK:
|
|
|
|
|
|
|
|
global BRANCH, GIT_REMOTE, CUR_COMMIT_HASH, CUR_COMMIT_BRANCH, ACTUAL_LOG_DIR, LOG_DIR, FILE_LOGGING_PRESET, WEB_PORT, WEB_LOG, ENCRYPTION_VERSION, WEB_ROOT, WEB_USERNAME, WEB_PASSWORD, WEB_HOST, WEB_IPV6, USE_API, API_KEY, ENABLE_HTTPS, HTTPS_CERT, HTTPS_KEY, \
|
|
|
|
HANDLE_REVERSE_PROXY, USE_NZBS, USE_TORRENTS, NZB_METHOD, NZB_DIR, DOWNLOAD_PROPERS, CHECK_PROPERS_INTERVAL, ALLOW_HIGH_PRIORITY, TORRENT_METHOD, \
|
|
|
|
SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_HOST, \
|
|
|
|
NZBGET_USERNAME, NZBGET_PASSWORD, NZBGET_CATEGORY, NZBGET_PRIORITY, NZBGET_HOST, NZBGET_USE_HTTPS, backlogSearchScheduler, \
|
|
|
|
TORRENT_USERNAME, TORRENT_PASSWORD, TORRENT_HOST, TORRENT_PATH, TORRENT_SEED_TIME, TORRENT_PAUSED, TORRENT_HIGH_BANDWIDTH, TORRENT_LABEL, TORRENT_VERIFY_CERT, \
|
|
|
|
USE_EMBY, EMBY_UPDATE_LIBRARY, EMBY_HOST, EMBY_APIKEY, \
|
|
|
|
USE_KODI, KODI_ALWAYS_ON, KODI_NOTIFY_ONSNATCH, KODI_NOTIFY_ONDOWNLOAD, KODI_NOTIFY_ONSUBTITLEDOWNLOAD,\
|
|
|
|
KODI_UPDATE_FULL, KODI_UPDATE_ONLYFIRST, KODI_UPDATE_LIBRARY, KODI_HOST, KODI_USERNAME, KODI_PASSWORD, \
|
|
|
|
USE_XBMC, XBMC_ALWAYS_ON, XBMC_NOTIFY_ONSNATCH, XBMC_NOTIFY_ONDOWNLOAD, XBMC_NOTIFY_ONSUBTITLEDOWNLOAD,\
|
|
|
|
XBMC_UPDATE_FULL, XBMC_UPDATE_ONLYFIRST, XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, \
|
|
|
|
USE_PLEX, PLEX_NOTIFY_ONSNATCH, PLEX_NOTIFY_ONDOWNLOAD, PLEX_NOTIFY_ONSUBTITLEDOWNLOAD, \
|
|
|
|
PLEX_UPDATE_LIBRARY, PLEX_SERVER_HOST, PLEX_HOST, PLEX_USERNAME, PLEX_PASSWORD, \
|
|
|
|
USE_TRAKT, TRAKT_CONNECTED_ACCOUNT, TRAKT_ACCOUNTS, TRAKT_MRU, TRAKT_VERIFY, TRAKT_REMOVE_WATCHLIST, TRAKT_TIMEOUT, TRAKT_USE_WATCHLIST, TRAKT_METHOD_ADD, TRAKT_START_PAUSED, traktCheckerScheduler, TRAKT_SYNC, TRAKT_DEFAULT_INDEXER, TRAKT_REMOVE_SERIESLIST, TRAKT_UPDATE_COLLECTION, \
|
|
|
|
BACKLOG_FREQUENCY, DEFAULT_BACKLOG_FREQUENCY, MIN_BACKLOG_FREQUENCY, MAX_BACKLOG_FREQUENCY, BACKLOG_STARTUP, SKIP_REMOVED_FILES, \
|
|
|
|
showUpdateScheduler, __INITIALIZED__, LAUNCH_BROWSER, TRASH_REMOVE_SHOW, TRASH_ROTATE_LOGS, HOME_SEARCH_FOCUS, SORT_ARTICLE, showList, loadingShowList, UPDATE_SHOWS_ON_START, SHOW_UPDATE_HOUR, ALLOW_INCOMPLETE_SHOWDATA, \
|
|
|
|
NEWZNAB_DATA, INDEXER_DEFAULT, INDEXER_TIMEOUT, USENET_RETENTION, TORRENT_DIR, \
|
|
|
|
QUALITY_DEFAULT, FLATTEN_FOLDERS_DEFAULT, SUBTITLES_DEFAULT, STATUS_DEFAULT, WANTED_BEGIN_DEFAULT, WANTED_LATEST_DEFAULT, RECENTSEARCH_STARTUP, \
|
|
|
|
GROWL_NOTIFY_ONSNATCH, GROWL_NOTIFY_ONDOWNLOAD, GROWL_NOTIFY_ONSUBTITLEDOWNLOAD, TWITTER_NOTIFY_ONSNATCH, TWITTER_NOTIFY_ONDOWNLOAD, TWITTER_NOTIFY_ONSUBTITLEDOWNLOAD, \
|
|
|
|
USE_GROWL, GROWL_HOST, GROWL_PASSWORD, USE_PROWL, PROWL_NOTIFY_ONSNATCH, PROWL_NOTIFY_ONDOWNLOAD, PROWL_NOTIFY_ONSUBTITLEDOWNLOAD, PROWL_API, PROWL_PRIORITY, PROG_DIR, \
|
|
|
|
USE_PYTIVO, PYTIVO_NOTIFY_ONSNATCH, PYTIVO_NOTIFY_ONDOWNLOAD, PYTIVO_NOTIFY_ONSUBTITLEDOWNLOAD, PYTIVO_UPDATE_LIBRARY, PYTIVO_HOST, PYTIVO_SHARE_NAME, PYTIVO_TIVO_NAME, \
|
|
|
|
USE_NMA, NMA_NOTIFY_ONSNATCH, NMA_NOTIFY_ONDOWNLOAD, NMA_NOTIFY_ONSUBTITLEDOWNLOAD, NMA_API, NMA_PRIORITY, \
|
|
|
|
USE_PUSHALOT, PUSHALOT_NOTIFY_ONSNATCH, PUSHALOT_NOTIFY_ONDOWNLOAD, PUSHALOT_NOTIFY_ONSUBTITLEDOWNLOAD, PUSHALOT_AUTHORIZATIONTOKEN, \
|
|
|
|
USE_PUSHBULLET, PUSHBULLET_NOTIFY_ONSNATCH, PUSHBULLET_NOTIFY_ONDOWNLOAD, PUSHBULLET_NOTIFY_ONSUBTITLEDOWNLOAD, PUSHBULLET_ACCESS_TOKEN, PUSHBULLET_DEVICE_IDEN, \
|
|
|
|
versionCheckScheduler, VERSION_NOTIFY, AUTO_UPDATE, NOTIFY_ON_UPDATE, PROCESS_AUTOMATICALLY, UNPACK, CPU_PRESET, \
|
|
|
|
KEEP_PROCESSED_DIR, PROCESS_METHOD, TV_DOWNLOAD_DIR, MIN_RECENTSEARCH_FREQUENCY, DEFAULT_UPDATE_FREQUENCY, MIN_UPDATE_FREQUENCY, UPDATE_FREQUENCY, \
|
|
|
|
showQueueScheduler, searchQueueScheduler, ROOT_DIRS, CACHE_DIR, ACTUAL_CACHE_DIR, ZONEINFO_DIR, TIMEZONE_DISPLAY, \
|
|
|
|
NAMING_PATTERN, NAMING_MULTI_EP, NAMING_ANIME_MULTI_EP, NAMING_FORCE_FOLDERS, NAMING_ABD_PATTERN, NAMING_CUSTOM_ABD, NAMING_SPORTS_PATTERN, NAMING_CUSTOM_SPORTS, NAMING_ANIME_PATTERN, NAMING_CUSTOM_ANIME, NAMING_STRIP_YEAR, \
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
RENAME_EPISODES, AIRDATE_EPISODES, properFinderScheduler, PROVIDER_ORDER, PROVIDER_HOMES, autoPostProcesserScheduler, \
|
|
|
|
providerList, newznabProviderList, torrentRssProviderList, \
|
|
|
|
EXTRA_SCRIPTS, USE_TWITTER, TWITTER_USERNAME, TWITTER_PASSWORD, TWITTER_PREFIX, RECENTSEARCH_FREQUENCY, \
|
|
|
|
USE_BOXCAR2, BOXCAR2_ACCESSTOKEN, BOXCAR2_NOTIFY_ONDOWNLOAD, BOXCAR2_NOTIFY_ONSUBTITLEDOWNLOAD, BOXCAR2_NOTIFY_ONSNATCH, BOXCAR2_SOUND, \
|
|
|
|
USE_PUSHOVER, PUSHOVER_USERKEY, PUSHOVER_APIKEY, PUSHOVER_NOTIFY_ONDOWNLOAD, PUSHOVER_NOTIFY_ONSUBTITLEDOWNLOAD, PUSHOVER_NOTIFY_ONSNATCH, PUSHOVER_PRIORITY, PUSHOVER_DEVICE, PUSHOVER_SOUND, \
|
|
|
|
USE_LIBNOTIFY, LIBNOTIFY_NOTIFY_ONSNATCH, LIBNOTIFY_NOTIFY_ONDOWNLOAD, LIBNOTIFY_NOTIFY_ONSUBTITLEDOWNLOAD, USE_NMJ, NMJ_HOST, NMJ_DATABASE, NMJ_MOUNT, USE_NMJv2, NMJv2_HOST, NMJv2_DATABASE, NMJv2_DBLOC, USE_SYNOINDEX, \
|
|
|
|
USE_SYNOLOGYNOTIFIER, SYNOLOGYNOTIFIER_NOTIFY_ONSNATCH, SYNOLOGYNOTIFIER_NOTIFY_ONDOWNLOAD, SYNOLOGYNOTIFIER_NOTIFY_ONSUBTITLEDOWNLOAD, \
|
|
|
|
USE_EMAIL, EMAIL_OLD_SUBJECTS, EMAIL_HOST, EMAIL_PORT, EMAIL_TLS, EMAIL_USER, EMAIL_PASSWORD, EMAIL_FROM, EMAIL_NOTIFY_ONSNATCH, EMAIL_NOTIFY_ONDOWNLOAD, EMAIL_NOTIFY_ONSUBTITLEDOWNLOAD, EMAIL_LIST, \
|
|
|
|
METADATA_XBMC, METADATA_XBMC_12PLUS, METADATA_MEDIABROWSER, METADATA_PS3, METADATA_KODI, metadata_provider_dict, \
|
|
|
|
GIT_PATH, MOVE_ASSOCIATED_FILES, POSTPONE_IF_SYNC_FILES, recentSearchScheduler, NFO_RENAME, \
|
|
|
|
GUI_NAME, DEFAULT_HOME, HOME_LAYOUT, HISTORY_LAYOUT, DISPLAY_SHOW_SPECIALS, EPISODE_VIEW_LAYOUT, EPISODE_VIEW_SORT, EPISODE_VIEW_DISPLAY_PAUSED, EPISODE_VIEW_MISSED_RANGE, FUZZY_DATING, TRIM_ZERO, DATE_PRESET, TIME_PRESET, TIME_PRESET_W_SECONDS, THEME_NAME, \
|
|
|
|
POSTER_SORTBY, POSTER_SORTDIR, \
|
|
|
|
METADATA_WDTV, METADATA_TIVO, METADATA_MEDE8ER, IGNORE_WORDS, REQUIRE_WORDS, CALENDAR_UNPROTECTED, CREATE_MISSING_SHOW_DIRS, \
|
|
|
|
ADD_SHOWS_WO_DIR, USE_SUBTITLES, SUBTITLES_LANGUAGES, SUBTITLES_DIR, SUBTITLES_SERVICES_LIST, SUBTITLES_SERVICES_ENABLED, SUBTITLES_HISTORY, SUBTITLES_FINDER_FREQUENCY, subtitlesFinderScheduler, \
|
|
|
|
USE_FAILED_DOWNLOADS, DELETE_FAILED, ANON_REDIRECT, TMDB_API_KEY, DEBUG, PROXY_SETTING, PROXY_INDEXERS, \
|
|
|
|
AUTOPOSTPROCESSER_FREQUENCY, DEFAULT_AUTOPOSTPROCESSER_FREQUENCY, MIN_AUTOPOSTPROCESSER_FREQUENCY, \
|
|
|
|
ANIME_DEFAULT, NAMING_ANIME, USE_ANIDB, ANIDB_USERNAME, ANIDB_PASSWORD, ANIDB_USE_MYLIST, \
|
|
|
|
SCENE_DEFAULT, BACKLOG_DAYS, SEARCH_UNAIRED, ANIME_TREAT_AS_HDTV, \
|
|
|
|
COOKIE_SECRET, USE_IMDB_INFO, IMDB_ACCOUNTS, DISPLAY_BACKGROUND, DISPLAY_BACKGROUND_TRANSPARENT, DISPLAY_ALL_SEASONS, \
|
|
|
|
SHOW_TAGS, DEFAULT_SHOW_TAG, SHOWLIST_TAGVIEW
|
|
|
|
|
|
|
|
if __INITIALIZED__:
|
|
|
|
return False
|
|
|
|
|
|
|
|
CheckSection(CFG, 'General')
|
|
|
|
CheckSection(CFG, 'Blackhole')
|
|
|
|
CheckSection(CFG, 'SABnzbd')
|
|
|
|
CheckSection(CFG, 'NZBget')
|
|
|
|
CheckSection(CFG, 'Emby')
|
|
|
|
CheckSection(CFG, 'Kodi')
|
|
|
|
CheckSection(CFG, 'XBMC')
|
|
|
|
CheckSection(CFG, 'PLEX')
|
|
|
|
CheckSection(CFG, 'Growl')
|
|
|
|
CheckSection(CFG, 'Prowl')
|
|
|
|
CheckSection(CFG, 'Twitter')
|
|
|
|
CheckSection(CFG, 'Boxcar2')
|
|
|
|
CheckSection(CFG, 'NMJ')
|
|
|
|
CheckSection(CFG, 'NMJv2')
|
|
|
|
CheckSection(CFG, 'Synology')
|
|
|
|
CheckSection(CFG, 'SynologyNotifier')
|
|
|
|
CheckSection(CFG, 'pyTivo')
|
|
|
|
CheckSection(CFG, 'NMA')
|
|
|
|
CheckSection(CFG, 'Pushalot')
|
|
|
|
CheckSection(CFG, 'Pushbullet')
|
|
|
|
CheckSection(CFG, 'Subtitles')
|
|
|
|
|
|
|
|
# wanted branch
|
|
|
|
BRANCH = check_setting_str(CFG, 'General', 'branch', '')
|
|
|
|
|
|
|
|
# git_remote
|
|
|
|
GIT_REMOTE = check_setting_str(CFG, 'General', 'git_remote', 'origin')
|
|
|
|
|
|
|
|
# current commit hash
|
|
|
|
CUR_COMMIT_HASH = check_setting_str(CFG, 'General', 'cur_commit_hash', '')
|
|
|
|
|
|
|
|
# current commit branch
|
|
|
|
CUR_COMMIT_BRANCH = check_setting_str(CFG, 'General', 'cur_commit_branch', '')
|
|
|
|
|
|
|
|
ACTUAL_CACHE_DIR = check_setting_str(CFG, 'General', 'cache_dir', 'cache')
|
|
|
|
|
|
|
|
# unless they specify, put the cache dir inside the data dir
|
|
|
|
if not os.path.isabs(ACTUAL_CACHE_DIR):
|
|
|
|
CACHE_DIR = os.path.join(DATA_DIR, ACTUAL_CACHE_DIR)
|
|
|
|
else:
|
|
|
|
CACHE_DIR = ACTUAL_CACHE_DIR
|
|
|
|
|
|
|
|
if not helpers.makeDir(CACHE_DIR):
|
|
|
|
logger.log(u'!!! Creating local cache dir failed, using system default', logger.ERROR)
|
|
|
|
CACHE_DIR = None
|
|
|
|
|
|
|
|
# clean cache folders
|
|
|
|
if CACHE_DIR:
|
|
|
|
helpers.clearCache()
|
|
|
|
ZONEINFO_DIR = ek.ek(os.path.join, CACHE_DIR, 'zoneinfo')
|
|
|
|
if not ek.ek(os.path.isdir, ZONEINFO_DIR) and not helpers.make_dirs(ZONEINFO_DIR):
|
|
|
|
logger.log(u'!!! Creating local zoneinfo dir failed', logger.ERROR)
|
|
|
|
|
|
|
|
THEME_NAME = check_setting_str(CFG, 'GUI', 'theme_name', 'dark')
|
|
|
|
GUI_NAME = check_setting_str(CFG, 'GUI', 'gui_name', 'slick')
|
|
|
|
DEFAULT_HOME = check_setting_str(CFG, 'GUI', 'default_home', 'home')
|
|
|
|
USE_IMDB_INFO = bool(check_setting_int(CFG, 'GUI', 'use_imdb_info', 1))
|
|
|
|
IMDB_ACCOUNTS = CFG.get('GUI', []).get('imdb_accounts', [IMDB_DEFAULT_LIST_ID, IMDB_DEFAULT_LIST_NAME])
|
|
|
|
HOME_SEARCH_FOCUS = bool(check_setting_int(CFG, 'General', 'home_search_focus', HOME_SEARCH_FOCUS))
|
|
|
|
SORT_ARTICLE = bool(check_setting_int(CFG, 'General', 'sort_article', 0))
|
|
|
|
FUZZY_DATING = bool(check_setting_int(CFG, 'GUI', 'fuzzy_dating', 0))
|
|
|
|
TRIM_ZERO = bool(check_setting_int(CFG, 'GUI', 'trim_zero', 0))
|
|
|
|
DATE_PRESET = check_setting_str(CFG, 'GUI', 'date_preset', '%x')
|
|
|
|
TIME_PRESET_W_SECONDS = check_setting_str(CFG, 'GUI', 'time_preset', '%I:%M:%S %p')
|
|
|
|
TIME_PRESET = TIME_PRESET_W_SECONDS.replace(u':%S', u'')
|
|
|
|
TIMEZONE_DISPLAY = check_setting_str(CFG, 'GUI', 'timezone_display', 'network')
|
|
|
|
DISPLAY_BACKGROUND = bool(check_setting_int(CFG, 'General', 'display_background', 0))
|
|
|
|
DISPLAY_BACKGROUND_TRANSPARENT = check_setting_str(CFG, 'General', 'display_background_transparent', 'transparent')
|
|
|
|
DISPLAY_ALL_SEASONS = bool(check_setting_int(CFG, 'General', 'display_all_seasons', 1))
|
|
|
|
SHOW_TAGS = check_setting_str(CFG, 'GUI', 'show_tags', 'Show List').split(',')
|
|
|
|
DEFAULT_SHOW_TAG = check_setting_str(CFG, 'GUI', 'default_show_tag', 'Show List')
|
|
|
|
SHOWLIST_TAGVIEW = check_setting_str(CFG, 'GUI', 'showlist_tagview', 'standard')
|
|
|
|
|
|
|
|
ACTUAL_LOG_DIR = check_setting_str(CFG, 'General', 'log_dir', 'Logs')
|
|
|
|
# put the log dir inside the data dir, unless an absolute path
|
|
|
|
LOG_DIR = os.path.normpath(os.path.join(DATA_DIR, ACTUAL_LOG_DIR))
|
|
|
|
|
|
|
|
if not helpers.makeDir(LOG_DIR):
|
|
|
|
logger.log(u'!!! No log folder, logging to screen only!', logger.ERROR)
|
|
|
|
|
|
|
|
FILE_LOGGING_PRESET = check_setting_str(CFG, 'General', 'file_logging_preset', 'DB')
|
|
|
|
|
|
|
|
SOCKET_TIMEOUT = check_setting_int(CFG, 'General', 'socket_timeout', 30)
|
|
|
|
socket.setdefaulttimeout(SOCKET_TIMEOUT)
|
|
|
|
|
|
|
|
try:
|
|
|
|
WEB_PORT = check_setting_int(CFG, 'General', 'web_port', 8081)
|
|
|
|
except:
|
|
|
|
WEB_PORT = 8081
|
|
|
|
|
|
|
|
if WEB_PORT < 21 or WEB_PORT > 65535:
|
|
|
|
WEB_PORT = 8081
|
|
|
|
|
|
|
|
WEB_HOST = check_setting_str(CFG, 'General', 'web_host', '0.0.0.0')
|
|
|
|
WEB_IPV6 = bool(check_setting_int(CFG, 'General', 'web_ipv6', 0))
|
|
|
|
WEB_ROOT = check_setting_str(CFG, 'General', 'web_root', '').rstrip('/')
|
|
|
|
WEB_LOG = bool(check_setting_int(CFG, 'General', 'web_log', 0))
|
|
|
|
ENCRYPTION_VERSION = check_setting_int(CFG, 'General', 'encryption_version', 0)
|
|
|
|
WEB_USERNAME = check_setting_str(CFG, 'General', 'web_username', '')
|
|
|
|
WEB_PASSWORD = check_setting_str(CFG, 'General', 'web_password', '')
|
|
|
|
LAUNCH_BROWSER = bool(check_setting_int(CFG, 'General', 'launch_browser', 1))
|
|
|
|
|
|
|
|
CPU_PRESET = check_setting_str(CFG, 'General', 'cpu_preset', 'NORMAL')
|
|
|
|
|
|
|
|
ANON_REDIRECT = check_setting_str(CFG, 'General', 'anon_redirect', '')
|
|
|
|
PROXY_SETTING = check_setting_str(CFG, 'General', 'proxy_setting', '')
|
|
|
|
PROXY_INDEXERS = bool(check_setting_int(CFG, 'General', 'proxy_indexers', 1))
|
|
|
|
# attempt to help prevent users from breaking links by using a bad url
|
|
|
|
if not ANON_REDIRECT.endswith('?'):
|
|
|
|
ANON_REDIRECT = ''
|
|
|
|
|
|
|
|
UPDATE_SHOWS_ON_START = bool(check_setting_int(CFG, 'General', 'update_shows_on_start', 0))
|
|
|
|
SHOW_UPDATE_HOUR = check_setting_int(CFG, 'General', 'show_update_hour', 3)
|
|
|
|
SHOW_UPDATE_HOUR = minimax(SHOW_UPDATE_HOUR, 3, 0, 23)
|
|
|
|
ALLOW_INCOMPLETE_SHOWDATA = bool(check_setting_int(CFG, 'General', 'allow_incomplete_showdata', 0))
|
|
|
|
|
|
|
|
TRASH_REMOVE_SHOW = bool(check_setting_int(CFG, 'General', 'trash_remove_show', 0))
|
|
|
|
TRASH_ROTATE_LOGS = bool(check_setting_int(CFG, 'General', 'trash_rotate_logs', 0))
|
|
|
|
|
|
|
|
USE_API = bool(check_setting_int(CFG, 'General', 'use_api', 0))
|
|
|
|
API_KEY = check_setting_str(CFG, 'General', 'api_key', '')
|
|
|
|
|
|
|
|
DEBUG = bool(check_setting_int(CFG, 'General', 'debug', 0))
|
|
|
|
|
|
|
|
ENABLE_HTTPS = bool(check_setting_int(CFG, 'General', 'enable_https', 0))
|
|
|
|
|
|
|
|
HTTPS_CERT = check_setting_str(CFG, 'General', 'https_cert', 'server.crt')
|
|
|
|
HTTPS_KEY = check_setting_str(CFG, 'General', 'https_key', 'server.key')
|
|
|
|
|
|
|
|
HANDLE_REVERSE_PROXY = bool(check_setting_int(CFG, 'General', 'handle_reverse_proxy', 0))
|
|
|
|
|
|
|
|
ROOT_DIRS = check_setting_str(CFG, 'General', 'root_dirs', '')
|
|
|
|
if not re.match(r'\d+\|[^|]+(?:\|[^|]+)*', ROOT_DIRS):
|
|
|
|
ROOT_DIRS = ''
|
|
|
|
|
|
|
|
QUALITY_DEFAULT = check_setting_int(CFG, 'General', 'quality_default', SD)
|
|
|
|
STATUS_DEFAULT = check_setting_int(CFG, 'General', 'status_default', SKIPPED)
|
|
|
|
WANTED_BEGIN_DEFAULT = check_setting_int(CFG, 'General', 'wanted_begin_default', 0)
|
|
|
|
WANTED_LATEST_DEFAULT = check_setting_int(CFG, 'General', 'wanted_latest_default', 0)
|
|
|
|
VERSION_NOTIFY = bool(check_setting_int(CFG, 'General', 'version_notify', 1))
|
|
|
|
AUTO_UPDATE = bool(check_setting_int(CFG, 'General', 'auto_update', 0))
|
|
|
|
NOTIFY_ON_UPDATE = bool(check_setting_int(CFG, 'General', 'notify_on_update', 1))
|
|
|
|
FLATTEN_FOLDERS_DEFAULT = bool(check_setting_int(CFG, 'General', 'flatten_folders_default', 0))
|
|
|
|
INDEXER_DEFAULT = check_setting_int(CFG, 'General', 'indexer_default', 0)
|
|
|
|
if INDEXER_DEFAULT and not indexerApi(INDEXER_DEFAULT).config['active']:
|
|
|
|
INDEXER_DEFAULT = INDEXER_TVDB
|
|
|
|
INDEXER_TIMEOUT = check_setting_int(CFG, 'General', 'indexer_timeout', 20)
|
|
|
|
ANIME_DEFAULT = bool(check_setting_int(CFG, 'General', 'anime_default', 0))
|
|
|
|
SCENE_DEFAULT = bool(check_setting_int(CFG, 'General', 'scene_default', 0))
|
|
|
|
|
|
|
|
PROVIDER_ORDER = check_setting_str(CFG, 'General', 'provider_order', '').split()
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
PROVIDER_HOMES = ast.literal_eval(check_setting_str(CFG, 'General', 'provider_homes', None) or '{}')
|
|
|
|
|
|
|
|
NAMING_PATTERN = check_setting_str(CFG, 'General', 'naming_pattern', 'Season %0S/%SN - S%0SE%0E - %EN')
|
|
|
|
NAMING_ABD_PATTERN = check_setting_str(CFG, 'General', 'naming_abd_pattern', '%SN - %A.D - %EN')
|
|
|
|
NAMING_CUSTOM_ABD = bool(check_setting_int(CFG, 'General', 'naming_custom_abd', 0))
|
|
|
|
NAMING_SPORTS_PATTERN = check_setting_str(CFG, 'General', 'naming_sports_pattern', '%SN - %A-D - %EN')
|
|
|
|
NAMING_ANIME_PATTERN = check_setting_str(CFG, 'General', 'naming_anime_pattern', 'Season %0S/%SN - S%0SE%0E - %EN')
|
|
|
|
NAMING_ANIME = check_setting_int(CFG, 'General', 'naming_anime', 3)
|
|
|
|
NAMING_CUSTOM_SPORTS = bool(check_setting_int(CFG, 'General', 'naming_custom_sports', 0))
|
|
|
|
NAMING_CUSTOM_ANIME = bool(check_setting_int(CFG, 'General', 'naming_custom_anime', 0))
|
|
|
|
NAMING_MULTI_EP = check_setting_int(CFG, 'General', 'naming_multi_ep', 1)
|
|
|
|
NAMING_ANIME_MULTI_EP = check_setting_int(CFG, 'General', 'naming_anime_multi_ep', 1)
|
|
|
|
NAMING_FORCE_FOLDERS = naming.check_force_season_folders()
|
|
|
|
NAMING_STRIP_YEAR = bool(check_setting_int(CFG, 'General', 'naming_strip_year', 0))
|
|
|
|
|
|
|
|
USE_NZBS = bool(check_setting_int(CFG, 'General', 'use_nzbs', 0))
|
|
|
|
USE_TORRENTS = bool(check_setting_int(CFG, 'General', 'use_torrents', 1))
|
|
|
|
|
|
|
|
NZB_METHOD = check_setting_str(CFG, 'General', 'nzb_method', 'blackhole')
|
|
|
|
if NZB_METHOD not in ('blackhole', 'sabnzbd', 'nzbget'):
|
|
|
|
NZB_METHOD = 'blackhole'
|
|
|
|
|
|
|
|
TORRENT_METHOD = check_setting_str(CFG, 'General', 'torrent_method', 'blackhole')
|
|
|
|
if TORRENT_METHOD not in ('blackhole', 'utorrent', 'transmission', 'deluge', 'download_station', 'rtorrent'):
|
|
|
|
TORRENT_METHOD = 'blackhole'
|
|
|
|
|
|
|
|
DOWNLOAD_PROPERS = bool(check_setting_int(CFG, 'General', 'download_propers', 1))
|
|
|
|
CHECK_PROPERS_INTERVAL = check_setting_str(CFG, 'General', 'check_propers_interval', '')
|
|
|
|
if CHECK_PROPERS_INTERVAL not in ('15m', '45m', '90m', '4h', 'daily'):
|
|
|
|
CHECK_PROPERS_INTERVAL = 'daily'
|
|
|
|
|
|
|
|
ALLOW_HIGH_PRIORITY = bool(check_setting_int(CFG, 'General', 'allow_high_priority', 1))
|
|
|
|
|
|
|
|
RECENTSEARCH_STARTUP = bool(check_setting_int(CFG, 'General', 'recentsearch_startup', 0))
|
|
|
|
BACKLOG_STARTUP = bool(check_setting_int(CFG, 'General', 'backlog_startup', 0))
|
|
|
|
SKIP_REMOVED_FILES = check_setting_int(CFG, 'General', 'skip_removed_files', 0)
|
|
|
|
|
|
|
|
USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', 500)
|
|
|
|
|
|
|
|
AUTOPOSTPROCESSER_FREQUENCY = check_setting_int(CFG, 'General', 'autopostprocesser_frequency',
|
|
|
|
DEFAULT_AUTOPOSTPROCESSER_FREQUENCY)
|
|
|
|
if AUTOPOSTPROCESSER_FREQUENCY < MIN_AUTOPOSTPROCESSER_FREQUENCY:
|
|
|
|
AUTOPOSTPROCESSER_FREQUENCY = MIN_AUTOPOSTPROCESSER_FREQUENCY
|
|
|
|
|
|
|
|
RECENTSEARCH_FREQUENCY = check_setting_int(CFG, 'General', 'recentsearch_frequency',
|
|
|
|
DEFAULT_RECENTSEARCH_FREQUENCY)
|
|
|
|
if RECENTSEARCH_FREQUENCY < MIN_RECENTSEARCH_FREQUENCY:
|
|
|
|
RECENTSEARCH_FREQUENCY = MIN_RECENTSEARCH_FREQUENCY
|
|
|
|
|
|
|
|
BACKLOG_FREQUENCY = check_setting_int(CFG, 'General', 'backlog_frequency', DEFAULT_BACKLOG_FREQUENCY)
|
|
|
|
BACKLOG_FREQUENCY = minimax(BACKLOG_FREQUENCY, DEFAULT_BACKLOG_FREQUENCY, MIN_BACKLOG_FREQUENCY, MAX_BACKLOG_FREQUENCY)
|
|
|
|
|
|
|
|
UPDATE_FREQUENCY = check_setting_int(CFG, 'General', 'update_frequency', DEFAULT_UPDATE_FREQUENCY)
|
|
|
|
if UPDATE_FREQUENCY < MIN_UPDATE_FREQUENCY:
|
|
|
|
UPDATE_FREQUENCY = MIN_UPDATE_FREQUENCY
|
|
|
|
|
|
|
|
BACKLOG_DAYS = check_setting_int(CFG, 'General', 'backlog_days', 7)
|
|
|
|
SEARCH_UNAIRED = bool(check_setting_int(CFG, 'General', 'search_unaired', 0))
|
|
|
|
|
|
|
|
NZB_DIR = check_setting_str(CFG, 'Blackhole', 'nzb_dir', '')
|
|
|
|
TORRENT_DIR = check_setting_str(CFG, 'Blackhole', 'torrent_dir', '')
|
|
|
|
|
|
|
|
TV_DOWNLOAD_DIR = check_setting_str(CFG, 'General', 'tv_download_dir', '')
|
|
|
|
PROCESS_AUTOMATICALLY = bool(check_setting_int(CFG, 'General', 'process_automatically', 0))
|
|
|
|
UNPACK = bool(check_setting_int(CFG, 'General', 'unpack', 0))
|
|
|
|
RENAME_EPISODES = bool(check_setting_int(CFG, 'General', 'rename_episodes', 1))
|
|
|
|
AIRDATE_EPISODES = bool(check_setting_int(CFG, 'General', 'airdate_episodes', 0))
|
|
|
|
KEEP_PROCESSED_DIR = bool(check_setting_int(CFG, 'General', 'keep_processed_dir', 1))
|
|
|
|
PROCESS_METHOD = check_setting_str(CFG, 'General', 'process_method', 'copy' if KEEP_PROCESSED_DIR else 'move')
|
|
|
|
MOVE_ASSOCIATED_FILES = bool(check_setting_int(CFG, 'General', 'move_associated_files', 0))
|
|
|
|
POSTPONE_IF_SYNC_FILES = bool(check_setting_int(CFG, 'General', 'postpone_if_sync_files', 1))
|
|
|
|
NFO_RENAME = bool(check_setting_int(CFG, 'General', 'nfo_rename', 1))
|
|
|
|
CREATE_MISSING_SHOW_DIRS = bool(check_setting_int(CFG, 'General', 'create_missing_show_dirs', 0))
|
|
|
|
ADD_SHOWS_WO_DIR = bool(check_setting_int(CFG, 'General', 'add_shows_wo_dir', 0))
|
|
|
|
|
|
|
|
SAB_USERNAME = check_setting_str(CFG, 'SABnzbd', 'sab_username', '')
|
|
|
|
SAB_PASSWORD = check_setting_str(CFG, 'SABnzbd', 'sab_password', '')
|
|
|
|
SAB_APIKEY = check_setting_str(CFG, 'SABnzbd', 'sab_apikey', '')
|
|
|
|
SAB_CATEGORY = check_setting_str(CFG, 'SABnzbd', 'sab_category', 'tv')
|
|
|
|
SAB_HOST = check_setting_str(CFG, 'SABnzbd', 'sab_host', '')
|
|
|
|
|
|
|
|
NZBGET_USERNAME = check_setting_str(CFG, 'NZBget', 'nzbget_username', 'nzbget')
|
|
|
|
NZBGET_PASSWORD = check_setting_str(CFG, 'NZBget', 'nzbget_password', 'tegbzn6789')
|
|
|
|
NZBGET_CATEGORY = check_setting_str(CFG, 'NZBget', 'nzbget_category', 'tv')
|
|
|
|
NZBGET_HOST = check_setting_str(CFG, 'NZBget', 'nzbget_host', '')
|
|
|
|
NZBGET_USE_HTTPS = bool(check_setting_int(CFG, 'NZBget', 'nzbget_use_https', 0))
|
|
|
|
NZBGET_PRIORITY = check_setting_int(CFG, 'NZBget', 'nzbget_priority', 100)
|
|
|
|
|
|
|
|
TORRENT_USERNAME = check_setting_str(CFG, 'TORRENT', 'torrent_username', '')
|
|
|
|
TORRENT_PASSWORD = check_setting_str(CFG, 'TORRENT', 'torrent_password', '')
|
|
|
|
TORRENT_HOST = check_setting_str(CFG, 'TORRENT', 'torrent_host', '')
|
|
|
|
TORRENT_PATH = check_setting_str(CFG, 'TORRENT', 'torrent_path', '')
|
|
|
|
TORRENT_SEED_TIME = check_setting_int(CFG, 'TORRENT', 'torrent_seed_time', 0)
|
|
|
|
TORRENT_PAUSED = bool(check_setting_int(CFG, 'TORRENT', 'torrent_paused', 0))
|
|
|
|
TORRENT_HIGH_BANDWIDTH = bool(check_setting_int(CFG, 'TORRENT', 'torrent_high_bandwidth', 0))
|
|
|
|
TORRENT_LABEL = check_setting_str(CFG, 'TORRENT', 'torrent_label', '')
|
|
|
|
TORRENT_VERIFY_CERT = bool(check_setting_int(CFG, 'TORRENT', 'torrent_verify_cert', 0))
|
|
|
|
|
|
|
|
USE_EMBY = bool(check_setting_int(CFG, 'Emby', 'use_emby', 0))
|
|
|
|
EMBY_UPDATE_LIBRARY = bool(check_setting_int(CFG, 'Emby', 'emby_update_library', 0))
|
|
|
|
EMBY_HOST = check_setting_str(CFG, 'Emby', 'emby_host', '')
|
|
|
|
EMBY_APIKEY = check_setting_str(CFG, 'Emby', 'emby_apikey', '')
|
|
|
|
|
|
|
|
USE_KODI = bool(check_setting_int(CFG, 'Kodi', 'use_kodi', 0))
|
|
|
|
KODI_ALWAYS_ON = bool(check_setting_int(CFG, 'Kodi', 'kodi_always_on', 1))
|
|
|
|
KODI_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Kodi', 'kodi_notify_onsnatch', 0))
|
|
|
|
KODI_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Kodi', 'kodi_notify_ondownload', 0))
|
|
|
|
KODI_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'Kodi', 'kodi_notify_onsubtitledownload', 0))
|
|
|
|
KODI_UPDATE_LIBRARY = bool(check_setting_int(CFG, 'Kodi', 'kodi_update_library', 0))
|
|
|
|
KODI_UPDATE_FULL = bool(check_setting_int(CFG, 'Kodi', 'kodi_update_full', 0))
|
|
|
|
KODI_UPDATE_ONLYFIRST = bool(check_setting_int(CFG, 'Kodi', 'kodi_update_onlyfirst', 0))
|
|
|
|
KODI_HOST = check_setting_str(CFG, 'Kodi', 'kodi_host', '')
|
|
|
|
KODI_USERNAME = check_setting_str(CFG, 'Kodi', 'kodi_username', '')
|
|
|
|
KODI_PASSWORD = check_setting_str(CFG, 'Kodi', 'kodi_password', '')
|
|
|
|
|
|
|
|
USE_XBMC = bool(check_setting_int(CFG, 'XBMC', 'use_xbmc', 0))
|
|
|
|
XBMC_ALWAYS_ON = bool(check_setting_int(CFG, 'XBMC', 'xbmc_always_on', 1))
|
|
|
|
XBMC_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'XBMC', 'xbmc_notify_onsnatch', 0))
|
|
|
|
XBMC_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'XBMC', 'xbmc_notify_ondownload', 0))
|
|
|
|
XBMC_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'XBMC', 'xbmc_notify_onsubtitledownload', 0))
|
|
|
|
XBMC_UPDATE_LIBRARY = bool(check_setting_int(CFG, 'XBMC', 'xbmc_update_library', 0))
|
|
|
|
XBMC_UPDATE_FULL = bool(check_setting_int(CFG, 'XBMC', 'xbmc_update_full', 0))
|
|
|
|
XBMC_UPDATE_ONLYFIRST = bool(check_setting_int(CFG, 'XBMC', 'xbmc_update_onlyfirst', 0))
|
|
|
|
XBMC_HOST = check_setting_str(CFG, 'XBMC', 'xbmc_host', '')
|
|
|
|
XBMC_USERNAME = check_setting_str(CFG, 'XBMC', 'xbmc_username', '')
|
|
|
|
XBMC_PASSWORD = check_setting_str(CFG, 'XBMC', 'xbmc_password', '')
|
|
|
|
|
|
|
|
USE_PLEX = bool(check_setting_int(CFG, 'Plex', 'use_plex', 0))
|
|
|
|
PLEX_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Plex', 'plex_notify_onsnatch', 0))
|
|
|
|
PLEX_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Plex', 'plex_notify_ondownload', 0))
|
|
|
|
PLEX_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'Plex', 'plex_notify_onsubtitledownload', 0))
|
|
|
|
PLEX_UPDATE_LIBRARY = bool(check_setting_int(CFG, 'Plex', 'plex_update_library', 0))
|
|
|
|
PLEX_SERVER_HOST = check_setting_str(CFG, 'Plex', 'plex_server_host', '')
|
|
|
|
PLEX_HOST = check_setting_str(CFG, 'Plex', 'plex_host', '')
|
|
|
|
PLEX_USERNAME = check_setting_str(CFG, 'Plex', 'plex_username', '')
|
|
|
|
PLEX_PASSWORD = check_setting_str(CFG, 'Plex', 'plex_password', '')
|
|
|
|
|
|
|
|
USE_GROWL = bool(check_setting_int(CFG, 'Growl', 'use_growl', 0))
|
|
|
|
GROWL_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Growl', 'growl_notify_onsnatch', 0))
|
|
|
|
GROWL_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Growl', 'growl_notify_ondownload', 0))
|
|
|
|
GROWL_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'Growl', 'growl_notify_onsubtitledownload', 0))
|
|
|
|
GROWL_HOST = check_setting_str(CFG, 'Growl', 'growl_host', '')
|
|
|
|
GROWL_PASSWORD = check_setting_str(CFG, 'Growl', 'growl_password', '')
|
|
|
|
|
|
|
|
USE_PROWL = bool(check_setting_int(CFG, 'Prowl', 'use_prowl', 0))
|
|
|
|
PROWL_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Prowl', 'prowl_notify_onsnatch', 0))
|
|
|
|
PROWL_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Prowl', 'prowl_notify_ondownload', 0))
|
|
|
|
PROWL_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'Prowl', 'prowl_notify_onsubtitledownload', 0))
|
|
|
|
PROWL_API = check_setting_str(CFG, 'Prowl', 'prowl_api', '')
|
|
|
|
PROWL_PRIORITY = check_setting_str(CFG, 'Prowl', 'prowl_priority', '0')
|
|
|
|
|
|
|
|
USE_TWITTER = bool(check_setting_int(CFG, 'Twitter', 'use_twitter', 0))
|
|
|
|
TWITTER_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Twitter', 'twitter_notify_onsnatch', 0))
|
|
|
|
TWITTER_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Twitter', 'twitter_notify_ondownload', 0))
|
|
|
|
TWITTER_NOTIFY_ONSUBTITLEDOWNLOAD = bool(
|
|
|
|
check_setting_int(CFG, 'Twitter', 'twitter_notify_onsubtitledownload', 0))
|
|
|
|
TWITTER_USERNAME = check_setting_str(CFG, 'Twitter', 'twitter_username', '')
|
|
|
|
TWITTER_PASSWORD = check_setting_str(CFG, 'Twitter', 'twitter_password', '')
|
|
|
|
TWITTER_PREFIX = check_setting_str(CFG, 'Twitter', 'twitter_prefix', 'SickGear')
|
|
|
|
|
|
|
|
USE_BOXCAR2 = bool(check_setting_int(CFG, 'Boxcar2', 'use_boxcar2', 0))
|
|
|
|
BOXCAR2_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Boxcar2', 'boxcar2_notify_onsnatch', 0))
|
|
|
|
BOXCAR2_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Boxcar2', 'boxcar2_notify_ondownload', 0))
|
|
|
|
BOXCAR2_NOTIFY_ONSUBTITLEDOWNLOAD = bool(
|
|
|
|
check_setting_int(CFG, 'Boxcar2', 'boxcar2_notify_onsubtitledownload', 0))
|
|
|
|
BOXCAR2_ACCESSTOKEN = check_setting_str(CFG, 'Boxcar2', 'boxcar2_accesstoken', '')
|
|
|
|
BOXCAR2_SOUND = check_setting_str(CFG, 'Boxcar2', 'boxcar2_sound', 'default')
|
|
|
|
|
|
|
|
USE_PUSHOVER = bool(check_setting_int(CFG, 'Pushover', 'use_pushover', 0))
|
|
|
|
PUSHOVER_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Pushover', 'pushover_notify_onsnatch', 0))
|
|
|
|
PUSHOVER_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Pushover', 'pushover_notify_ondownload', 0))
|
|
|
|
PUSHOVER_NOTIFY_ONSUBTITLEDOWNLOAD = bool(
|
|
|
|
check_setting_int(CFG, 'Pushover', 'pushover_notify_onsubtitledownload', 0))
|
|
|
|
PUSHOVER_USERKEY = check_setting_str(CFG, 'Pushover', 'pushover_userkey', '')
|
|
|
|
PUSHOVER_APIKEY = check_setting_str(CFG, 'Pushover', 'pushover_apikey', '')
|
|
|
|
PUSHOVER_PRIORITY = check_setting_int(CFG, 'Pushover', 'pushover_priority', 0)
|
|
|
|
PUSHOVER_DEVICE = check_setting_str(CFG, 'Pushover', 'pushover_device', 'all')
|
|
|
|
PUSHOVER_SOUND = check_setting_str(CFG, 'Pushover', 'pushover_sound', 'pushover')
|
|
|
|
|
|
|
|
USE_LIBNOTIFY = bool(check_setting_int(CFG, 'Libnotify', 'use_libnotify', 0))
|
|
|
|
LIBNOTIFY_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Libnotify', 'libnotify_notify_onsnatch', 0))
|
|
|
|
LIBNOTIFY_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Libnotify', 'libnotify_notify_ondownload', 0))
|
|
|
|
LIBNOTIFY_NOTIFY_ONSUBTITLEDOWNLOAD = bool(
|
|
|
|
check_setting_int(CFG, 'Libnotify', 'libnotify_notify_onsubtitledownload', 0))
|
|
|
|
|
|
|
|
USE_NMJ = bool(check_setting_int(CFG, 'NMJ', 'use_nmj', 0))
|
|
|
|
NMJ_HOST = check_setting_str(CFG, 'NMJ', 'nmj_host', '')
|
|
|
|
NMJ_DATABASE = check_setting_str(CFG, 'NMJ', 'nmj_database', '')
|
|
|
|
NMJ_MOUNT = check_setting_str(CFG, 'NMJ', 'nmj_mount', '')
|
|
|
|
|
|
|
|
USE_NMJv2 = bool(check_setting_int(CFG, 'NMJv2', 'use_nmjv2', 0))
|
|
|
|
NMJv2_HOST = check_setting_str(CFG, 'NMJv2', 'nmjv2_host', '')
|
|
|
|
NMJv2_DATABASE = check_setting_str(CFG, 'NMJv2', 'nmjv2_database', '')
|
|
|
|
NMJv2_DBLOC = check_setting_str(CFG, 'NMJv2', 'nmjv2_dbloc', '')
|
|
|
|
|
|
|
|
USE_SYNOINDEX = bool(check_setting_int(CFG, 'Synology', 'use_synoindex', 0))
|
|
|
|
|
|
|
|
USE_SYNOLOGYNOTIFIER = bool(check_setting_int(CFG, 'SynologyNotifier', 'use_synologynotifier', 0))
|
|
|
|
SYNOLOGYNOTIFIER_NOTIFY_ONSNATCH = bool(
|
|
|
|
check_setting_int(CFG, 'SynologyNotifier', 'synologynotifier_notify_onsnatch', 0))
|
|
|
|
SYNOLOGYNOTIFIER_NOTIFY_ONDOWNLOAD = bool(
|
|
|
|
check_setting_int(CFG, 'SynologyNotifier', 'synologynotifier_notify_ondownload', 0))
|
|
|
|
SYNOLOGYNOTIFIER_NOTIFY_ONSUBTITLEDOWNLOAD = bool(
|
|
|
|
check_setting_int(CFG, 'SynologyNotifier', 'synologynotifier_notify_onsubtitledownload', 0))
|
|
|
|
|
|
|
|
USE_TRAKT = bool(check_setting_int(CFG, 'Trakt', 'use_trakt', 0))
|
|
|
|
TRAKT_REMOVE_WATCHLIST = bool(check_setting_int(CFG, 'Trakt', 'trakt_remove_watchlist', 0))
|
|
|
|
TRAKT_REMOVE_SERIESLIST = bool(check_setting_int(CFG, 'Trakt', 'trakt_remove_serieslist', 0))
|
|
|
|
TRAKT_USE_WATCHLIST = bool(check_setting_int(CFG, 'Trakt', 'trakt_use_watchlist', 0))
|
|
|
|
TRAKT_METHOD_ADD = check_setting_int(CFG, 'Trakt', 'trakt_method_add', 0)
|
|
|
|
TRAKT_START_PAUSED = bool(check_setting_int(CFG, 'Trakt', 'trakt_start_paused', 0))
|
|
|
|
TRAKT_SYNC = bool(check_setting_int(CFG, 'Trakt', 'trakt_sync', 0))
|
|
|
|
TRAKT_DEFAULT_INDEXER = check_setting_int(CFG, 'Trakt', 'trakt_default_indexer', 1)
|
|
|
|
TRAKT_UPDATE_COLLECTION = trakt_helpers.read_config_string(check_setting_str(CFG, 'Trakt', 'trakt_update_collection', ''))
|
|
|
|
TRAKT_ACCOUNTS = TraktAPI.read_config_string(check_setting_str(CFG, 'Trakt', 'trakt_accounts', ''))
|
|
|
|
TRAKT_MRU = check_setting_str(CFG, 'Trakt', 'trakt_mru', '')
|
|
|
|
|
|
|
|
CheckSection(CFG, 'pyTivo')
|
|
|
|
USE_PYTIVO = bool(check_setting_int(CFG, 'pyTivo', 'use_pytivo', 0))
|
|
|
|
PYTIVO_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'pyTivo', 'pytivo_notify_onsnatch', 0))
|
|
|
|
PYTIVO_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'pyTivo', 'pytivo_notify_ondownload', 0))
|
|
|
|
PYTIVO_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'pyTivo', 'pytivo_notify_onsubtitledownload', 0))
|
|
|
|
PYTIVO_UPDATE_LIBRARY = bool(check_setting_int(CFG, 'pyTivo', 'pyTivo_update_library', 0))
|
|
|
|
PYTIVO_HOST = check_setting_str(CFG, 'pyTivo', 'pytivo_host', '')
|
|
|
|
PYTIVO_SHARE_NAME = check_setting_str(CFG, 'pyTivo', 'pytivo_share_name', '')
|
|
|
|
PYTIVO_TIVO_NAME = check_setting_str(CFG, 'pyTivo', 'pytivo_tivo_name', '')
|
|
|
|
|
|
|
|
USE_NMA = bool(check_setting_int(CFG, 'NMA', 'use_nma', 0))
|
|
|
|
NMA_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'NMA', 'nma_notify_onsnatch', 0))
|
|
|
|
NMA_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'NMA', 'nma_notify_ondownload', 0))
|
|
|
|
NMA_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'NMA', 'nma_notify_onsubtitledownload', 0))
|
|
|
|
NMA_API = check_setting_str(CFG, 'NMA', 'nma_api', '')
|
|
|
|
NMA_PRIORITY = check_setting_str(CFG, 'NMA', 'nma_priority', '0')
|
|
|
|
|
|
|
|
USE_PUSHALOT = bool(check_setting_int(CFG, 'Pushalot', 'use_pushalot', 0))
|
|
|
|
PUSHALOT_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Pushalot', 'pushalot_notify_onsnatch', 0))
|
|
|
|
PUSHALOT_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Pushalot', 'pushalot_notify_ondownload', 0))
|
|
|
|
PUSHALOT_NOTIFY_ONSUBTITLEDOWNLOAD = bool(
|
|
|
|
check_setting_int(CFG, 'Pushalot', 'pushalot_notify_onsubtitledownload', 0))
|
|
|
|
PUSHALOT_AUTHORIZATIONTOKEN = check_setting_str(CFG, 'Pushalot', 'pushalot_authorizationtoken', '')
|
|
|
|
|
|
|
|
USE_PUSHBULLET = bool(check_setting_int(CFG, 'Pushbullet', 'use_pushbullet', 0))
|
|
|
|
PUSHBULLET_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Pushbullet', 'pushbullet_notify_onsnatch', 0))
|
|
|
|
PUSHBULLET_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Pushbullet', 'pushbullet_notify_ondownload', 0))
|
|
|
|
PUSHBULLET_NOTIFY_ONSUBTITLEDOWNLOAD = bool(
|
|
|
|
check_setting_int(CFG, 'Pushbullet', 'pushbullet_notify_onsubtitledownload', 0))
|
|
|
|
PUSHBULLET_ACCESS_TOKEN = check_setting_str(CFG, 'Pushbullet', 'pushbullet_access_token', '')
|
|
|
|
PUSHBULLET_DEVICE_IDEN = check_setting_str(CFG, 'Pushbullet', 'pushbullet_device_iden', '')
|
|
|
|
|
|
|
|
USE_EMAIL = bool(check_setting_int(CFG, 'Email', 'use_email', 0))
|
|
|
|
EMAIL_OLD_SUBJECTS = bool(check_setting_int(CFG, 'Email', 'email_old_subjects',
|
|
|
|
None is not EMAIL_HOST and any(EMAIL_HOST)))
|
|
|
|
EMAIL_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Email', 'email_notify_onsnatch', 0))
|
|
|
|
EMAIL_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Email', 'email_notify_ondownload', 0))
|
|
|
|
EMAIL_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'Email', 'email_notify_onsubtitledownload', 0))
|
|
|
|
EMAIL_HOST = check_setting_str(CFG, 'Email', 'email_host', '')
|
|
|
|
EMAIL_PORT = check_setting_int(CFG, 'Email', 'email_port', 25)
|
|
|
|
EMAIL_TLS = bool(check_setting_int(CFG, 'Email', 'email_tls', 0))
|
|
|
|
EMAIL_USER = check_setting_str(CFG, 'Email', 'email_user', '')
|
|
|
|
EMAIL_PASSWORD = check_setting_str(CFG, 'Email', 'email_password', '')
|
|
|
|
EMAIL_FROM = check_setting_str(CFG, 'Email', 'email_from', '')
|
|
|
|
EMAIL_LIST = check_setting_str(CFG, 'Email', 'email_list', '')
|
|
|
|
|
|
|
|
USE_SUBTITLES = bool(check_setting_int(CFG, 'Subtitles', 'use_subtitles', 0))
|
|
|
|
SUBTITLES_LANGUAGES = check_setting_str(CFG, 'Subtitles', 'subtitles_languages', '').split(',')
|
|
|
|
if SUBTITLES_LANGUAGES[0] == '':
|
|
|
|
SUBTITLES_LANGUAGES = []
|
|
|
|
SUBTITLES_DIR = check_setting_str(CFG, 'Subtitles', 'subtitles_dir', '')
|
|
|
|
SUBTITLES_SERVICES_LIST = check_setting_str(CFG, 'Subtitles', 'SUBTITLES_SERVICES_LIST', '').split(',')
|
|
|
|
SUBTITLES_SERVICES_ENABLED = [int(x) for x in
|
|
|
|
check_setting_str(CFG, 'Subtitles', 'SUBTITLES_SERVICES_ENABLED', '').split('|')
|
|
|
|
if x]
|
|
|
|
SUBTITLES_DEFAULT = bool(check_setting_int(CFG, 'Subtitles', 'subtitles_default', 0))
|
|
|
|
SUBTITLES_HISTORY = bool(check_setting_int(CFG, 'Subtitles', 'subtitles_history', 0))
|
|
|
|
SUBTITLES_FINDER_FREQUENCY = check_setting_int(CFG, 'Subtitles', 'subtitles_finder_frequency', 1)
|
|
|
|
|
|
|
|
USE_FAILED_DOWNLOADS = bool(check_setting_int(CFG, 'FailedDownloads', 'use_failed_downloads', 0))
|
|
|
|
DELETE_FAILED = bool(check_setting_int(CFG, 'FailedDownloads', 'delete_failed', 0))
|
|
|
|
|
|
|
|
GIT_PATH = check_setting_str(CFG, 'General', 'git_path', '')
|
|
|
|
|
|
|
|
IGNORE_WORDS = check_setting_str(CFG, 'General', 'ignore_words', IGNORE_WORDS)
|
|
|
|
REQUIRE_WORDS = check_setting_str(CFG, 'General', 'require_words', REQUIRE_WORDS)
|
|
|
|
|
|
|
|
CALENDAR_UNPROTECTED = bool(check_setting_int(CFG, 'General', 'calendar_unprotected', 0))
|
|
|
|
|
|
|
|
EXTRA_SCRIPTS = [x.strip() for x in check_setting_str(CFG, 'General', 'extra_scripts', '').split('|') if
|
|
|
|
x.strip()]
|
|
|
|
|
|
|
|
USE_ANIDB = bool(check_setting_int(CFG, 'ANIDB', 'use_anidb', 0))
|
|
|
|
ANIDB_USERNAME = check_setting_str(CFG, 'ANIDB', 'anidb_username', '')
|
|
|
|
ANIDB_PASSWORD = check_setting_str(CFG, 'ANIDB', 'anidb_password', '')
|
|
|
|
ANIDB_USE_MYLIST = bool(check_setting_int(CFG, 'ANIDB', 'anidb_use_mylist', 0))
|
|
|
|
|
|
|
|
ANIME_TREAT_AS_HDTV = bool(check_setting_int(CFG, 'ANIME', 'anime_treat_as_hdtv', 0))
|
|
|
|
|
|
|
|
METADATA_XBMC = check_setting_str(CFG, 'General', 'metadata_xbmc', '0|0|0|0|0|0|0|0|0|0')
|
|
|
|
METADATA_XBMC_12PLUS = check_setting_str(CFG, 'General', 'metadata_xbmc_12plus', '0|0|0|0|0|0|0|0|0|0')
|
|
|
|
METADATA_MEDIABROWSER = check_setting_str(CFG, 'General', 'metadata_mediabrowser', '0|0|0|0|0|0|0|0|0|0')
|
|
|
|
METADATA_PS3 = check_setting_str(CFG, 'General', 'metadata_ps3', '0|0|0|0|0|0|0|0|0|0')
|
|
|
|
METADATA_WDTV = check_setting_str(CFG, 'General', 'metadata_wdtv', '0|0|0|0|0|0|0|0|0|0')
|
|
|
|
METADATA_TIVO = check_setting_str(CFG, 'General', 'metadata_tivo', '0|0|0|0|0|0|0|0|0|0')
|
|
|
|
METADATA_MEDE8ER = check_setting_str(CFG, 'General', 'metadata_mede8er', '0|0|0|0|0|0|0|0|0|0')
|
|
|
|
METADATA_KODI = check_setting_str(CFG, 'General', 'metadata_kodi', '0|0|0|0|0|0|0|0|0|0')
|
|
|
|
|
|
|
|
HOME_LAYOUT = check_setting_str(CFG, 'GUI', 'home_layout', 'poster')
|
|
|
|
HISTORY_LAYOUT = check_setting_str(CFG, 'GUI', 'history_layout', 'detailed')
|
|
|
|
DISPLAY_SHOW_SPECIALS = bool(check_setting_int(CFG, 'GUI', 'display_show_specials', 1))
|
|
|
|
EPISODE_VIEW_LAYOUT = check_setting_str(CFG, 'GUI', 'episode_view_layout', 'banner')
|
|
|
|
EPISODE_VIEW_SORT = check_setting_str(CFG, 'GUI', 'episode_view_sort', 'time')
|
|
|
|
EPISODE_VIEW_DISPLAY_PAUSED = bool(check_setting_int(CFG, 'GUI', 'episode_view_display_paused', 0))
|
|
|
|
EPISODE_VIEW_MISSED_RANGE = check_setting_int(CFG, 'GUI', 'episode_view_missed_range', 7)
|
|
|
|
|
|
|
|
POSTER_SORTBY = check_setting_str(CFG, 'GUI', 'poster_sortby', 'name')
|
|
|
|
POSTER_SORTDIR = check_setting_int(CFG, 'GUI', 'poster_sortdir', 1)
|
|
|
|
|
|
|
|
# initialize NZB and TORRENT providers
|
|
|
|
providerList = providers.makeProviderList()
|
|
|
|
|
|
|
|
NEWZNAB_DATA = check_setting_str(CFG, 'Newznab', 'newznab_data', '')
|
|
|
|
newznabProviderList = providers.getNewznabProviderList(NEWZNAB_DATA)
|
|
|
|
|
|
|
|
TORRENTRSS_DATA = check_setting_str(CFG, 'TorrentRss', 'torrentrss_data', '')
|
|
|
|
torrentRssProviderList = providers.getTorrentRssProviderList(TORRENTRSS_DATA)
|
|
|
|
|
|
|
|
# dynamically load provider settings
|
|
|
|
for torrent_prov in [curProvider for curProvider in providers.sortedProviderList()
|
|
|
|
if GenericProvider.TORRENT == curProvider.providerType]:
|
|
|
|
prov_id = torrent_prov.get_id()
|
|
|
|
prov_id_uc = torrent_prov.get_id().upper()
|
|
|
|
torrent_prov.enabled = bool(check_setting_int(CFG, prov_id_uc, prov_id, 0))
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
if getattr(torrent_prov, 'url_edit', None):
|
|
|
|
torrent_prov.url_home = check_setting_str(CFG, prov_id_uc, prov_id + '_url_home', [])
|
|
|
|
if hasattr(torrent_prov, 'api_key'):
|
|
|
|
torrent_prov.api_key = check_setting_str(CFG, prov_id_uc, prov_id + '_api_key', '')
|
|
|
|
if hasattr(torrent_prov, 'hash'):
|
|
|
|
torrent_prov.hash = check_setting_str(CFG, prov_id_uc, prov_id + '_hash', '')
|
|
|
|
if hasattr(torrent_prov, 'digest'):
|
|
|
|
torrent_prov.digest = check_setting_str(CFG, prov_id_uc, prov_id + '_digest', '')
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
for user_type in ['username', 'uid']:
|
|
|
|
if hasattr(torrent_prov, user_type):
|
|
|
|
setattr(torrent_prov, user_type,
|
|
|
|
check_setting_str(CFG, prov_id_uc, '%s_%s' % (prov_id, user_type), ''))
|
|
|
|
if hasattr(torrent_prov, 'password'):
|
|
|
|
torrent_prov.password = check_setting_str(CFG, prov_id_uc, prov_id + '_password', '')
|
|
|
|
if hasattr(torrent_prov, 'passkey'):
|
|
|
|
torrent_prov.passkey = check_setting_str(CFG, prov_id_uc, prov_id + '_passkey', '')
|
|
|
|
if hasattr(torrent_prov, 'confirmed'):
|
|
|
|
torrent_prov.confirmed = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_confirmed', 0))
|
|
|
|
if hasattr(torrent_prov, 'options'):
|
|
|
|
torrent_prov.options = check_setting_str(CFG, prov_id_uc, prov_id + '_options', '')
|
|
|
|
if hasattr(torrent_prov, '_seed_ratio'):
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
torrent_prov._seed_ratio = check_setting_str(CFG, prov_id_uc, prov_id + '_seed_ratio', '')
|
|
|
|
if hasattr(torrent_prov, 'seed_time'):
|
|
|
|
torrent_prov.seed_time = check_setting_int(CFG, prov_id_uc, prov_id + '_seed_time', '')
|
|
|
|
if hasattr(torrent_prov, 'minseed'):
|
|
|
|
torrent_prov.minseed = check_setting_int(CFG, prov_id_uc, prov_id + '_minseed', 0)
|
|
|
|
if hasattr(torrent_prov, 'minleech'):
|
|
|
|
torrent_prov.minleech = check_setting_int(CFG, prov_id_uc, prov_id + '_minleech', 0)
|
|
|
|
if hasattr(torrent_prov, 'freeleech'):
|
|
|
|
torrent_prov.freeleech = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_freeleech', 0))
|
|
|
|
if hasattr(torrent_prov, 'reject_m2ts'):
|
|
|
|
torrent_prov.reject_m2ts = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_reject_m2ts', 0))
|
|
|
|
if hasattr(torrent_prov, 'enable_recentsearch'):
|
|
|
|
torrent_prov.enable_recentsearch = bool(check_setting_int(CFG, prov_id_uc,
|
|
|
|
prov_id + '_enable_recentsearch', 1))
|
|
|
|
if hasattr(torrent_prov, 'enable_backlog'):
|
|
|
|
torrent_prov.enable_backlog = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_enable_backlog', 1))
|
|
|
|
if hasattr(torrent_prov, 'search_mode'):
|
|
|
|
torrent_prov.search_mode = check_setting_str(CFG, prov_id_uc, prov_id + '_search_mode', 'eponly')
|
|
|
|
if hasattr(torrent_prov, 'search_fallback'):
|
|
|
|
torrent_prov.search_fallback = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_search_fallback', 0))
|
|
|
|
|
|
|
|
for nzb_prov in [curProvider for curProvider in providers.sortedProviderList()
|
|
|
|
if GenericProvider.NZB == curProvider.providerType]:
|
|
|
|
prov_id = nzb_prov.get_id()
|
|
|
|
prov_id_uc = nzb_prov.get_id().upper()
|
|
|
|
nzb_prov.enabled = bool(
|
|
|
|
check_setting_int(CFG, prov_id_uc, prov_id, 0))
|
|
|
|
if hasattr(nzb_prov, 'api_key'):
|
|
|
|
nzb_prov.api_key = check_setting_str(CFG, prov_id_uc, prov_id + '_api_key', '')
|
|
|
|
if hasattr(nzb_prov, 'username'):
|
|
|
|
nzb_prov.username = check_setting_str(CFG, prov_id_uc, prov_id + '_username', '')
|
|
|
|
if hasattr(nzb_prov, 'search_mode'):
|
|
|
|
nzb_prov.search_mode = check_setting_str(CFG, prov_id_uc, prov_id + '_search_mode', 'eponly')
|
|
|
|
if hasattr(nzb_prov, 'search_fallback'):
|
|
|
|
nzb_prov.search_fallback = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_search_fallback', 0))
|
|
|
|
if hasattr(nzb_prov, 'enable_recentsearch'):
|
|
|
|
nzb_prov.enable_recentsearch = bool(check_setting_int(CFG, prov_id_uc,
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
prov_id + '_enable_recentsearch', 1)) or \
|
|
|
|
not getattr(nzb_prov, 'supports_backlog', True)
|
|
|
|
if hasattr(nzb_prov, 'enable_backlog'):
|
|
|
|
nzb_prov.enable_backlog = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_enable_backlog', 1))
|
|
|
|
|
|
|
|
if not os.path.isfile(CONFIG_FILE):
|
|
|
|
logger.log(u'Unable to find \'' + CONFIG_FILE + '\', all settings will be default!', logger.DEBUG)
|
|
|
|
save_config()
|
|
|
|
|
|
|
|
# start up all the threads
|
|
|
|
logger.sb_log_instance.initLogging(consoleLogging=consoleLogging)
|
|
|
|
|
|
|
|
# initialize the main SB database
|
|
|
|
my_db = db.DBConnection()
|
|
|
|
db.MigrationCode(my_db)
|
|
|
|
|
|
|
|
# initialize the cache database
|
|
|
|
my_db = db.DBConnection('cache.db')
|
|
|
|
db.upgradeDatabase(my_db, cache_db.InitialSchema)
|
|
|
|
|
|
|
|
# initialize the failed downloads database
|
|
|
|
my_db = db.DBConnection('failed.db')
|
|
|
|
db.upgradeDatabase(my_db, failed_db.InitialSchema)
|
|
|
|
|
|
|
|
# fix up any db problems
|
|
|
|
my_db = db.DBConnection()
|
|
|
|
db.sanityCheckDatabase(my_db, mainDB.MainSanityCheck)
|
|
|
|
|
|
|
|
# migrate the config if it needs it
|
|
|
|
migrator = ConfigMigrator(CFG)
|
|
|
|
migrator.migrate_config()
|
|
|
|
|
|
|
|
# initialize metadata_providers
|
|
|
|
metadata_provider_dict = metadata.get_metadata_generator_dict()
|
|
|
|
for cur_metadata_tuple in [(METADATA_XBMC, metadata.xbmc),
|
|
|
|
(METADATA_XBMC_12PLUS, metadata.xbmc_12plus),
|
|
|
|
(METADATA_MEDIABROWSER, metadata.mediabrowser),
|
|
|
|
(METADATA_PS3, metadata.ps3),
|
|
|
|
(METADATA_WDTV, metadata.wdtv),
|
|
|
|
(METADATA_TIVO, metadata.tivo),
|
|
|
|
(METADATA_MEDE8ER, metadata.mede8er),
|
|
|
|
(METADATA_KODI, metadata.kodi),
|
|
|
|
]:
|
|
|
|
(cur_metadata_config, cur_metadata_class) = cur_metadata_tuple
|
|
|
|
tmp_provider = cur_metadata_class.metadata_class()
|
|
|
|
tmp_provider.set_config(cur_metadata_config)
|
|
|
|
metadata_provider_dict[tmp_provider.name] = tmp_provider
|
|
|
|
|
|
|
|
# initialize schedulers
|
|
|
|
# updaters
|
|
|
|
update_now = datetime.timedelta(minutes=0)
|
|
|
|
versionCheckScheduler = scheduler.Scheduler(version_checker.CheckVersion(),
|
|
|
|
cycleTime=datetime.timedelta(hours=UPDATE_FREQUENCY),
|
|
|
|
threadName='CHECKVERSION',
|
|
|
|
silent=False)
|
|
|
|
|
|
|
|
showQueueScheduler = scheduler.Scheduler(show_queue.ShowQueue(),
|
|
|
|
cycleTime=datetime.timedelta(seconds=3),
|
|
|
|
threadName='SHOWQUEUE')
|
|
|
|
|
|
|
|
showUpdateScheduler = scheduler.Scheduler(show_updater.ShowUpdater(),
|
|
|
|
cycleTime=datetime.timedelta(hours=1),
|
|
|
|
threadName='SHOWUPDATER',
|
|
|
|
start_time=datetime.time(hour=SHOW_UPDATE_HOUR),
|
|
|
|
prevent_cycle_run=showQueueScheduler.action.isShowUpdateRunning) # 3 AM
|
|
|
|
|
|
|
|
# searchers
|
|
|
|
searchQueueScheduler = scheduler.Scheduler(search_queue.SearchQueue(),
|
|
|
|
cycleTime=datetime.timedelta(seconds=3),
|
|
|
|
threadName='SEARCHQUEUE')
|
|
|
|
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
update_interval = datetime.timedelta(minutes=(RECENTSEARCH_FREQUENCY, 1)[4489 == RECENTSEARCH_FREQUENCY])
|
|
|
|
recentSearchScheduler = scheduler.Scheduler(search_recent.RecentSearcher(),
|
|
|
|
cycleTime=update_interval,
|
|
|
|
threadName='RECENTSEARCHER',
|
|
|
|
run_delay=update_now if RECENTSEARCH_STARTUP
|
|
|
|
else datetime.timedelta(minutes=5),
|
|
|
|
prevent_cycle_run=searchQueueScheduler.action.is_recentsearch_in_progress)
|
|
|
|
|
|
|
|
backlogSearchScheduler = search_backlog.BacklogSearchScheduler(search_backlog.BacklogSearcher(),
|
|
|
|
cycleTime=datetime.timedelta(minutes=get_backlog_cycle_time()),
|
|
|
|
threadName='BACKLOG',
|
|
|
|
run_delay=update_now if BACKLOG_STARTUP
|
|
|
|
else datetime.timedelta(minutes=10),
|
|
|
|
prevent_cycle_run=searchQueueScheduler.action.is_standard_backlog_in_progress)
|
|
|
|
|
|
|
|
propers_searcher = search_propers.ProperSearcher()
|
|
|
|
item = [(k, n, v) for (k, n, v) in propers_searcher.search_intervals if k == CHECK_PROPERS_INTERVAL]
|
|
|
|
if item:
|
|
|
|
update_interval = datetime.timedelta(minutes=item[0][2])
|
|
|
|
run_at = None
|
|
|
|
else:
|
|
|
|
update_interval = datetime.timedelta(hours=1)
|
|
|
|
run_at = datetime.time(hour=1) # 1 AM
|
|
|
|
|
|
|
|
properFinderScheduler = scheduler.Scheduler(propers_searcher,
|
|
|
|
cycleTime=update_interval,
|
|
|
|
threadName='FINDPROPERS',
|
|
|
|
start_time=run_at,
|
|
|
|
run_delay=update_interval,
|
|
|
|
prevent_cycle_run=searchQueueScheduler.action.is_propersearch_in_progress)
|
|
|
|
|
|
|
|
# processors
|
|
|
|
autoPostProcesserScheduler = scheduler.Scheduler(auto_post_processer.PostProcesser(),
|
|
|
|
cycleTime=datetime.timedelta(
|
|
|
|
minutes=AUTOPOSTPROCESSER_FREQUENCY),
|
|
|
|
threadName='POSTPROCESSER',
|
|
|
|
silent=not PROCESS_AUTOMATICALLY)
|
|
|
|
|
|
|
|
traktCheckerScheduler = scheduler.Scheduler(traktChecker.TraktChecker(),
|
|
|
|
cycleTime=datetime.timedelta(hours=1),
|
|
|
|
threadName='TRAKTCHECKER',
|
|
|
|
silent=not USE_TRAKT)
|
|
|
|
|
|
|
|
subtitlesFinderScheduler = scheduler.Scheduler(subtitles.SubtitlesFinder(),
|
|
|
|
cycleTime=datetime.timedelta(hours=SUBTITLES_FINDER_FREQUENCY),
|
|
|
|
threadName='FINDSUBTITLES',
|
|
|
|
silent=not USE_SUBTITLES)
|
|
|
|
|
|
|
|
showList = []
|
|
|
|
loadingShowList = {}
|
|
|
|
|
|
|
|
__INITIALIZED__ = True
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
def start():
|
|
|
|
global __INITIALIZED__, backlogSearchScheduler, \
|
|
|
|
showUpdateScheduler, versionCheckScheduler, showQueueScheduler, \
|
|
|
|
properFinderScheduler, autoPostProcesserScheduler, searchQueueScheduler, \
|
|
|
|
subtitlesFinderScheduler, USE_SUBTITLES, traktCheckerScheduler, \
|
|
|
|
recentSearchScheduler, events, started
|
|
|
|
|
|
|
|
with INIT_LOCK:
|
|
|
|
if __INITIALIZED__:
|
|
|
|
# start sysetm events queue
|
|
|
|
events.start()
|
|
|
|
|
|
|
|
# start the recent search scheduler
|
|
|
|
recentSearchScheduler.start()
|
|
|
|
|
|
|
|
# start the backlog scheduler
|
|
|
|
backlogSearchScheduler.start()
|
|
|
|
|
|
|
|
# start the show updater
|
|
|
|
showUpdateScheduler.start()
|
|
|
|
|
|
|
|
# start the version checker
|
|
|
|
versionCheckScheduler.start()
|
|
|
|
|
|
|
|
# start the queue checker
|
|
|
|
showQueueScheduler.start()
|
|
|
|
|
|
|
|
# start the search queue checker
|
|
|
|
searchQueueScheduler.start()
|
|
|
|
|
|
|
|
# start the queue checker
|
|
|
|
if DOWNLOAD_PROPERS:
|
|
|
|
properFinderScheduler.start()
|
|
|
|
|
|
|
|
# start the proper finder
|
|
|
|
if PROCESS_AUTOMATICALLY:
|
|
|
|
autoPostProcesserScheduler.start()
|
|
|
|
|
|
|
|
# start the subtitles finder
|
|
|
|
if USE_SUBTITLES:
|
|
|
|
subtitlesFinderScheduler.start()
|
|
|
|
|
|
|
|
# start the trakt checker
|
|
|
|
#if USE_TRAKT:
|
|
|
|
#traktCheckerScheduler.start()
|
|
|
|
|
|
|
|
started = True
|
|
|
|
|
|
|
|
|
|
|
|
def halt():
|
|
|
|
global __INITIALIZED__, backlogSearchScheduler, \
|
|
|
|
showUpdateScheduler, versionCheckScheduler, showQueueScheduler, \
|
|
|
|
properFinderScheduler, autoPostProcesserScheduler, searchQueueScheduler, \
|
|
|
|
subtitlesFinderScheduler, traktCheckerScheduler, \
|
|
|
|
recentSearchScheduler, events, started
|
|
|
|
|
|
|
|
with INIT_LOCK:
|
|
|
|
|
|
|
|
if __INITIALIZED__:
|
|
|
|
|
|
|
|
logger.log(u'Aborting all threads')
|
|
|
|
|
|
|
|
events.stop.set()
|
|
|
|
logger.log(u'Waiting for the EVENTS thread to exit')
|
|
|
|
try:
|
|
|
|
events.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
recentSearchScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the RECENTSEARCH thread to exit')
|
|
|
|
try:
|
|
|
|
recentSearchScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
backlogSearchScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the BACKLOG thread to exit')
|
|
|
|
try:
|
|
|
|
backlogSearchScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
showUpdateScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the SHOWUPDATER thread to exit')
|
|
|
|
try:
|
|
|
|
showUpdateScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
versionCheckScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the VERSIONCHECKER thread to exit')
|
|
|
|
try:
|
|
|
|
versionCheckScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
showQueueScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the SHOWQUEUE thread to exit')
|
|
|
|
try:
|
|
|
|
showQueueScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
searchQueueScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the SEARCHQUEUE thread to exit')
|
|
|
|
try:
|
|
|
|
searchQueueScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
if PROCESS_AUTOMATICALLY:
|
|
|
|
autoPostProcesserScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the POSTPROCESSER thread to exit')
|
|
|
|
try:
|
|
|
|
autoPostProcesserScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
# if USE_TRAKT:
|
|
|
|
# traktCheckerScheduler.stop.set()
|
|
|
|
# logger.log(u'Waiting for the TRAKTCHECKER thread to exit')
|
|
|
|
# try:
|
|
|
|
# traktCheckerScheduler.join(10)
|
|
|
|
# except:
|
|
|
|
# pass
|
|
|
|
|
|
|
|
if DOWNLOAD_PROPERS:
|
|
|
|
properFinderScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the PROPERFINDER thread to exit')
|
|
|
|
try:
|
|
|
|
properFinderScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
if USE_SUBTITLES:
|
|
|
|
subtitlesFinderScheduler.stop.set()
|
|
|
|
logger.log(u'Waiting for the SUBTITLESFINDER thread to exit')
|
|
|
|
try:
|
|
|
|
subtitlesFinderScheduler.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
if ADBA_CONNECTION:
|
|
|
|
try:
|
|
|
|
ADBA_CONNECTION.logout()
|
|
|
|
except AniDBBannedError as e:
|
|
|
|
logger.log(u'ANIDB Error %s' % ex(e), logger.DEBUG)
|
|
|
|
except AniDBError as e:
|
|
|
|
pass
|
|
|
|
logger.log(u'Waiting for the ANIDB CONNECTION thread to exit')
|
|
|
|
try:
|
|
|
|
ADBA_CONNECTION.join(10)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
__INITIALIZED__ = False
|
|
|
|
started = False
|
|
|
|
|
|
|
|
|
|
|
|
def sig_handler(signum=None, frame=None):
|
|
|
|
if isinstance(signum, type(None)):
|
|
|
|
logger.log(u'Signal %i caught, saving and exiting...' % int(signum))
|
|
|
|
events.put(events.SystemEvent.SHUTDOWN)
|
|
|
|
|
|
|
|
|
|
|
|
def save_all():
|
|
|
|
global showList
|
|
|
|
|
|
|
|
# write all shows
|
|
|
|
logger.log(u'Saving all shows to the database')
|
|
|
|
for show in showList:
|
|
|
|
show.saveToDB()
|
|
|
|
|
|
|
|
# save config
|
|
|
|
logger.log(u'Saving config file to disk')
|
|
|
|
save_config()
|
|
|
|
|
|
|
|
|
|
|
|
def restart(soft=True):
|
|
|
|
if soft:
|
|
|
|
halt()
|
|
|
|
save_all()
|
|
|
|
logger.log(u'Re-initializing all data')
|
|
|
|
initialize()
|
|
|
|
else:
|
|
|
|
events.put(events.SystemEvent.RESTART)
|
|
|
|
|
|
|
|
|
|
|
|
def save_config():
|
|
|
|
new_config = ConfigObj()
|
|
|
|
new_config.filename = CONFIG_FILE
|
|
|
|
|
|
|
|
# For passwords you must include the word `password` in the item_name and add `helpers.encrypt(ITEM_NAME, ENCRYPTION_VERSION)` in save_config()
|
|
|
|
new_config['General'] = {}
|
|
|
|
new_config['General']['branch'] = BRANCH
|
|
|
|
new_config['General']['git_remote'] = GIT_REMOTE
|
|
|
|
new_config['General']['cur_commit_hash'] = CUR_COMMIT_HASH
|
|
|
|
new_config['General']['cur_commit_branch'] = CUR_COMMIT_BRANCH
|
|
|
|
new_config['General']['config_version'] = CONFIG_VERSION
|
|
|
|
new_config['General']['encryption_version'] = int(ENCRYPTION_VERSION)
|
|
|
|
new_config['General']['log_dir'] = ACTUAL_LOG_DIR if ACTUAL_LOG_DIR else 'Logs'
|
|
|
|
new_config['General']['file_logging_preset'] = FILE_LOGGING_PRESET if FILE_LOGGING_PRESET else 'DB'
|
|
|
|
new_config['General']['socket_timeout'] = SOCKET_TIMEOUT
|
|
|
|
new_config['General']['web_port'] = WEB_PORT
|
|
|
|
new_config['General']['web_host'] = WEB_HOST
|
|
|
|
new_config['General']['web_ipv6'] = int(WEB_IPV6)
|
|
|
|
new_config['General']['web_log'] = int(WEB_LOG)
|
|
|
|
new_config['General']['web_root'] = WEB_ROOT
|
|
|
|
new_config['General']['web_username'] = WEB_USERNAME
|
|
|
|
new_config['General']['web_password'] = helpers.encrypt(WEB_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
new_config['General']['cpu_preset'] = CPU_PRESET
|
|
|
|
new_config['General']['anon_redirect'] = ANON_REDIRECT
|
|
|
|
new_config['General']['use_api'] = int(USE_API)
|
|
|
|
new_config['General']['api_key'] = API_KEY
|
|
|
|
new_config['General']['debug'] = int(DEBUG)
|
|
|
|
new_config['General']['enable_https'] = int(ENABLE_HTTPS)
|
|
|
|
new_config['General']['https_cert'] = HTTPS_CERT
|
|
|
|
new_config['General']['https_key'] = HTTPS_KEY
|
|
|
|
new_config['General']['handle_reverse_proxy'] = int(HANDLE_REVERSE_PROXY)
|
|
|
|
new_config['General']['use_nzbs'] = int(USE_NZBS)
|
|
|
|
new_config['General']['use_torrents'] = int(USE_TORRENTS)
|
|
|
|
new_config['General']['nzb_method'] = NZB_METHOD
|
|
|
|
new_config['General']['torrent_method'] = TORRENT_METHOD
|
|
|
|
new_config['General']['usenet_retention'] = int(USENET_RETENTION)
|
|
|
|
new_config['General']['autopostprocesser_frequency'] = int(AUTOPOSTPROCESSER_FREQUENCY)
|
|
|
|
new_config['General']['recentsearch_frequency'] = int(RECENTSEARCH_FREQUENCY)
|
|
|
|
new_config['General']['backlog_frequency'] = int(BACKLOG_FREQUENCY)
|
|
|
|
new_config['General']['update_frequency'] = int(UPDATE_FREQUENCY)
|
|
|
|
new_config['General']['download_propers'] = int(DOWNLOAD_PROPERS)
|
|
|
|
new_config['General']['check_propers_interval'] = CHECK_PROPERS_INTERVAL
|
|
|
|
new_config['General']['allow_high_priority'] = int(ALLOW_HIGH_PRIORITY)
|
|
|
|
new_config['General']['recentsearch_startup'] = int(RECENTSEARCH_STARTUP)
|
|
|
|
new_config['General']['backlog_startup'] = int(BACKLOG_STARTUP)
|
|
|
|
new_config['General']['skip_removed_files'] = int(SKIP_REMOVED_FILES)
|
|
|
|
new_config['General']['quality_default'] = int(QUALITY_DEFAULT)
|
|
|
|
new_config['General']['status_default'] = int(STATUS_DEFAULT)
|
|
|
|
new_config['General']['wanted_begin_default'] = int(WANTED_BEGIN_DEFAULT)
|
|
|
|
new_config['General']['wanted_latest_default'] = int(WANTED_LATEST_DEFAULT)
|
|
|
|
new_config['General']['flatten_folders_default'] = int(FLATTEN_FOLDERS_DEFAULT)
|
|
|
|
new_config['General']['indexer_default'] = int(INDEXER_DEFAULT)
|
|
|
|
new_config['General']['indexer_timeout'] = int(INDEXER_TIMEOUT)
|
|
|
|
new_config['General']['anime_default'] = int(ANIME_DEFAULT)
|
|
|
|
new_config['General']['scene_default'] = int(SCENE_DEFAULT)
|
|
|
|
new_config['General']['provider_order'] = ' '.join(PROVIDER_ORDER)
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
new_config['General']['provider_homes'] = '%s' % PROVIDER_HOMES
|
|
|
|
new_config['General']['version_notify'] = int(VERSION_NOTIFY)
|
|
|
|
new_config['General']['auto_update'] = int(AUTO_UPDATE)
|
|
|
|
new_config['General']['notify_on_update'] = int(NOTIFY_ON_UPDATE)
|
|
|
|
new_config['General']['naming_strip_year'] = int(NAMING_STRIP_YEAR)
|
|
|
|
new_config['General']['naming_pattern'] = NAMING_PATTERN
|
|
|
|
new_config['General']['naming_custom_abd'] = int(NAMING_CUSTOM_ABD)
|
|
|
|
new_config['General']['naming_abd_pattern'] = NAMING_ABD_PATTERN
|
|
|
|
new_config['General']['naming_custom_sports'] = int(NAMING_CUSTOM_SPORTS)
|
|
|
|
new_config['General']['naming_sports_pattern'] = NAMING_SPORTS_PATTERN
|
|
|
|
new_config['General']['naming_custom_anime'] = int(NAMING_CUSTOM_ANIME)
|
|
|
|
new_config['General']['naming_anime_pattern'] = NAMING_ANIME_PATTERN
|
|
|
|
new_config['General']['naming_multi_ep'] = int(NAMING_MULTI_EP)
|
|
|
|
new_config['General']['naming_anime_multi_ep'] = int(NAMING_ANIME_MULTI_EP)
|
|
|
|
new_config['General']['naming_anime'] = int(NAMING_ANIME)
|
|
|
|
new_config['General']['launch_browser'] = int(LAUNCH_BROWSER)
|
|
|
|
new_config['General']['update_shows_on_start'] = int(UPDATE_SHOWS_ON_START)
|
|
|
|
new_config['General']['show_update_hour'] = int(SHOW_UPDATE_HOUR)
|
|
|
|
new_config['General']['allow_incomplete_showdata'] = int(ALLOW_INCOMPLETE_SHOWDATA)
|
|
|
|
new_config['General']['trash_remove_show'] = int(TRASH_REMOVE_SHOW)
|
|
|
|
new_config['General']['trash_rotate_logs'] = int(TRASH_ROTATE_LOGS)
|
|
|
|
new_config['General']['home_search_focus'] = int(HOME_SEARCH_FOCUS)
|
|
|
|
new_config['General']['sort_article'] = int(SORT_ARTICLE)
|
|
|
|
new_config['General']['proxy_setting'] = PROXY_SETTING
|
|
|
|
new_config['General']['proxy_indexers'] = int(PROXY_INDEXERS)
|
|
|
|
new_config['General']['display_background'] = int(DISPLAY_BACKGROUND)
|
|
|
|
new_config['General']['display_background_transparent'] = DISPLAY_BACKGROUND_TRANSPARENT
|
|
|
|
new_config['General']['display_all_seasons'] = int(DISPLAY_ALL_SEASONS)
|
|
|
|
|
|
|
|
new_config['General']['metadata_xbmc'] = METADATA_XBMC
|
|
|
|
new_config['General']['metadata_xbmc_12plus'] = METADATA_XBMC_12PLUS
|
|
|
|
new_config['General']['metadata_mediabrowser'] = METADATA_MEDIABROWSER
|
|
|
|
new_config['General']['metadata_ps3'] = METADATA_PS3
|
|
|
|
new_config['General']['metadata_wdtv'] = METADATA_WDTV
|
|
|
|
new_config['General']['metadata_tivo'] = METADATA_TIVO
|
|
|
|
new_config['General']['metadata_mede8er'] = METADATA_MEDE8ER
|
|
|
|
new_config['General']['metadata_kodi'] = METADATA_KODI
|
|
|
|
|
|
|
|
new_config['General']['backlog_days'] = int(BACKLOG_DAYS)
|
|
|
|
new_config['General']['search_unaired'] = int(SEARCH_UNAIRED)
|
|
|
|
|
|
|
|
new_config['General']['cache_dir'] = ACTUAL_CACHE_DIR if ACTUAL_CACHE_DIR else 'cache'
|
|
|
|
new_config['General']['root_dirs'] = ROOT_DIRS if ROOT_DIRS else ''
|
|
|
|
new_config['General']['tv_download_dir'] = TV_DOWNLOAD_DIR
|
|
|
|
new_config['General']['keep_processed_dir'] = int(KEEP_PROCESSED_DIR)
|
|
|
|
new_config['General']['process_method'] = PROCESS_METHOD
|
|
|
|
new_config['General']['move_associated_files'] = int(MOVE_ASSOCIATED_FILES)
|
|
|
|
new_config['General']['postpone_if_sync_files'] = int(POSTPONE_IF_SYNC_FILES)
|
|
|
|
new_config['General']['nfo_rename'] = int(NFO_RENAME)
|
|
|
|
new_config['General']['process_automatically'] = int(PROCESS_AUTOMATICALLY)
|
|
|
|
new_config['General']['unpack'] = int(UNPACK)
|
|
|
|
new_config['General']['rename_episodes'] = int(RENAME_EPISODES)
|
|
|
|
new_config['General']['airdate_episodes'] = int(AIRDATE_EPISODES)
|
|
|
|
new_config['General']['create_missing_show_dirs'] = int(CREATE_MISSING_SHOW_DIRS)
|
|
|
|
new_config['General']['add_shows_wo_dir'] = int(ADD_SHOWS_WO_DIR)
|
|
|
|
|
|
|
|
new_config['General']['extra_scripts'] = '|'.join(EXTRA_SCRIPTS)
|
|
|
|
new_config['General']['git_path'] = GIT_PATH
|
|
|
|
new_config['General']['ignore_words'] = IGNORE_WORDS
|
|
|
|
new_config['General']['require_words'] = REQUIRE_WORDS
|
|
|
|
new_config['General']['calendar_unprotected'] = int(CALENDAR_UNPROTECTED)
|
|
|
|
|
|
|
|
new_config['Blackhole'] = {}
|
|
|
|
new_config['Blackhole']['nzb_dir'] = NZB_DIR
|
|
|
|
new_config['Blackhole']['torrent_dir'] = TORRENT_DIR
|
|
|
|
|
Change validate and improve specific Torrent provider connections, IPT, KAT, SCC, TPB, TB, TD, TT.
Change refactor cache for torrent providers to reduce code.
Change improve search category selection BMTV, FSH, FF, TB.
Change identify more SD release qualities.
Change update SpeedCD, MoreThan, TVChaosuk.
Add torrent provider HD4Free.
Remove torrent provider BitSoup.
Change only create threads for providers needing a recent search instead of for all enabled.
Add 4489 as experimental value to "Recent search frequency" to use provider freqs instead of fixed width for all.
Fix searching nzb season packs.
Change remove some logging cruft.
9 years ago
|
|
|
for src in [x for x in providers.sortedProviderList() if GenericProvider.TORRENT == x.providerType]:
|
|
|
|
src_id = src.get_id()
|
|
|
|
src_id_uc = src_id.upper()
|
|
|
|
new_config[src_id_uc] = {}
|
|
|
|
new_config[src_id_uc][src_id] = int(src.enabled)
|
|
|
|
if getattr(src, 'url_edit', None):
|
|
|
|
new_config[src_id_uc][src_id + '_url_home'] = src.url_home
|
|
|
|
|
|
|
|
if hasattr(src, 'password'):
|
|
|
|
new_config[src_id_uc][src_id + '_password'] = helpers.encrypt(src.password, ENCRYPTION_VERSION)
|
|
|
|
|
|
|
|
for (setting, value) in [
|
|
|
|
('%s_%s' % (src_id, k), getattr(src, k, v) if not v else helpers.tryInt(getattr(src, k, None)))
|
|
|
|
for (k, v) in [
|
|
|
|
('api_key', None), ('passkey', None), ('digest', None), ('hash', None), ('username', ''), ('uid', ''),
|
|
|
|
('minseed', 1), ('minleech', 1), ('confirmed', 1), ('freeleech', 1), ('reject_m2ts', 1),
|
|
|
|
('enable_recentsearch', 1), ('enable_backlog', 1), ('search_mode', None), ('search_fallback', 1),
|
|
|
|
('seed_time', None)] if hasattr(src, k)]:
|
|
|
|
new_config[src_id_uc][setting] = value
|
|
|
|
|
|
|
|
if hasattr(src, '_seed_ratio'):
|
|
|
|
new_config[src_id_uc][src_id + '_seed_ratio'] = src.seed_ratio()
|
|
|
|
|
|
|
|
for src in [x for x in providers.sortedProviderList() if GenericProvider.NZB == x.providerType]:
|
|
|
|
src_id = src.get_id()
|
|
|
|
src_id_uc = src.get_id().upper()
|
|
|
|
new_config[src_id_uc] = {}
|
|
|
|
new_config[src_id_uc][src_id] = int(src.enabled)
|
|
|
|
|
|
|
|
for attr in [x for x in ['api_key', 'username', 'search_mode'] if hasattr(src, x)]:
|
|
|
|
new_config[src_id_uc]['%s_%s' % (src_id, attr)] = getattr(src, attr)
|
|
|
|
|
|
|
|
for attr in [x for x in ['enable_recentsearch', 'enable_backlog', 'search_fallback'] if hasattr(src, x)]:
|
|
|
|
new_config[src_id_uc]['%s_%s' % (src_id, attr)] = helpers.tryInt(getattr(src, attr, None))
|
|
|
|
|
|
|
|
new_config['SABnzbd'] = {}
|
|
|
|
new_config['SABnzbd']['sab_username'] = SAB_USERNAME
|
|
|
|
new_config['SABnzbd']['sab_password'] = helpers.encrypt(SAB_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
new_config['SABnzbd']['sab_apikey'] = SAB_APIKEY
|
|
|
|
new_config['SABnzbd']['sab_category'] = SAB_CATEGORY
|
|
|
|
new_config['SABnzbd']['sab_host'] = SAB_HOST
|
|
|
|
|
|
|
|
new_config['NZBget'] = {}
|
|
|
|
|
|
|
|
new_config['NZBget']['nzbget_username'] = NZBGET_USERNAME
|
|
|
|
new_config['NZBget']['nzbget_password'] = helpers.encrypt(NZBGET_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
new_config['NZBget']['nzbget_category'] = NZBGET_CATEGORY
|
|
|
|
new_config['NZBget']['nzbget_host'] = NZBGET_HOST
|
|
|
|
new_config['NZBget']['nzbget_use_https'] = int(NZBGET_USE_HTTPS)
|
|
|
|
new_config['NZBget']['nzbget_priority'] = NZBGET_PRIORITY
|
|
|
|
|
|
|
|
new_config['TORRENT'] = {}
|
|
|
|
new_config['TORRENT']['torrent_username'] = TORRENT_USERNAME
|
|
|
|
new_config['TORRENT']['torrent_password'] = helpers.encrypt(TORRENT_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
new_config['TORRENT']['torrent_host'] = TORRENT_HOST
|
|
|
|
new_config['TORRENT']['torrent_path'] = TORRENT_PATH
|
|
|
|
new_config['TORRENT']['torrent_seed_time'] = int(TORRENT_SEED_TIME)
|
|
|
|
new_config['TORRENT']['torrent_paused'] = int(TORRENT_PAUSED)
|
|
|
|
new_config['TORRENT']['torrent_high_bandwidth'] = int(TORRENT_HIGH_BANDWIDTH)
|
|
|
|
new_config['TORRENT']['torrent_label'] = TORRENT_LABEL
|
|
|
|
new_config['TORRENT']['torrent_verify_cert'] = int(TORRENT_VERIFY_CERT)
|
|
|
|
|
|
|
|
new_config['Emby'] = {}
|
|
|
|
new_config['Emby']['use_emby'] = int(USE_EMBY)
|
|
|
|
new_config['Emby']['emby_update_library'] = int(EMBY_UPDATE_LIBRARY)
|
|
|
|
new_config['Emby']['emby_host'] = EMBY_HOST
|
|
|
|
new_config['Emby']['emby_apikey'] = EMBY_APIKEY
|
|
|
|
|
|
|
|
new_config['Kodi'] = {}
|
|
|
|
new_config['Kodi']['use_kodi'] = int(USE_KODI)
|
|
|
|
new_config['Kodi']['kodi_always_on'] = int(KODI_ALWAYS_ON)
|
|
|
|
new_config['Kodi']['kodi_notify_onsnatch'] = int(KODI_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Kodi']['kodi_notify_ondownload'] = int(KODI_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Kodi']['kodi_notify_onsubtitledownload'] = int(KODI_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Kodi']['kodi_update_library'] = int(KODI_UPDATE_LIBRARY)
|
|
|
|
new_config['Kodi']['kodi_update_full'] = int(KODI_UPDATE_FULL)
|
|
|
|
new_config['Kodi']['kodi_update_onlyfirst'] = int(KODI_UPDATE_ONLYFIRST)
|
|
|
|
new_config['Kodi']['kodi_host'] = KODI_HOST
|
|
|
|
new_config['Kodi']['kodi_username'] = KODI_USERNAME
|
|
|
|
new_config['Kodi']['kodi_password'] = helpers.encrypt(KODI_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
|
|
|
|
new_config['XBMC'] = {}
|
|
|
|
new_config['XBMC']['use_xbmc'] = int(USE_XBMC)
|
|
|
|
new_config['XBMC']['xbmc_always_on'] = int(XBMC_ALWAYS_ON)
|
|
|
|
new_config['XBMC']['xbmc_notify_onsnatch'] = int(XBMC_NOTIFY_ONSNATCH)
|
|
|
|
new_config['XBMC']['xbmc_notify_ondownload'] = int(XBMC_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['XBMC']['xbmc_notify_onsubtitledownload'] = int(XBMC_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['XBMC']['xbmc_update_library'] = int(XBMC_UPDATE_LIBRARY)
|
|
|
|
new_config['XBMC']['xbmc_update_full'] = int(XBMC_UPDATE_FULL)
|
|
|
|
new_config['XBMC']['xbmc_update_onlyfirst'] = int(XBMC_UPDATE_ONLYFIRST)
|
|
|
|
new_config['XBMC']['xbmc_host'] = XBMC_HOST
|
|
|
|
new_config['XBMC']['xbmc_username'] = XBMC_USERNAME
|
|
|
|
new_config['XBMC']['xbmc_password'] = helpers.encrypt(XBMC_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
|
|
|
|
new_config['Plex'] = {}
|
|
|
|
new_config['Plex']['use_plex'] = int(USE_PLEX)
|
|
|
|
new_config['Plex']['plex_notify_onsnatch'] = int(PLEX_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Plex']['plex_notify_ondownload'] = int(PLEX_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Plex']['plex_notify_onsubtitledownload'] = int(PLEX_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Plex']['plex_update_library'] = int(PLEX_UPDATE_LIBRARY)
|
|
|
|
new_config['Plex']['plex_server_host'] = PLEX_SERVER_HOST
|
|
|
|
new_config['Plex']['plex_host'] = PLEX_HOST
|
|
|
|
new_config['Plex']['plex_username'] = PLEX_USERNAME
|
|
|
|
new_config['Plex']['plex_password'] = helpers.encrypt(PLEX_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
|
|
|
|
new_config['Growl'] = {}
|
|
|
|
new_config['Growl']['use_growl'] = int(USE_GROWL)
|
|
|
|
new_config['Growl']['growl_notify_onsnatch'] = int(GROWL_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Growl']['growl_notify_ondownload'] = int(GROWL_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Growl']['growl_notify_onsubtitledownload'] = int(GROWL_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Growl']['growl_host'] = GROWL_HOST
|
|
|
|
new_config['Growl']['growl_password'] = helpers.encrypt(GROWL_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
|
|
|
|
new_config['Prowl'] = {}
|
|
|
|
new_config['Prowl']['use_prowl'] = int(USE_PROWL)
|
|
|
|
new_config['Prowl']['prowl_notify_onsnatch'] = int(PROWL_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Prowl']['prowl_notify_ondownload'] = int(PROWL_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Prowl']['prowl_notify_onsubtitledownload'] = int(PROWL_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Prowl']['prowl_api'] = PROWL_API
|
|
|
|
new_config['Prowl']['prowl_priority'] = PROWL_PRIORITY
|
|
|
|
|
|
|
|
new_config['Twitter'] = {}
|
|
|
|
new_config['Twitter']['use_twitter'] = int(USE_TWITTER)
|
|
|
|
new_config['Twitter']['twitter_notify_onsnatch'] = int(TWITTER_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Twitter']['twitter_notify_ondownload'] = int(TWITTER_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Twitter']['twitter_notify_onsubtitledownload'] = int(TWITTER_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Twitter']['twitter_username'] = TWITTER_USERNAME
|
|
|
|
new_config['Twitter']['twitter_password'] = helpers.encrypt(TWITTER_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
new_config['Twitter']['twitter_prefix'] = TWITTER_PREFIX
|
|
|
|
|
|
|
|
new_config['Boxcar2'] = {}
|
|
|
|
new_config['Boxcar2']['use_boxcar2'] = int(USE_BOXCAR2)
|
|
|
|
new_config['Boxcar2']['boxcar2_notify_onsnatch'] = int(BOXCAR2_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Boxcar2']['boxcar2_notify_ondownload'] = int(BOXCAR2_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Boxcar2']['boxcar2_notify_onsubtitledownload'] = int(BOXCAR2_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Boxcar2']['boxcar2_accesstoken'] = BOXCAR2_ACCESSTOKEN
|
|
|
|
new_config['Boxcar2']['boxcar2_sound'] = BOXCAR2_SOUND
|
|
|
|
|
|
|
|
new_config['Pushover'] = {}
|
|
|
|
new_config['Pushover']['use_pushover'] = int(USE_PUSHOVER)
|
|
|
|
new_config['Pushover']['pushover_notify_onsnatch'] = int(PUSHOVER_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Pushover']['pushover_notify_ondownload'] = int(PUSHOVER_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Pushover']['pushover_notify_onsubtitledownload'] = int(PUSHOVER_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Pushover']['pushover_userkey'] = PUSHOVER_USERKEY
|
|
|
|
new_config['Pushover']['pushover_apikey'] = PUSHOVER_APIKEY
|
|
|
|
new_config['Pushover']['pushover_priority'] = int(PUSHOVER_PRIORITY)
|
|
|
|
new_config['Pushover']['pushover_device'] = PUSHOVER_DEVICE
|
|
|
|
new_config['Pushover']['pushover_sound'] = PUSHOVER_SOUND
|
|
|
|
|
|
|
|
new_config['Libnotify'] = {}
|
|
|
|
new_config['Libnotify']['use_libnotify'] = int(USE_LIBNOTIFY)
|
|
|
|
new_config['Libnotify']['libnotify_notify_onsnatch'] = int(LIBNOTIFY_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Libnotify']['libnotify_notify_ondownload'] = int(LIBNOTIFY_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Libnotify']['libnotify_notify_onsubtitledownload'] = int(LIBNOTIFY_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
|
|
|
|
new_config['NMJ'] = {}
|
|
|
|
new_config['NMJ']['use_nmj'] = int(USE_NMJ)
|
|
|
|
new_config['NMJ']['nmj_host'] = NMJ_HOST
|
|
|
|
new_config['NMJ']['nmj_database'] = NMJ_DATABASE
|
|
|
|
new_config['NMJ']['nmj_mount'] = NMJ_MOUNT
|
|
|
|
|
|
|
|
new_config['NMJv2'] = {}
|
|
|
|
new_config['NMJv2']['use_nmjv2'] = int(USE_NMJv2)
|
|
|
|
new_config['NMJv2']['nmjv2_host'] = NMJv2_HOST
|
|
|
|
new_config['NMJv2']['nmjv2_database'] = NMJv2_DATABASE
|
|
|
|
new_config['NMJv2']['nmjv2_dbloc'] = NMJv2_DBLOC
|
|
|
|
|
|
|
|
new_config['Synology'] = {}
|
|
|
|
new_config['Synology']['use_synoindex'] = int(USE_SYNOINDEX)
|
|
|
|
|
|
|
|
new_config['SynologyNotifier'] = {}
|
|
|
|
new_config['SynologyNotifier']['use_synologynotifier'] = int(USE_SYNOLOGYNOTIFIER)
|
|
|
|
new_config['SynologyNotifier']['synologynotifier_notify_onsnatch'] = int(SYNOLOGYNOTIFIER_NOTIFY_ONSNATCH)
|
|
|
|
new_config['SynologyNotifier']['synologynotifier_notify_ondownload'] = int(SYNOLOGYNOTIFIER_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['SynologyNotifier']['synologynotifier_notify_onsubtitledownload'] = int(
|
|
|
|
SYNOLOGYNOTIFIER_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
|
|
|
|
new_config['Trakt'] = {}
|
|
|
|
new_config['Trakt']['use_trakt'] = int(USE_TRAKT)
|
|
|
|
new_config['Trakt']['trakt_remove_watchlist'] = int(TRAKT_REMOVE_WATCHLIST)
|
|
|
|
new_config['Trakt']['trakt_remove_serieslist'] = int(TRAKT_REMOVE_SERIESLIST)
|
|
|
|
new_config['Trakt']['trakt_use_watchlist'] = int(TRAKT_USE_WATCHLIST)
|
|
|
|
new_config['Trakt']['trakt_method_add'] = int(TRAKT_METHOD_ADD)
|
|
|
|
new_config['Trakt']['trakt_start_paused'] = int(TRAKT_START_PAUSED)
|
|
|
|
new_config['Trakt']['trakt_sync'] = int(TRAKT_SYNC)
|
|
|
|
new_config['Trakt']['trakt_default_indexer'] = int(TRAKT_DEFAULT_INDEXER)
|
|
|
|
new_config['Trakt']['trakt_update_collection'] = trakt_helpers.build_config_string(TRAKT_UPDATE_COLLECTION)
|
|
|
|
new_config['Trakt']['trakt_accounts'] = TraktAPI.build_config_string(TRAKT_ACCOUNTS)
|
|
|
|
new_config['Trakt']['trakt_mru'] = TRAKT_MRU
|
|
|
|
|
|
|
|
new_config['pyTivo'] = {}
|
|
|
|
new_config['pyTivo']['use_pytivo'] = int(USE_PYTIVO)
|
|
|
|
new_config['pyTivo']['pytivo_notify_onsnatch'] = int(PYTIVO_NOTIFY_ONSNATCH)
|
|
|
|
new_config['pyTivo']['pytivo_notify_ondownload'] = int(PYTIVO_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['pyTivo']['pytivo_notify_onsubtitledownload'] = int(PYTIVO_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['pyTivo']['pyTivo_update_library'] = int(PYTIVO_UPDATE_LIBRARY)
|
|
|
|
new_config['pyTivo']['pytivo_host'] = PYTIVO_HOST
|
|
|
|
new_config['pyTivo']['pytivo_share_name'] = PYTIVO_SHARE_NAME
|
|
|
|
new_config['pyTivo']['pytivo_tivo_name'] = PYTIVO_TIVO_NAME
|
|
|
|
|
|
|
|
new_config['NMA'] = {}
|
|
|
|
new_config['NMA']['use_nma'] = int(USE_NMA)
|
|
|
|
new_config['NMA']['nma_notify_onsnatch'] = int(NMA_NOTIFY_ONSNATCH)
|
|
|
|
new_config['NMA']['nma_notify_ondownload'] = int(NMA_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['NMA']['nma_notify_onsubtitledownload'] = int(NMA_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['NMA']['nma_api'] = NMA_API
|
|
|
|
new_config['NMA']['nma_priority'] = NMA_PRIORITY
|
|
|
|
|
|
|
|
new_config['Pushalot'] = {}
|
|
|
|
new_config['Pushalot']['use_pushalot'] = int(USE_PUSHALOT)
|
|
|
|
new_config['Pushalot']['pushalot_notify_onsnatch'] = int(PUSHALOT_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Pushalot']['pushalot_notify_ondownload'] = int(PUSHALOT_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Pushalot']['pushalot_notify_onsubtitledownload'] = int(PUSHALOT_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Pushalot']['pushalot_authorizationtoken'] = PUSHALOT_AUTHORIZATIONTOKEN
|
|
|
|
|
|
|
|
new_config['Pushbullet'] = {}
|
|
|
|
new_config['Pushbullet']['use_pushbullet'] = int(USE_PUSHBULLET)
|
|
|
|
new_config['Pushbullet']['pushbullet_notify_onsnatch'] = int(PUSHBULLET_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Pushbullet']['pushbullet_notify_ondownload'] = int(PUSHBULLET_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Pushbullet']['pushbullet_notify_onsubtitledownload'] = int(PUSHBULLET_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Pushbullet']['pushbullet_access_token'] = PUSHBULLET_ACCESS_TOKEN
|
|
|
|
new_config['Pushbullet']['pushbullet_device_iden'] = PUSHBULLET_DEVICE_IDEN
|
|
|
|
|
|
|
|
new_config['Email'] = {}
|
|
|
|
new_config['Email']['use_email'] = int(USE_EMAIL)
|
|
|
|
new_config['Email']['email_old_subjects'] = int(EMAIL_OLD_SUBJECTS)
|
|
|
|
new_config['Email']['email_notify_onsnatch'] = int(EMAIL_NOTIFY_ONSNATCH)
|
|
|
|
new_config['Email']['email_notify_ondownload'] = int(EMAIL_NOTIFY_ONDOWNLOAD)
|
|
|
|
new_config['Email']['email_notify_onsubtitledownload'] = int(EMAIL_NOTIFY_ONSUBTITLEDOWNLOAD)
|
|
|
|
new_config['Email']['email_host'] = EMAIL_HOST
|
|
|
|
new_config['Email']['email_port'] = int(EMAIL_PORT)
|
|
|
|
new_config['Email']['email_tls'] = int(EMAIL_TLS)
|
|
|
|
new_config['Email']['email_user'] = EMAIL_USER
|
|
|
|
new_config['Email']['email_password'] = helpers.encrypt(EMAIL_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
new_config['Email']['email_from'] = EMAIL_FROM
|
|
|
|
new_config['Email']['email_list'] = EMAIL_LIST
|
|
|
|
|
|
|
|
new_config['Newznab'] = {}
|
|
|
|
new_config['Newznab']['newznab_data'] = NEWZNAB_DATA
|
|
|
|
|
|
|
|
new_config['TorrentRss'] = {}
|
|
|
|
new_config['TorrentRss']['torrentrss_data'] = '!!!'.join([x.config_str() for x in torrentRssProviderList])
|
|
|
|
|
|
|
|
new_config['GUI'] = {}
|
|
|
|
new_config['GUI']['gui_name'] = GUI_NAME
|
|
|
|
new_config['GUI']['theme_name'] = THEME_NAME
|
|
|
|
new_config['GUI']['default_home'] = DEFAULT_HOME
|
|
|
|
new_config['GUI']['use_imdb_info'] = int(USE_IMDB_INFO)
|
|
|
|
new_config['GUI']['imdb_accounts'] = IMDB_ACCOUNTS
|
|
|
|
new_config['GUI']['fuzzy_dating'] = int(FUZZY_DATING)
|
|
|
|
new_config['GUI']['trim_zero'] = int(TRIM_ZERO)
|
|
|
|
new_config['GUI']['date_preset'] = DATE_PRESET
|
|
|
|
new_config['GUI']['time_preset'] = TIME_PRESET_W_SECONDS
|
|
|
|
new_config['GUI']['timezone_display'] = TIMEZONE_DISPLAY
|
|
|
|
new_config['GUI']['home_layout'] = HOME_LAYOUT
|
|
|
|
new_config['GUI']['history_layout'] = HISTORY_LAYOUT
|
|
|
|
new_config['GUI']['display_show_specials'] = int(DISPLAY_SHOW_SPECIALS)
|
|
|
|
new_config['GUI']['episode_view_layout'] = EPISODE_VIEW_LAYOUT
|
|
|
|
new_config['GUI']['episode_view_sort'] = EPISODE_VIEW_SORT
|
|
|
|
new_config['GUI']['episode_view_display_paused'] = int(EPISODE_VIEW_DISPLAY_PAUSED)
|
|
|
|
new_config['GUI']['episode_view_missed_range'] = int(EPISODE_VIEW_MISSED_RANGE)
|
|
|
|
new_config['GUI']['poster_sortby'] = POSTER_SORTBY
|
|
|
|
new_config['GUI']['poster_sortdir'] = POSTER_SORTDIR
|
|
|
|
new_config['GUI']['show_tags'] = ','.join(SHOW_TAGS)
|
|
|
|
new_config['GUI']['showlist_tagview'] = SHOWLIST_TAGVIEW
|
|
|
|
new_config['GUI']['default_show_tag'] = DEFAULT_SHOW_TAG
|
|
|
|
|
|
|
|
new_config['Subtitles'] = {}
|
|
|
|
new_config['Subtitles']['use_subtitles'] = int(USE_SUBTITLES)
|
|
|
|
new_config['Subtitles']['subtitles_languages'] = ','.join(SUBTITLES_LANGUAGES)
|
|
|
|
new_config['Subtitles']['SUBTITLES_SERVICES_LIST'] = ','.join(SUBTITLES_SERVICES_LIST)
|
|
|
|
new_config['Subtitles']['SUBTITLES_SERVICES_ENABLED'] = '|'.join([str(x) for x in SUBTITLES_SERVICES_ENABLED])
|
|
|
|
new_config['Subtitles']['subtitles_dir'] = SUBTITLES_DIR
|
|
|
|
new_config['Subtitles']['subtitles_default'] = int(SUBTITLES_DEFAULT)
|
|
|
|
new_config['Subtitles']['subtitles_history'] = int(SUBTITLES_HISTORY)
|
|
|
|
new_config['Subtitles']['subtitles_finder_frequency'] = int(SUBTITLES_FINDER_FREQUENCY)
|
|
|
|
|
|
|
|
new_config['FailedDownloads'] = {}
|
|
|
|
new_config['FailedDownloads']['use_failed_downloads'] = int(USE_FAILED_DOWNLOADS)
|
|
|
|
new_config['FailedDownloads']['delete_failed'] = int(DELETE_FAILED)
|
|
|
|
|
|
|
|
new_config['ANIDB'] = {}
|
|
|
|
new_config['ANIDB']['use_anidb'] = int(USE_ANIDB)
|
|
|
|
new_config['ANIDB']['anidb_username'] = ANIDB_USERNAME
|
|
|
|
new_config['ANIDB']['anidb_password'] = helpers.encrypt(ANIDB_PASSWORD, ENCRYPTION_VERSION)
|
|
|
|
new_config['ANIDB']['anidb_use_mylist'] = int(ANIDB_USE_MYLIST)
|
|
|
|
|
|
|
|
new_config['ANIME'] = {}
|
|
|
|
new_config['ANIME']['anime_treat_as_hdtv'] = int(ANIME_TREAT_AS_HDTV)
|
|
|
|
|
|
|
|
new_config.write()
|
|
|
|
|
|
|
|
|
|
|
|
def launch_browser(start_port=None):
|
|
|
|
if not start_port:
|
|
|
|
start_port = WEB_PORT
|
|
|
|
if ENABLE_HTTPS:
|
|
|
|
browser_url = 'https://localhost:%d%s' % (start_port, WEB_ROOT)
|
|
|
|
else:
|
|
|
|
browser_url = 'http://localhost:%d%s' % (start_port, WEB_ROOT)
|
|
|
|
try:
|
|
|
|
webbrowser.open(browser_url, 2, 1)
|
|
|
|
except:
|
|
|
|
try:
|
|
|
|
webbrowser.open(browser_url, 1, 1)
|
|
|
|
except:
|
|
|
|
logger.log(u'Unable to launch a browser', logger.ERROR)
|