def change_LOG_DIR(log_dir, web_log): """ Change logging directory for application and webserver :param log_dir: Path to new logging directory :param web_log: Enable/disable web logging :return: True on success, False on failure """ log_dir_changed = False abs_log_dir = ek(os.path.normpath, ek(os.path.join, sickbeard.DATA_DIR, log_dir)) web_log_value = checkbox_to_value(web_log) if ek(os.path.normpath, sickbeard.LOG_DIR) != abs_log_dir: if helpers.makeDir(abs_log_dir): sickbeard.ACTUAL_LOG_DIR = ek(os.path.normpath, log_dir) sickbeard.LOG_DIR = abs_log_dir logger.initLogging() logger.log(u"Initialized new log file in " + sickbeard.LOG_DIR) log_dir_changed = True else: return False if sickbeard.WEB_LOG != web_log_value or log_dir_changed is True: sickbeard.WEB_LOG = web_log_value return True
def change_LOG_DIR(log_dir, web_log): """ Change logging directory for application and webserver :param log_dir: Path to new logging directory :param web_log: Enable/disable web logging :return: True on success, False on failure """ log_dir_changed = False abs_log_dir = os.path.normpath(os.path.join(sickbeard.DATA_DIR, log_dir)) web_log_value = checkbox_to_value(web_log) if os.path.normpath(sickbeard.LOG_DIR) != abs_log_dir: if helpers.makeDir(abs_log_dir): sickbeard.ACTUAL_LOG_DIR = os.path.normpath(log_dir) sickbeard.LOG_DIR = abs_log_dir logger.initLogging() logger.log(u"Initialized new log file in " + sickbeard.LOG_DIR) log_dir_changed = True else: return False if sickbeard.WEB_LOG != web_log_value or log_dir_changed == True: sickbeard.WEB_LOG = web_log_value return True
def change_LOG_DIR(log_dir): if os.path.normpath(sickbeard.LOG_DIR) != os.path.normpath(log_dir): if helpers.makeDir(log_dir): sickbeard.LOG_DIR = os.path.normpath(log_dir) logger.initLogging() logger.log(u"Initialized new log file in " + log_dir) cherry_log = os.path.join(sickbeard.LOG_DIR, "cherrypy.log") cherrypy.config.update({'log.access_file': cherry_log}) logger.log(u"Changed cherry log file to " + cherry_log) else: return False return True
def change_LOG_DIR(log_dir, web_log): log_dir_changed = False abs_log_dir = os.path.normpath(os.path.join(sickbeard.DATA_DIR, log_dir)) web_log_value = checkbox_to_value(web_log) if os.path.normpath(sickbeard.LOG_DIR) != abs_log_dir: if helpers.makeDir(abs_log_dir): sickbeard.ACTUAL_LOG_DIR = os.path.normpath(log_dir) sickbeard.LOG_DIR = abs_log_dir logger.initLogging() logger.log(u"Initialized new log file in " + sickbeard.LOG_DIR) log_dir_changed = True else: return False if sickbeard.WEB_LOG != web_log_value or log_dir_changed == True: sickbeard.WEB_LOG = web_log_value return True
def initialize(consoleLogging=True): with INIT_LOCK: global LOG_DIR, WEB_PORT, WEB_LOG, WEB_ROOT, WEB_USERNAME, WEB_PASSWORD, WEB_HOST, \ NZB_METHOD, NZB_DIR, TVBINZ, TVBINZ_UID, TVBINZ_HASH, \ SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_HOST, \ XBMC_NOTIFY_ONSNATCH, XBMC_NOTIFY_ONDOWNLOAD, XBMC_UPDATE_FULL, \ XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, currentSearchScheduler, backlogSearchScheduler, \ showUpdateScheduler, __INITIALIZED__, LAUNCH_BROWSER, showList, \ airingList, comingList, loadingShowList, CREATE_METADATA, SOCKET_TIMEOUT, \ NZBS, NZBS_UID, NZBS_HASH, USE_NZB, USE_TORRENT, TORRENT_DIR, USENET_RETENTION, \ SEARCH_FREQUENCY, DEFAULT_SEARCH_FREQUENCY, BACKLOG_SEARCH_FREQUENCY, \ DEFAULT_BACKLOG_SEARCH_FREQUENCY, QUALITY_DEFAULT, SEASON_FOLDERS_DEFAULT, \ USE_GROWL, GROWL_HOST, GROWL_PASSWORD, PROG_DIR, NZBMATRIX, NZBMATRIX_USERNAME, \ NZBMATRIX_APIKEY, versionCheckScheduler, VERSION_NOTIFY, PROCESS_AUTOMATICALLY, \ KEEP_PROCESSED_DIR, TV_DOWNLOAD_DIR, TVDB_BASE_URL, MIN_SEARCH_FREQUENCY, \ MIN_BACKLOG_SEARCH_FREQUENCY, TVBINZ_AUTH, TVBINZ_SABUID, showQueueScheduler, \ NAMING_SHOW_NAME, NAMING_EP_TYPE, NAMING_MULTI_EP_TYPE, CACHE_DIR, TVDB_API_PARMS, \ RENAME_EPISODES, properFinderScheduler, PROVIDER_ORDER, autoPostProcesserScheduler, \ CREATE_IMAGES, NAMING_EP_NAME, NAMING_SEP_TYPE, NAMING_USE_PERIODS, \ NZBSRUS, NZBSRUS_UID, NZBSRUS_HASH, BINREQ, NAMING_QUALITY, providerList, newznabProviderList, \ NAMING_DATES, EXTRA_SCRIPTS if __INITIALIZED__: return False socket.setdefaulttimeout(SOCKET_TIMEOUT) CheckSection('General') CheckSection('Blackhole') CheckSection('Newzbin') CheckSection('TVBinz') CheckSection('SABnzbd') CheckSection('XBMC') CheckSection('Growl') LOG_DIR = check_setting_str(CFG, 'General', 'log_dir', 'Logs') if not helpers.makeDir(LOG_DIR): logger.log("!!! No log folder, logging to screen only!", logger.ERROR) 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_ROOT = check_setting_str(CFG, 'General', 'web_root', '').rstrip("/") WEB_LOG = bool(check_setting_int(CFG, 'General', 'web_log', 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)) CREATE_METADATA = bool(check_setting_int(CFG, 'General', 'create_metadata', 1)) CREATE_IMAGES = bool(check_setting_int(CFG, 'General', 'create_images', 1)) CACHE_DIR = check_setting_str(CFG, 'General', 'cache_dir', 'cache') if not helpers.makeDir(CACHE_DIR): logger.log("!!! Creating local cache dir failed, using system default", logger.ERROR) CACHE_DIR = None # Set our common tvdb_api options here TVDB_API_PARMS = {'cache': True, 'apikey': TVDB_API_KEY, 'language': 'en', 'cache_dir': False} if CACHE_DIR: TVDB_API_PARMS['cache_dir'] = os.path.join(CACHE_DIR, 'tvdb') QUALITY_DEFAULT = check_setting_int(CFG, 'General', 'quality_default', SD) VERSION_NOTIFY = check_setting_int(CFG, 'General', 'version_notify', 1) SEASON_FOLDERS_DEFAULT = bool(check_setting_int(CFG, 'General', 'season_folders_default', 0)) PROVIDER_ORDER = check_setting_str(CFG, 'General', 'provider_order', '').split() NAMING_SHOW_NAME = bool(check_setting_int(CFG, 'General', 'naming_show_name', 1)) NAMING_EP_NAME = bool(check_setting_int(CFG, 'General', 'naming_ep_name', 1)) NAMING_EP_TYPE = check_setting_int(CFG, 'General', 'naming_ep_type', 0) NAMING_MULTI_EP_TYPE = check_setting_int(CFG, 'General', 'naming_multi_ep_type', 0) NAMING_SEP_TYPE = check_setting_int(CFG, 'General', 'naming_sep_type', 0) NAMING_USE_PERIODS = bool(check_setting_int(CFG, 'General', 'naming_use_periods', 0)) NAMING_QUALITY = bool(check_setting_int(CFG, 'General', 'naming_quality', 0)) NAMING_DATES = bool(check_setting_int(CFG, 'General', 'naming_dates', 1)) TVDB_BASE_URL = 'http://www.thetvdb.com/api/' + TVDB_API_KEY NZB_METHOD = check_setting_str(CFG, 'General', 'nzb_method', 'blackhole') if NZB_METHOD not in ('blackhole', 'sabnzbd'): NZB_METHOD = 'blackhole' USE_NZB = bool(check_setting_int(CFG, 'General', 'use_nzb', 1)) USE_TORRENT = bool(check_setting_int(CFG, 'General', 'use_torrent', 0)) USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', 500) SEARCH_FREQUENCY = check_setting_int(CFG, 'General', 'search_frequency', DEFAULT_SEARCH_FREQUENCY) if SEARCH_FREQUENCY < MIN_SEARCH_FREQUENCY: SEARCH_FREQUENCY = MIN_SEARCH_FREQUENCY BACKLOG_SEARCH_FREQUENCY = check_setting_int(CFG, 'General', 'backlog_search_frequency', DEFAULT_BACKLOG_SEARCH_FREQUENCY) if BACKLOG_SEARCH_FREQUENCY < MIN_BACKLOG_SEARCH_FREQUENCY: BACKLOG_SEARCH_FREQUENCY = MIN_BACKLOG_SEARCH_FREQUENCY 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 = check_setting_int(CFG, 'General', 'process_automatically', 0) RENAME_EPISODES = check_setting_int(CFG, 'General', 'rename_episodes', 1) KEEP_PROCESSED_DIR = check_setting_int(CFG, 'General', 'keep_processed_dir', 1) TVBINZ = bool(check_setting_int(CFG, 'TVBinz', 'tvbinz', 0)) TVBINZ_UID = check_setting_str(CFG, 'TVBinz', 'tvbinz_uid', '') TVBINZ_SABUID = check_setting_str(CFG, 'TVBinz', 'tvbinz_sabuid', '') TVBINZ_HASH = check_setting_str(CFG, 'TVBinz', 'tvbinz_hash', '') TVBINZ_AUTH = check_setting_str(CFG, 'TVBinz', 'tvbinz_auth', '') NZBS = bool(check_setting_int(CFG, 'NZBs', 'nzbs', 0)) NZBS_UID = check_setting_str(CFG, 'NZBs', 'nzbs_uid', '') NZBS_HASH = check_setting_str(CFG, 'NZBs', 'nzbs_hash', '') NZBSRUS = bool(check_setting_int(CFG, 'NZBsRUS', 'nzbsrus', 0)) NZBSRUS_UID = check_setting_str(CFG, 'NZBsRUS', 'nzbsrus_uid', '') NZBSRUS_HASH = check_setting_str(CFG, 'NZBsRUS', 'nzbsrus_hash', '') NZBMATRIX = bool(check_setting_int(CFG, 'NZBMatrix', 'nzbmatrix', 0)) NZBMATRIX_USERNAME = check_setting_str(CFG, 'NZBMatrix', 'nzbmatrix_username', '') NZBMATRIX_APIKEY = check_setting_str(CFG, 'NZBMatrix', 'nzbmatrix_apikey', '') BINREQ = bool(check_setting_int(CFG, 'Bin-Req', 'binreq', 1)) 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', '') 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_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_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_GROWL = bool(check_setting_int(CFG, 'Growl', 'use_growl', 0)) GROWL_HOST = check_setting_str(CFG, 'Growl', 'growl_host', '') GROWL_PASSWORD = check_setting_str(CFG, 'Growl', 'growl_password', '') EXTRA_SCRIPTS = [x for x in check_setting_str(CFG, 'General', 'extra_scripts', '').split('|') if x] newznabData = check_setting_str(CFG, 'Newznab', 'newznab_data', '') newznabProviderList = providers.getNewznabProviderList(newznabData) providerList = providers.makeProviderList() logger.initLogging(consoleLogging=consoleLogging) # initialize the main SB database db.upgradeDatabase(db.DBConnection(), mainDB.InitialSchema) currentSearchScheduler = scheduler.Scheduler(searchCurrent.CurrentSearcher(), cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY), threadName="SEARCH", runImmediately=True) backlogSearchScheduler = searchBacklog.BacklogSearchScheduler(searchBacklog.BacklogSearcher(), cycleTime=datetime.timedelta(hours=1), threadName="BACKLOG", runImmediately=False) backlogSearchScheduler.action.cycleTime = BACKLOG_SEARCH_FREQUENCY # the interval for this is stored inside the ShowUpdater class showUpdaterInstance = showUpdater.ShowUpdater() showUpdateScheduler = scheduler.Scheduler(showUpdaterInstance, cycleTime=showUpdaterInstance.updateInterval, threadName="SHOWUPDATER", runImmediately=False) versionCheckScheduler = scheduler.Scheduler(versionChecker.CheckVersion(), cycleTime=datetime.timedelta(hours=12), threadName="CHECKVERSION", runImmediately=True) showQueueScheduler = scheduler.Scheduler(queue.ShowQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SHOWQUEUE", silent=True) properFinderInstance = properFinder.ProperFinder() properFinderScheduler = scheduler.Scheduler(properFinderInstance, cycleTime=properFinderInstance.updateInterval, threadName="FINDPROPERS", runImmediately=False) autoPostProcesserScheduler = scheduler.Scheduler(autoPostProcesser.PostProcesser(), cycleTime=datetime.timedelta(minutes=10), threadName="POSTPROCESSER", runImmediately=True) showList = [] loadingShowList = {} airingList = [] comingList = [] __INITIALIZED__ = True return True
def initialize(consoleLogging=True): with INIT_LOCK: global LOG_DIR, WEB_PORT, WEB_LOG, WEB_ROOT, WEB_USERNAME, WEB_PASSWORD, WEB_HOST, WEB_IPV6, \ USE_NZBS, USE_TORRENTS, NZB_METHOD, NZB_DIR, TVBINZ, TVBINZ_UID, TVBINZ_HASH, DOWNLOAD_PROPERS, \ SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_HOST, \ NZBGET_PASSWORD, NZBGET_CATEGORY, NZBGET_HOST, currentSearchScheduler, backlogSearchScheduler, \ USE_XBMC, XBMC_NOTIFY_ONSNATCH, XBMC_NOTIFY_ONDOWNLOAD, XBMC_UPDATE_FULL, \ XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, \ USE_PLEX, PLEX_NOTIFY_ONSNATCH, PLEX_NOTIFY_ONDOWNLOAD, PLEX_UPDATE_LIBRARY, \ PLEX_SERVER_HOST, PLEX_HOST, PLEX_USERNAME, PLEX_PASSWORD, \ showUpdateScheduler, __INITIALIZED__, LAUNCH_BROWSER, showList, loadingShowList, \ NZBS, NZBS_UID, NZBS_HASH, EZRSS, TVTORRENTS, TVTORRENTS_DIGEST, TVTORRENTS_HASH, TORRENT_DIR, USENET_RETENTION, SOCKET_TIMEOUT, \ SEARCH_FREQUENCY, DEFAULT_SEARCH_FREQUENCY, BACKLOG_SEARCH_FREQUENCY, \ QUALITY_DEFAULT, SEASON_FOLDERS_FORMAT, SEASON_FOLDERS_DEFAULT, STATUS_DEFAULT, \ GROWL_NOTIFY_ONSNATCH, GROWL_NOTIFY_ONDOWNLOAD, TWITTER_NOTIFY_ONSNATCH, TWITTER_NOTIFY_ONDOWNLOAD, \ USE_GROWL, GROWL_HOST, GROWL_PASSWORD, USE_PROWL, PROWL_NOTIFY_ONSNATCH, PROWL_NOTIFY_ONDOWNLOAD, PROWL_API, PROWL_PRIORITY, PROG_DIR, NZBMATRIX, NZBMATRIX_USERNAME, \ NZBMATRIX_APIKEY, versionCheckScheduler, VERSION_NOTIFY, PROCESS_AUTOMATICALLY, \ KEEP_PROCESSED_DIR, TV_DOWNLOAD_DIR, TVDB_BASE_URL, MIN_SEARCH_FREQUENCY, \ TVBINZ_AUTH, showQueueScheduler, searchQueueScheduler, ROOT_DIRS, \ NAMING_SHOW_NAME, NAMING_EP_TYPE, NAMING_MULTI_EP_TYPE, CACHE_DIR, TVDB_API_PARMS, \ RENAME_EPISODES, properFinderScheduler, PROVIDER_ORDER, autoPostProcesserScheduler, \ NAMING_EP_NAME, NAMING_SEP_TYPE, NAMING_USE_PERIODS, WOMBLE, \ NZBSRUS, NZBSRUS_UID, NZBSRUS_HASH, NAMING_QUALITY, providerList, newznabProviderList, \ NAMING_DATES, EXTRA_SCRIPTS, USE_TWITTER, TWITTER_USERNAME, TWITTER_PASSWORD, TWITTER_PREFIX, \ USE_NOTIFO, NOTIFO_USERNAME, NOTIFO_APISECRET, NOTIFO_NOTIFY_ONDOWNLOAD, NOTIFO_NOTIFY_ONSNATCH, \ USE_LIBNOTIFY, LIBNOTIFY_NOTIFY_ONSNATCH, LIBNOTIFY_NOTIFY_ONDOWNLOAD, USE_NMJ, NMJ_HOST, NMJ_DATABASE, NMJ_MOUNT, \ USE_BANNER, USE_LISTVIEW, METADATA_XBMC, METADATA_MEDIABROWSER, METADATA_PS3, metadata_provider_dict, \ NEWZBIN, NEWZBIN_USERNAME, NEWZBIN_PASSWORD, GIT_PATH, MOVE_ASSOCIATED_FILES, \ COMING_EPS_LAYOUT, COMING_EPS_SORT, COMING_EPS_DISPLAY_PAUSED, METADATA_WDTV if __INITIALIZED__: return False socket.setdefaulttimeout(SOCKET_TIMEOUT) CheckSection('General') CheckSection('Blackhole') CheckSection('Newzbin') CheckSection('TVBinz') CheckSection('SABnzbd') CheckSection('NZBget') CheckSection('XBMC') CheckSection('PLEX') CheckSection('Growl') CheckSection('Prowl') CheckSection('Twitter') CheckSection('NMJ') LOG_DIR = check_setting_str(CFG, 'General', 'log_dir', 'Logs') if not helpers.makeDir(LOG_DIR): logger.log(u"!!! No log folder, logging to screen only!", logger.ERROR) 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)) 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)) CACHE_DIR = check_setting_str(CFG, 'General', 'cache_dir', 'cache') # fix bad configs due to buggy code if CACHE_DIR == 'None': CACHE_DIR = 'cache' if not helpers.makeDir(CACHE_DIR): logger.log( u"!!! Creating local cache dir failed, using system default", logger.ERROR) CACHE_DIR = None ROOT_DIRS = check_setting_str(CFG, 'General', 'root_dirs', '') if not re.match(r'\d+\|[^|]+(?:\|[^|]+)*', ROOT_DIRS): ROOT_DIRS = '' proxies = urllib.getproxies() proxy_url = None if 'http' in proxies: proxy_url = proxies['http'] elif 'ftp' in proxies: proxy_url = proxies['ftp'] # Set our common tvdb_api options here TVDB_API_PARMS = { 'cache': True, 'apikey': TVDB_API_KEY, 'language': 'en', 'cache_dir': False, 'http_proxy': proxy_url } if CACHE_DIR: TVDB_API_PARMS['cache_dir'] = os.path.join(CACHE_DIR, 'tvdb') QUALITY_DEFAULT = check_setting_int(CFG, 'General', 'quality_default', SD) STATUS_DEFAULT = check_setting_int(CFG, 'General', 'status_default', SKIPPED) VERSION_NOTIFY = check_setting_int(CFG, 'General', 'version_notify', 1) SEASON_FOLDERS_FORMAT = check_setting_str(CFG, 'General', 'season_folders_format', 'Season %02d') SEASON_FOLDERS_DEFAULT = bool( check_setting_int(CFG, 'General', 'season_folders_default', 0)) PROVIDER_ORDER = check_setting_str(CFG, 'General', 'provider_order', '').split() NAMING_SHOW_NAME = bool( check_setting_int(CFG, 'General', 'naming_show_name', 1)) NAMING_EP_NAME = bool( check_setting_int(CFG, 'General', 'naming_ep_name', 1)) NAMING_EP_TYPE = check_setting_int(CFG, 'General', 'naming_ep_type', 0) NAMING_MULTI_EP_TYPE = check_setting_int(CFG, 'General', 'naming_multi_ep_type', 0) NAMING_SEP_TYPE = check_setting_int(CFG, 'General', 'naming_sep_type', 0) NAMING_USE_PERIODS = bool( check_setting_int(CFG, 'General', 'naming_use_periods', 0)) NAMING_QUALITY = bool( check_setting_int(CFG, 'General', 'naming_quality', 0)) NAMING_DATES = bool( check_setting_int(CFG, 'General', 'naming_dates', 1)) TVDB_BASE_URL = 'http://www.thetvdb.com/api/' + TVDB_API_KEY USE_NZBS = bool(check_setting_int(CFG, 'General', 'use_nzbs', 1)) USE_TORRENTS = bool( check_setting_int(CFG, 'General', 'use_torrents', 0)) NZB_METHOD = check_setting_str(CFG, 'General', 'nzb_method', 'blackhole') if NZB_METHOD not in ('blackhole', 'sabnzbd', 'nzbget'): NZB_METHOD = 'blackhole' DOWNLOAD_PROPERS = bool( check_setting_int(CFG, 'General', 'download_propers', 1)) USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', 500) SEARCH_FREQUENCY = check_setting_int(CFG, 'General', 'search_frequency', DEFAULT_SEARCH_FREQUENCY) if SEARCH_FREQUENCY < MIN_SEARCH_FREQUENCY: SEARCH_FREQUENCY = MIN_SEARCH_FREQUENCY 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 = check_setting_int(CFG, 'General', 'process_automatically', 0) RENAME_EPISODES = check_setting_int(CFG, 'General', 'rename_episodes', 1) KEEP_PROCESSED_DIR = check_setting_int(CFG, 'General', 'keep_processed_dir', 1) MOVE_ASSOCIATED_FILES = check_setting_int(CFG, 'General', 'move_associated_files', 0) EZRSS = bool(check_setting_int(CFG, 'General', 'use_torrent', 0)) if not EZRSS: EZRSS = bool(check_setting_int(CFG, 'EZRSS', 'ezrss', 0)) TVTORRENTS = bool(check_setting_int(CFG, 'TVTORRENTS', 'tvtorrents', 0)) TVTORRENTS_DIGEST = check_setting_str(CFG, 'TVTORRENTS', 'tvtorrents_digest', '') TVTORRENTS_HASH = check_setting_str(CFG, 'TVTORRENTS', 'tvtorrents_hash', '') TVBINZ = bool(check_setting_int(CFG, 'TVBinz', 'tvbinz', 0)) TVBINZ_UID = check_setting_str(CFG, 'TVBinz', 'tvbinz_uid', '') TVBINZ_HASH = check_setting_str(CFG, 'TVBinz', 'tvbinz_hash', '') TVBINZ_AUTH = check_setting_str(CFG, 'TVBinz', 'tvbinz_auth', '') NZBS = bool(check_setting_int(CFG, 'NZBs', 'nzbs', 0)) NZBS_UID = check_setting_str(CFG, 'NZBs', 'nzbs_uid', '') NZBS_HASH = check_setting_str(CFG, 'NZBs', 'nzbs_hash', '') NZBSRUS = bool(check_setting_int(CFG, 'NZBsRUS', 'nzbsrus', 0)) NZBSRUS_UID = check_setting_str(CFG, 'NZBsRUS', 'nzbsrus_uid', '') NZBSRUS_HASH = check_setting_str(CFG, 'NZBsRUS', 'nzbsrus_hash', '') NZBMATRIX = bool(check_setting_int(CFG, 'NZBMatrix', 'nzbmatrix', 0)) NZBMATRIX_USERNAME = check_setting_str(CFG, 'NZBMatrix', 'nzbmatrix_username', '') NZBMATRIX_APIKEY = check_setting_str(CFG, 'NZBMatrix', 'nzbmatrix_apikey', '') NEWZBIN = bool(check_setting_int(CFG, 'Newzbin', 'newzbin', 0)) NEWZBIN_USERNAME = check_setting_str(CFG, 'Newzbin', 'newzbin_username', '') NEWZBIN_PASSWORD = check_setting_str(CFG, 'Newzbin', 'newzbin_password', '') WOMBLE = bool(check_setting_int(CFG, 'Womble', 'womble', 1)) 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_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', '') USE_XBMC = bool(check_setting_int(CFG, 'XBMC', 'use_xbmc', 0)) 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_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_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_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_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_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_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', 'Sick Beard') USE_NOTIFO = bool(check_setting_int(CFG, 'Notifo', 'use_notifo', 0)) NOTIFO_NOTIFY_ONSNATCH = bool( check_setting_int(CFG, 'Notifo', 'notifo_notify_onsnatch', 0)) NOTIFO_NOTIFY_ONDOWNLOAD = bool( check_setting_int(CFG, 'Notifo', 'notifo_notify_ondownload', 0)) NOTIFO_USERNAME = check_setting_str(CFG, 'Notifo', 'notifo_username', '') NOTIFO_APISECRET = check_setting_str(CFG, 'Notifo', 'notifo_apisecret', '') 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)) 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', '') GIT_PATH = check_setting_str(CFG, 'General', 'git_path', '') EXTRA_SCRIPTS = [ x for x in check_setting_str(CFG, 'General', 'extra_scripts', '').split('|') if x ] USE_BANNER = bool(check_setting_int(CFG, 'General', 'use_banner', 0)) USE_LISTVIEW = bool( check_setting_int(CFG, 'General', 'use_listview', 0)) METADATA_TYPE = check_setting_str(CFG, 'General', 'metadata_type', '') metadata_provider_dict = metadata.get_metadata_generator_dict() # if this exists it's legacy, use the info to upgrade metadata to the new settings if METADATA_TYPE: old_metadata_class = None if METADATA_TYPE == 'xbmc': old_metadata_class = metadata.xbmc.metadata_class elif METADATA_TYPE == 'mediabrowser': old_metadata_class = metadata.mediabrowser.metadata_class elif METADATA_TYPE == 'ps3': old_metadata_class = metadata.ps3.metadata_class if old_metadata_class: METADATA_SHOW = bool( check_setting_int(CFG, 'General', 'metadata_show', 1)) METADATA_EPISODE = bool( check_setting_int(CFG, 'General', 'metadata_episode', 1)) ART_POSTER = bool( check_setting_int(CFG, 'General', 'art_poster', 1)) ART_FANART = bool( check_setting_int(CFG, 'General', 'art_fanart', 1)) ART_THUMBNAILS = bool( check_setting_int(CFG, 'General', 'art_thumbnails', 1)) ART_SEASON_THUMBNAILS = bool( check_setting_int(CFG, 'General', 'art_season_thumbnails', 1)) new_metadata_class = old_metadata_class( METADATA_SHOW, METADATA_EPISODE, ART_POSTER, ART_FANART, ART_THUMBNAILS, ART_SEASON_THUMBNAILS) metadata_provider_dict[ new_metadata_class.name] = new_metadata_class # this is the normal codepath for metadata config else: METADATA_XBMC = check_setting_str(CFG, 'General', 'metadata_xbmc', '0|0|0|0|0|0') METADATA_MEDIABROWSER = check_setting_str(CFG, 'General', 'metadata_mediabrowser', '0|0|0|0|0|0') METADATA_PS3 = check_setting_str(CFG, 'General', 'metadata_ps3', '0|0|0|0|0|0') METADATA_WDTV = check_setting_str(CFG, 'General', 'metadata_wdtv', '0|0|0|0|0|0') for cur_metadata_tuple in [ (METADATA_XBMC, metadata.xbmc), (METADATA_MEDIABROWSER, metadata.mediabrowser), (METADATA_PS3, metadata.ps3), (METADATA_WDTV, metadata.wdtv), ]: (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 COMING_EPS_LAYOUT = check_setting_str(CFG, 'GUI', 'coming_eps_layout', 'banner') COMING_EPS_DISPLAY_PAUSED = bool( check_setting_int(CFG, 'GUI', 'coming_eps_display_paused', 0)) COMING_EPS_SORT = check_setting_str(CFG, 'GUI', 'coming_eps_sort', 'date') newznabData = check_setting_str(CFG, 'Newznab', 'newznab_data', '') newznabProviderList = providers.getNewznabProviderList(newznabData) providerList = providers.makeProviderList() logger.initLogging(consoleLogging=consoleLogging) # initialize the main SB database db.upgradeDatabase(db.DBConnection(), mainDB.InitialSchema) # initialize the cache database db.upgradeDatabase(db.DBConnection("cache.db"), cache_db.InitialSchema) # fix up any db problems db.sanityCheckDatabase(db.DBConnection(), mainDB.MainSanityCheck) currentSearchScheduler = scheduler.Scheduler( searchCurrent.CurrentSearcher(), cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY), threadName="SEARCH", runImmediately=True) backlogSearchScheduler = searchBacklog.BacklogSearchScheduler( searchBacklog.BacklogSearcher(), cycleTime=datetime.timedelta(minutes=get_backlog_cycle_time()), threadName="BACKLOG", runImmediately=False) backlogSearchScheduler.action.cycleTime = BACKLOG_SEARCH_FREQUENCY # the interval for this is stored inside the ShowUpdater class showUpdaterInstance = showUpdater.ShowUpdater() showUpdateScheduler = scheduler.Scheduler( showUpdaterInstance, cycleTime=showUpdaterInstance.updateInterval, threadName="SHOWUPDATER", runImmediately=False) versionCheckScheduler = scheduler.Scheduler( versionChecker.CheckVersion(), cycleTime=datetime.timedelta(hours=12), threadName="CHECKVERSION", runImmediately=True) showQueueScheduler = scheduler.Scheduler( show_queue.ShowQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SHOWQUEUE", silent=True) searchQueueScheduler = scheduler.Scheduler( search_queue.SearchQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SEARCHQUEUE", silent=True) properFinderInstance = properFinder.ProperFinder() properFinderScheduler = scheduler.Scheduler( properFinderInstance, cycleTime=properFinderInstance.updateInterval, threadName="FINDPROPERS", runImmediately=False) autoPostProcesserScheduler = scheduler.Scheduler( autoPostProcesser.PostProcesser(), cycleTime=datetime.timedelta(minutes=10), threadName="POSTPROCESSER", runImmediately=True) showList = [] loadingShowList = {} __INITIALIZED__ = True return True
def initialize(consoleLogging=True): with INIT_LOCK: global LOG_DIR, WEB_PORT, WEB_LOG, WEB_ROOT, WEB_USERNAME, WEB_PASSWORD, WEB_HOST, WEB_IPV6, \ NZB_METHOD, NZB_DIR, TVBINZ, TVBINZ_UID, TVBINZ_HASH, DOWNLOAD_PROPERS, \ SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_HOST, \ XBMC_NOTIFY_ONSNATCH, XBMC_NOTIFY_ONDOWNLOAD, XBMC_UPDATE_FULL, \ XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, currentSearchScheduler, backlogSearchScheduler, \ showUpdateScheduler, __INITIALIZED__, LAUNCH_BROWSER, showList, loadingShowList, \ NZBS, NZBS_UID, NZBS_HASH, EZRSS, TORRENT_DIR, USENET_RETENTION, SOCKET_TIMEOUT, \ SEARCH_FREQUENCY, DEFAULT_SEARCH_FREQUENCY, BACKLOG_SEARCH_FREQUENCY, \ QUALITY_DEFAULT, SEASON_FOLDERS_FORMAT, SEASON_FOLDERS_DEFAULT, STATUS_DEFAULT, \ USE_XBMC, GROWL_NOTIFY_ONSNATCH, GROWL_NOTIFY_ONDOWNLOAD, TWITTER_NOTIFY_ONSNATCH, TWITTER_NOTIFY_ONDOWNLOAD, \ USE_GROWL, GROWL_HOST, GROWL_PASSWORD, USE_PROWL, PROWL_NOTIFY_ONSNATCH, PROWL_NOTIFY_ONDOWNLOAD, PROWL_API, PROWL_PRIORITY, PROG_DIR, NZBMATRIX, NZBMATRIX_USERNAME, \ NZBMATRIX_APIKEY, versionCheckScheduler, VERSION_NOTIFY, PROCESS_AUTOMATICALLY, \ KEEP_PROCESSED_DIR, TV_DOWNLOAD_DIR, TVDB_BASE_URL, MIN_SEARCH_FREQUENCY, \ TVBINZ_AUTH, showQueueScheduler, searchQueueScheduler, ROOT_DIRS, \ NAMING_SHOW_NAME, NAMING_EP_TYPE, NAMING_MULTI_EP_TYPE, CACHE_DIR, TVDB_API_PARMS, \ RENAME_EPISODES, properFinderScheduler, PROVIDER_ORDER, autoPostProcesserScheduler, \ NAMING_EP_NAME, NAMING_SEP_TYPE, NAMING_USE_PERIODS, WOMBLE, \ NZBSRUS, NZBSRUS_UID, NZBSRUS_HASH, BINREQ, NAMING_QUALITY, providerList, newznabProviderList, \ NAMING_DATES, EXTRA_SCRIPTS, USE_TWITTER, TWITTER_USERNAME, TWITTER_PASSWORD, TWITTER_PREFIX, \ USE_NOTIFO, NOTIFO_USERNAME, NOTIFO_APISECRET, NOTIFO_NOTIFY_ONDOWNLOAD, NOTIFO_NOTIFY_ONSNATCH, \ USE_LIBNOTIFY, LIBNOTIFY_NOTIFY_ONSNATCH, LIBNOTIFY_NOTIFY_ONDOWNLOAD, \ USE_BANNER, USE_LISTVIEW, METADATA_XBMC, METADATA_MEDIABROWSER, METADATA_PS3, metadata_provider_dict, \ NEWZBIN, NEWZBIN_USERNAME, NEWZBIN_PASSWORD, GIT_PATH, DEFAULT_LANGUAGE, MOVE_ASSOCIATED_FILES, \ COMING_EPS_LAYOUT, COMING_EPS_SORT, COMING_EPS_DISPLAY_PAUSED, METADATA_WDTV if __INITIALIZED__: return False socket.setdefaulttimeout(SOCKET_TIMEOUT) CheckSection('General') CheckSection('Blackhole') CheckSection('Newzbin') CheckSection('TVBinz') CheckSection('SABnzbd') CheckSection('XBMC') CheckSection('Growl') CheckSection('Prowl') CheckSection('Twitter') LOG_DIR = check_setting_str(CFG, 'General', 'log_dir', 'Logs') if not helpers.makeDir(LOG_DIR): logger.log(u"!!! No log folder, logging to screen only!", logger.ERROR) 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)) 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)) CACHE_DIR = check_setting_str(CFG, 'General', 'cache_dir', 'cache') # fix bad configs due to buggy code if CACHE_DIR == 'None': CACHE_DIR = 'cache' if not helpers.makeDir(CACHE_DIR): logger.log(u"!!! Creating local cache dir failed, using system default", logger.ERROR) CACHE_DIR = None ROOT_DIRS = check_setting_str(CFG, 'General', 'root_dirs', '') proxies = urllib.getproxies() proxy_url = None if 'http' in proxies: proxy_url = proxies['http'] elif 'ftp' in proxies: proxy_url = proxies['ftp'] # Set our common tvdb_api options here TVDB_API_PARMS = {'cache': True, 'apikey': TVDB_API_KEY, 'language': DEFAULT_LANGUAGE, 'cache_dir': False, 'http_proxy': proxy_url} if CACHE_DIR: TVDB_API_PARMS['cache_dir'] = os.path.join(CACHE_DIR, 'tvdb') QUALITY_DEFAULT = check_setting_int(CFG, 'General', 'quality_default', SD) STATUS_DEFAULT = check_setting_int(CFG, 'General', 'status_default', SKIPPED) VERSION_NOTIFY = check_setting_int(CFG, 'General', 'version_notify', 1) SEASON_FOLDERS_FORMAT = check_setting_str(CFG, 'General', 'season_folders_format', 'Season %02d') SEASON_FOLDERS_DEFAULT = bool(check_setting_int(CFG, 'General', 'season_folders_default', 0)) PROVIDER_ORDER = check_setting_str(CFG, 'General', 'provider_order', '').split() NAMING_SHOW_NAME = bool(check_setting_int(CFG, 'General', 'naming_show_name', 1)) NAMING_EP_NAME = bool(check_setting_int(CFG, 'General', 'naming_ep_name', 1)) NAMING_EP_TYPE = check_setting_int(CFG, 'General', 'naming_ep_type', 0) NAMING_MULTI_EP_TYPE = check_setting_int(CFG, 'General', 'naming_multi_ep_type', 0) NAMING_SEP_TYPE = check_setting_int(CFG, 'General', 'naming_sep_type', 0) NAMING_USE_PERIODS = bool(check_setting_int(CFG, 'General', 'naming_use_periods', 0)) NAMING_QUALITY = bool(check_setting_int(CFG, 'General', 'naming_quality', 0)) NAMING_DATES = bool(check_setting_int(CFG, 'General', 'naming_dates', 1)) TVDB_BASE_URL = 'http://www.thetvdb.com/api/' + TVDB_API_KEY NZB_METHOD = check_setting_str(CFG, 'General', 'nzb_method', 'blackhole') if NZB_METHOD not in ('blackhole', 'sabnzbd'): NZB_METHOD = 'blackhole' DOWNLOAD_PROPERS = bool(check_setting_int(CFG, 'General', 'download_propers', 1)) USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', 500) SEARCH_FREQUENCY = check_setting_int(CFG, 'General', 'search_frequency', DEFAULT_SEARCH_FREQUENCY) if SEARCH_FREQUENCY < MIN_SEARCH_FREQUENCY: SEARCH_FREQUENCY = MIN_SEARCH_FREQUENCY 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 = check_setting_int(CFG, 'General', 'process_automatically', 0) RENAME_EPISODES = check_setting_int(CFG, 'General', 'rename_episodes', 1) KEEP_PROCESSED_DIR = check_setting_int(CFG, 'General', 'keep_processed_dir', 1) MOVE_ASSOCIATED_FILES = check_setting_int(CFG, 'General', 'move_associated_files', 0) EZRSS = bool(check_setting_int(CFG, 'General', 'use_torrent', 0)) if not EZRSS: EZRSS = bool(check_setting_int(CFG, 'EZRSS', 'ezrss', 0)) TVBINZ = bool(check_setting_int(CFG, 'TVBinz', 'tvbinz', 0)) TVBINZ_UID = check_setting_str(CFG, 'TVBinz', 'tvbinz_uid', '') TVBINZ_HASH = check_setting_str(CFG, 'TVBinz', 'tvbinz_hash', '') TVBINZ_AUTH = check_setting_str(CFG, 'TVBinz', 'tvbinz_auth', '') NZBS = bool(check_setting_int(CFG, 'NZBs', 'nzbs', 0)) NZBS_UID = check_setting_str(CFG, 'NZBs', 'nzbs_uid', '') NZBS_HASH = check_setting_str(CFG, 'NZBs', 'nzbs_hash', '') NZBSRUS = bool(check_setting_int(CFG, 'NZBsRUS', 'nzbsrus', 0)) NZBSRUS_UID = check_setting_str(CFG, 'NZBsRUS', 'nzbsrus_uid', '') NZBSRUS_HASH = check_setting_str(CFG, 'NZBsRUS', 'nzbsrus_hash', '') NZBMATRIX = bool(check_setting_int(CFG, 'NZBMatrix', 'nzbmatrix', 0)) NZBMATRIX_USERNAME = check_setting_str(CFG, 'NZBMatrix', 'nzbmatrix_username', '') NZBMATRIX_APIKEY = check_setting_str(CFG, 'NZBMatrix', 'nzbmatrix_apikey', '') NEWZBIN = bool(check_setting_int(CFG, 'Newzbin', 'newzbin', 0)) NEWZBIN_USERNAME = check_setting_str(CFG, 'Newzbin', 'newzbin_username', '') NEWZBIN_PASSWORD = check_setting_str(CFG, 'Newzbin', 'newzbin_password', '') BINREQ = bool(check_setting_int(CFG, 'Bin-Req', 'binreq', 1)) WOMBLE = bool(check_setting_int(CFG, 'Womble', 'womble', 1)) 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', '') USE_XBMC = bool(check_setting_int(CFG, 'XBMC', 'use_xbmc', 0)) 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_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_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_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_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_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_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', 'Sick Beard') USE_NOTIFO = bool(check_setting_int(CFG, 'Notifo', 'use_notifo', 0)) NOTIFO_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Notifo', 'notifo_notify_onsnatch', 0)) NOTIFO_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Notifo', 'notifo_notify_ondownload', 0)) NOTIFO_USERNAME = check_setting_str(CFG, 'Notifo', 'notifo_username', '') NOTIFO_APISECRET = check_setting_str(CFG, 'Notifo', 'notifo_apisecret', '') 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)) GIT_PATH = check_setting_str(CFG, 'General', 'git_path', '') DEFAULT_LANGUAGE = check_setting_str(CFG, 'General', 'default_language', '') EXTRA_SCRIPTS = [x for x in check_setting_str(CFG, 'General', 'extra_scripts', '').split('|') if x] USE_BANNER = bool(check_setting_int(CFG, 'General', 'use_banner', 0)) USE_LISTVIEW = bool(check_setting_int(CFG, 'General', 'use_listview', 0)) METADATA_TYPE = check_setting_str(CFG, 'General', 'metadata_type', '') metadata_provider_dict = metadata.get_metadata_generator_dict() # if this exists it's legacy, use the info to upgrade metadata to the new settings if METADATA_TYPE: old_metadata_class = None if METADATA_TYPE == 'xbmc': old_metadata_class = metadata.xbmc.metadata_class elif METADATA_TYPE == 'mediabrowser': old_metadata_class = metadata.mediabrowser.metadata_class elif METADATA_TYPE == 'ps3': old_metadata_class = metadata.ps3.metadata_class if old_metadata_class: METADATA_SHOW = bool(check_setting_int(CFG, 'General', 'metadata_show', 1)) METADATA_EPISODE = bool(check_setting_int(CFG, 'General', 'metadata_episode', 1)) ART_POSTER = bool(check_setting_int(CFG, 'General', 'art_poster', 1)) ART_FANART = bool(check_setting_int(CFG, 'General', 'art_fanart', 1)) ART_THUMBNAILS = bool(check_setting_int(CFG, 'General', 'art_thumbnails', 1)) ART_SEASON_THUMBNAILS = bool(check_setting_int(CFG, 'General', 'art_season_thumbnails', 1)) new_metadata_class = old_metadata_class(METADATA_SHOW, METADATA_EPISODE, ART_POSTER, ART_FANART, ART_THUMBNAILS, ART_SEASON_THUMBNAILS) metadata_provider_dict[new_metadata_class.name] = new_metadata_class # this is the normal codepath for metadata config else: METADATA_XBMC = check_setting_str(CFG, 'General', 'metadata_xbmc', '0|0|0|0|0|0') METADATA_MEDIABROWSER = check_setting_str(CFG, 'General', 'metadata_mediabrowser', '0|0|0|0|0|0') METADATA_PS3 = check_setting_str(CFG, 'General', 'metadata_ps3', '0|0|0|0|0|0') METADATA_WDTV = check_setting_str(CFG, 'General', 'metadata_wdtv', '0|0|0|0|0|0') for cur_metadata_tuple in [(METADATA_XBMC, metadata.xbmc), (METADATA_MEDIABROWSER, metadata.mediabrowser), (METADATA_PS3, metadata.ps3), (METADATA_WDTV, metadata.wdtv), ]: (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 COMING_EPS_LAYOUT = check_setting_str(CFG, 'GUI', 'coming_eps_layout', 'banner') COMING_EPS_DISPLAY_PAUSED = bool(check_setting_int(CFG, 'GUI', 'coming_eps_display_paused', 0)) COMING_EPS_SORT = check_setting_str(CFG, 'GUI', 'coming_eps_sort', 'date') newznabData = check_setting_str(CFG, 'Newznab', 'newznab_data', '') newznabProviderList = providers.getNewznabProviderList(newznabData) providerList = providers.makeProviderList() logger.initLogging(consoleLogging=consoleLogging) # initialize the main SB database db.upgradeDatabase(db.DBConnection(), mainDB.InitialSchema) # fix up any db problems db.sanityCheckDatabase(db.DBConnection(), mainDB.MainSanityCheck) currentSearchScheduler = scheduler.Scheduler(searchCurrent.CurrentSearcher(), cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY), threadName="SEARCH", runImmediately=True) backlogSearchScheduler = searchBacklog.BacklogSearchScheduler(searchBacklog.BacklogSearcher(), cycleTime=datetime.timedelta(minutes=get_backlog_cycle_time()), threadName="BACKLOG", runImmediately=False) backlogSearchScheduler.action.cycleTime = BACKLOG_SEARCH_FREQUENCY # the interval for this is stored inside the ShowUpdater class showUpdaterInstance = showUpdater.ShowUpdater() showUpdateScheduler = scheduler.Scheduler(showUpdaterInstance, cycleTime=showUpdaterInstance.updateInterval, threadName="SHOWUPDATER", runImmediately=False) versionCheckScheduler = scheduler.Scheduler(versionChecker.CheckVersion(), cycleTime=datetime.timedelta(hours=12), threadName="CHECKVERSION", runImmediately=True) showQueueScheduler = scheduler.Scheduler(show_queue.ShowQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SHOWQUEUE", silent=True) searchQueueScheduler = scheduler.Scheduler(search_queue.SearchQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SEARCHQUEUE", silent=True) properFinderInstance = properFinder.ProperFinder() properFinderScheduler = scheduler.Scheduler(properFinderInstance, cycleTime=properFinderInstance.updateInterval, threadName="FINDPROPERS", runImmediately=False) autoPostProcesserScheduler = scheduler.Scheduler(autoPostProcesser.PostProcesser(), cycleTime=datetime.timedelta(minutes=10), threadName="POSTPROCESSER", runImmediately=True) showList = [] loadingShowList = {} __INITIALIZED__ = True return True
def initialize(consoleLogging=True): with INIT_LOCK: global LOG_DIR, WEB_PORT, WEB_LOG, WEB_ROOT, WEB_USERNAME, WEB_PASSWORD, NZB_METHOD, NZB_DIR, TVBINZ, TVBINZ_UID, TVBINZ_HASH, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_HOST, XBMC_NOTIFY_ONSNATCH, XBMC_NOTIFY_ONDOWNLOAD, XBMC_UPDATE_FULL, XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, currentSearchScheduler, backlogSearchScheduler, showUpdateScheduler, __INITIALIZED__, LAUNCH_BROWSER, showList, airingList, comingList, loadingShowList, CREATE_METADATA, SOCKET_TIMEOUT, NZBS, NZBS_UID, NZBS_HASH, USE_NZB, USE_TORRENT, TORRENT_DIR, USENET_RETENTION, SEARCH_FREQUENCY, DEFAULT_SEARCH_FREQUENCY, BACKLOG_SEARCH_FREQUENCY, DEFAULT_BACKLOG_SEARCH_FREQUENCY, QUALITY_DEFAULT, SEASON_FOLDERS_DEFAULT, USE_GROWL, GROWL_HOST, GROWL_PASSWORD, PROG_DIR, NZBMATRIX, NZBMATRIX_USERNAME, NZBMATRIX_APIKEY, versionCheckScheduler, VERSION_NOTIFY, PROCESS_AUTOMATICALLY, KEEP_PROCESSED_DIR, TV_DOWNLOAD_DIR, TVDB_BASE_URL, MIN_SEARCH_FREQUENCY, MIN_BACKLOG_SEARCH_FREQUENCY, TVBINZ_AUTH, TVBINZ_SABUID, showQueueScheduler, NAMING_SHOW_NAME, NAMING_EP_TYPE, NAMING_MULTI_EP_TYPE, CACHE_DIR, TVDB_API_PARMS, RENAME_EPISODES, properFinderScheduler, PROVIDER_ORDER, autoPostProcesserScheduler, KEEP_PROCESSED_FILE, CREATE_IMAGES, NAMING_EP_NAME, NAMING_SEP_TYPE, NAMING_USE_PERIODS, NZBSRUS, NZBSRUS_UID, NZBSRUS_HASH, BINREQ, NAMING_QUALITY, NZBPREFIX if __INITIALIZED__: return False socket.setdefaulttimeout(SOCKET_TIMEOUT) CheckSection("General") CheckSection("Blackhole") CheckSection("Newzbin") CheckSection("TVBinz") CheckSection("SABnzbd") CheckSection("XBMC") CheckSection("Growl") LOG_DIR = check_setting_str(CFG, "General", "log_dir", "Logs") if not helpers.makeDir(LOG_DIR): logger.log("!!! No log folder, logging to screen only!", logger.ERROR) 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_ROOT = check_setting_str(CFG, "General", "web_root", "").rstrip("/") WEB_LOG = bool(check_setting_int(CFG, "General", "web_log", 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)) CREATE_METADATA = bool(check_setting_int(CFG, "General", "create_metadata", 1)) CREATE_IMAGES = bool(check_setting_int(CFG, "General", "create_images", 1)) NZBPREFIX = check_setting_str(CFG, "General", "nzbprefix", "") CACHE_DIR = check_setting_str(CFG, "General", "cache_dir", "cache") if not helpers.makeDir(CACHE_DIR): logger.log("!!! Creating local cache dir failed, using system default", logger.ERROR) CACHE_DIR = None # Set our common tvdb_api options here TVDB_API_PARMS = {"cache": True, "apikey": TVDB_API_KEY, "language": "en", "cache_dir": False} if CACHE_DIR: TVDB_API_PARMS["cache_dir"] = os.path.join(CACHE_DIR, "tvdb") QUALITY_DEFAULT = check_setting_int(CFG, "General", "quality_default", SD) VERSION_NOTIFY = check_setting_int(CFG, "General", "version_notify", 1) SEASON_FOLDERS_DEFAULT = bool(check_setting_int(CFG, "General", "season_folders_default", 0)) PROVIDER_ORDER = check_setting_str(CFG, "General", "provider_order", "").split() NAMING_SHOW_NAME = bool(check_setting_int(CFG, "General", "naming_show_name", 1)) NAMING_EP_NAME = bool(check_setting_int(CFG, "General", "naming_ep_name", 1)) NAMING_EP_TYPE = check_setting_int(CFG, "General", "naming_ep_type", 0) NAMING_MULTI_EP_TYPE = check_setting_int(CFG, "General", "naming_multi_ep_type", 0) NAMING_SEP_TYPE = check_setting_int(CFG, "General", "naming_sep_type", 0) NAMING_USE_PERIODS = bool(check_setting_int(CFG, "General", "naming_use_periods", 0)) NAMING_QUALITY = bool(check_setting_int(CFG, "General", "naming_quality", 0)) TVDB_BASE_URL = "http://www.thetvdb.com/api/" + TVDB_API_KEY NZB_METHOD = check_setting_str(CFG, "General", "nzb_method", "blackhole") if NZB_METHOD not in ("blackhole", "sabnzbd"): NZB_METHOD = "blackhole" USE_NZB = bool(check_setting_int(CFG, "General", "use_nzb", 1)) USE_TORRENT = bool(check_setting_int(CFG, "General", "use_torrent", 0)) USENET_RETENTION = check_setting_int(CFG, "General", "usenet_retention", 500) SEARCH_FREQUENCY = check_setting_int(CFG, "General", "search_frequency", DEFAULT_SEARCH_FREQUENCY) if SEARCH_FREQUENCY < MIN_SEARCH_FREQUENCY: SEARCH_FREQUENCY = MIN_SEARCH_FREQUENCY BACKLOG_SEARCH_FREQUENCY = check_setting_int( CFG, "General", "backlog_search_frequency", DEFAULT_BACKLOG_SEARCH_FREQUENCY ) if BACKLOG_SEARCH_FREQUENCY < MIN_BACKLOG_SEARCH_FREQUENCY: BACKLOG_SEARCH_FREQUENCY = MIN_BACKLOG_SEARCH_FREQUENCY 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 = check_setting_int(CFG, "General", "process_automatically", 0) RENAME_EPISODES = check_setting_int(CFG, "General", "rename_episodes", 1) KEEP_PROCESSED_DIR = check_setting_int(CFG, "General", "keep_processed_dir", 1) KEEP_PROCESSED_FILE = check_setting_int(CFG, "General", "keep_processed_file", 0) TVBINZ = bool(check_setting_int(CFG, "TVBinz", "tvbinz", 0)) TVBINZ_UID = check_setting_str(CFG, "TVBinz", "tvbinz_uid", "") TVBINZ_SABUID = check_setting_str(CFG, "TVBinz", "tvbinz_sabuid", "") TVBINZ_HASH = check_setting_str(CFG, "TVBinz", "tvbinz_hash", "") TVBINZ_AUTH = check_setting_str(CFG, "TVBinz", "tvbinz_auth", "") NZBS = bool(check_setting_int(CFG, "NZBs", "nzbs", 0)) NZBS_UID = check_setting_str(CFG, "NZBs", "nzbs_uid", "") NZBS_HASH = check_setting_str(CFG, "NZBs", "nzbs_hash", "") NZBSRUS = bool(check_setting_int(CFG, "NZBsRUS", "nzbsrus", 0)) NZBSRUS_UID = check_setting_str(CFG, "NZBsRUS", "nzbsrus_uid", "") NZBSRUS_HASH = check_setting_str(CFG, "NZBsRUS", "nzbsrus_hash", "") NZBMATRIX = bool(check_setting_int(CFG, "NZBMatrix", "nzbmatrix", 0)) NZBMATRIX_USERNAME = check_setting_str(CFG, "NZBMatrix", "nzbmatrix_username", "") NZBMATRIX_APIKEY = check_setting_str(CFG, "NZBMatrix", "nzbmatrix_apikey", "") BINREQ = bool(check_setting_int(CFG, "Bin-Req", "binreq", 1)) 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", "") 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_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_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_GROWL = bool(check_setting_int(CFG, "Growl", "use_growl", 0)) GROWL_HOST = check_setting_str(CFG, "Growl", "growl_host", "") GROWL_PASSWORD = check_setting_str(CFG, "Growl", "growl_password", "") logger.initLogging(consoleLogging=consoleLogging) # initialize the main SB database db.upgradeDatabase(db.DBConnection(), mainDB.InitialSchema) currentSearchScheduler = scheduler.Scheduler( searchCurrent.CurrentSearcher(), cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY), threadName="SEARCH", runImmediately=True, ) backlogSearchScheduler = searchBacklog.BacklogSearchScheduler( searchBacklog.BacklogSearcher(), cycleTime=datetime.timedelta(hours=1), threadName="BACKLOG", runImmediately=False, ) backlogSearchScheduler.action.cycleTime = BACKLOG_SEARCH_FREQUENCY # the interval for this is stored inside the ShowUpdater class showUpdaterInstance = showUpdater.ShowUpdater() showUpdateScheduler = scheduler.Scheduler( showUpdaterInstance, cycleTime=showUpdaterInstance.updateInterval, threadName="SHOWUPDATER", runImmediately=False, ) versionCheckScheduler = scheduler.Scheduler( versionChecker.CheckVersion(), cycleTime=datetime.timedelta(hours=12), threadName="CHECKVERSION", runImmediately=True, ) showQueueScheduler = scheduler.Scheduler( queue.ShowQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SHOWQUEUE", silent=True ) properFinderInstance = properFinder.ProperFinder() properFinderScheduler = scheduler.Scheduler( properFinderInstance, cycleTime=properFinderInstance.updateInterval, threadName="FINDPROPERS", runImmediately=False, ) autoPostProcesserScheduler = scheduler.Scheduler( autoPostProcesser.PostProcesser(), cycleTime=datetime.timedelta(minutes=10), threadName="POSTPROCESSER", runImmediately=True, ) showList = [] loadingShowList = {} airingList = [] comingList = [] __INITIALIZED__ = True return True
def initialize(consoleLogging=True): with INIT_LOCK: global LOG_DIR, WEB_PORT, WEB_LOG, WEB_ROOT, WEB_USERNAME, WEB_PASSWORD, WEB_HOST, WEB_IPV6, NZB_METHOD, NZB_DIR, TVBINZ, TVBINZ_UID, TVBINZ_HASH, DOWNLOAD_PROPERS, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_HOST, XBMC_NOTIFY_ONSNATCH, XBMC_NOTIFY_ONDOWNLOAD, XBMC_UPDATE_FULL, XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, currentSearchScheduler, backlogSearchScheduler, showUpdateScheduler, __INITIALIZED__, LAUNCH_BROWSER, showList, airingList, comingList, loadingShowList, SOCKET_TIMEOUT, NZBS, NZBS_UID, NZBS_HASH, EZRSS, TORRENT_DIR, USENET_RETENTION, SEARCH_FREQUENCY, DEFAULT_SEARCH_FREQUENCY, BACKLOG_SEARCH_FREQUENCY, DEFAULT_BACKLOG_SEARCH_FREQUENCY, QUALITY_DEFAULT, SEASON_FOLDERS_FORMAT, SEASON_FOLDERS_DEFAULT, USE_GROWL, GROWL_HOST, GROWL_PASSWORD, PROG_DIR, NZBMATRIX, NZBMATRIX_USERNAME, NZBMATRIX_APIKEY, versionCheckScheduler, VERSION_NOTIFY, PROCESS_AUTOMATICALLY, KEEP_PROCESSED_DIR, TV_DOWNLOAD_DIR, TVDB_BASE_URL, MIN_SEARCH_FREQUENCY, MIN_BACKLOG_SEARCH_FREQUENCY, TVBINZ_AUTH, showQueueScheduler, NAMING_SHOW_NAME, NAMING_EP_TYPE, NAMING_MULTI_EP_TYPE, CACHE_DIR, TVDB_API_PARMS, RENAME_EPISODES, properFinderScheduler, PROVIDER_ORDER, autoPostProcesserScheduler, NAMING_EP_NAME, NAMING_SEP_TYPE, NAMING_USE_PERIODS, WOMBLE, NZBSRUS, NZBSRUS_UID, NZBSRUS_HASH, BINREQ, NAMING_QUALITY, providerList, newznabProviderList, NAMING_DATES, EXTRA_SCRIPTS, USE_TWITTER, TWITTER_USERNAME, TWITTER_PASSWORD, TWITTER_PREFIX, METADATA_TYPE, METADATA_SHOW, METADATA_EPISODE, metadata_generator, ART_POSTER, ART_FANART, ART_THUMBNAILS, ART_SEASON_THUMBNAILS, NEWZBIN, NEWZBIN_USERNAME, NEWZBIN_PASSWORD, GIT_PATH, MOVE_ASSOCIATED_FILES if __INITIALIZED__: return False socket.setdefaulttimeout(SOCKET_TIMEOUT) CheckSection("General") CheckSection("Blackhole") CheckSection("Newzbin") CheckSection("TVBinz") CheckSection("SABnzbd") CheckSection("XBMC") CheckSection("Growl") CheckSection("Twitter") LOG_DIR = check_setting_str(CFG, "General", "log_dir", "Logs") if not helpers.makeDir(LOG_DIR): logger.log(u"!!! No log folder, logging to screen only!", logger.ERROR) 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)) 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)) CACHE_DIR = check_setting_str(CFG, "General", "cache_dir", "cache") # fix bad configs due to buggy code if CACHE_DIR == "None": CACHE_DIR = "cache" if not helpers.makeDir(CACHE_DIR): logger.log(u"!!! Creating local cache dir failed, using system default", logger.ERROR) CACHE_DIR = None # Set our common tvdb_api options here TVDB_API_PARMS = {"cache": True, "apikey": TVDB_API_KEY, "language": "en", "cache_dir": False} if CACHE_DIR: TVDB_API_PARMS["cache_dir"] = os.path.join(CACHE_DIR, "tvdb") QUALITY_DEFAULT = check_setting_int(CFG, "General", "quality_default", SD) VERSION_NOTIFY = check_setting_int(CFG, "General", "version_notify", 1) SEASON_FOLDERS_FORMAT = check_setting_str(CFG, "General", "season_folders_format", "Season %02d") SEASON_FOLDERS_DEFAULT = bool(check_setting_int(CFG, "General", "season_folders_default", 0)) PROVIDER_ORDER = check_setting_str(CFG, "General", "provider_order", "").split() NAMING_SHOW_NAME = bool(check_setting_int(CFG, "General", "naming_show_name", 1)) NAMING_EP_NAME = bool(check_setting_int(CFG, "General", "naming_ep_name", 1)) NAMING_EP_TYPE = check_setting_int(CFG, "General", "naming_ep_type", 0) NAMING_MULTI_EP_TYPE = check_setting_int(CFG, "General", "naming_multi_ep_type", 0) NAMING_SEP_TYPE = check_setting_int(CFG, "General", "naming_sep_type", 0) NAMING_USE_PERIODS = bool(check_setting_int(CFG, "General", "naming_use_periods", 0)) NAMING_QUALITY = bool(check_setting_int(CFG, "General", "naming_quality", 0)) NAMING_DATES = bool(check_setting_int(CFG, "General", "naming_dates", 1)) TVDB_BASE_URL = "http://www.thetvdb.com/api/" + TVDB_API_KEY NZB_METHOD = check_setting_str(CFG, "General", "nzb_method", "blackhole") if NZB_METHOD not in ("blackhole", "sabnzbd"): NZB_METHOD = "blackhole" DOWNLOAD_PROPERS = bool(check_setting_int(CFG, "General", "download_propers", 1)) USENET_RETENTION = check_setting_int(CFG, "General", "usenet_retention", 500) SEARCH_FREQUENCY = check_setting_int(CFG, "General", "search_frequency", DEFAULT_SEARCH_FREQUENCY) if SEARCH_FREQUENCY < MIN_SEARCH_FREQUENCY: SEARCH_FREQUENCY = MIN_SEARCH_FREQUENCY BACKLOG_SEARCH_FREQUENCY = check_setting_int( CFG, "General", "backlog_search_frequency", DEFAULT_BACKLOG_SEARCH_FREQUENCY ) if BACKLOG_SEARCH_FREQUENCY < MIN_BACKLOG_SEARCH_FREQUENCY: BACKLOG_SEARCH_FREQUENCY = MIN_BACKLOG_SEARCH_FREQUENCY 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 = check_setting_int(CFG, "General", "process_automatically", 0) RENAME_EPISODES = check_setting_int(CFG, "General", "rename_episodes", 1) KEEP_PROCESSED_DIR = check_setting_int(CFG, "General", "keep_processed_dir", 1) MOVE_ASSOCIATED_FILES = check_setting_int(CFG, "General", "move_associated_files", 0) EZRSS = bool(check_setting_int(CFG, "General", "use_torrent", 0)) if not EZRSS: EZRSS = bool(check_setting_int(CFG, "EZRSS", "ezrss", 0)) TVBINZ = bool(check_setting_int(CFG, "TVBinz", "tvbinz", 0)) TVBINZ_UID = check_setting_str(CFG, "TVBinz", "tvbinz_uid", "") TVBINZ_HASH = check_setting_str(CFG, "TVBinz", "tvbinz_hash", "") TVBINZ_AUTH = check_setting_str(CFG, "TVBinz", "tvbinz_auth", "") NZBS = bool(check_setting_int(CFG, "NZBs", "nzbs", 0)) NZBS_UID = check_setting_str(CFG, "NZBs", "nzbs_uid", "") NZBS_HASH = check_setting_str(CFG, "NZBs", "nzbs_hash", "") NZBSRUS = bool(check_setting_int(CFG, "NZBsRUS", "nzbsrus", 0)) NZBSRUS_UID = check_setting_str(CFG, "NZBsRUS", "nzbsrus_uid", "") NZBSRUS_HASH = check_setting_str(CFG, "NZBsRUS", "nzbsrus_hash", "") NZBMATRIX = bool(check_setting_int(CFG, "NZBMatrix", "nzbmatrix", 0)) NZBMATRIX_USERNAME = check_setting_str(CFG, "NZBMatrix", "nzbmatrix_username", "") NZBMATRIX_APIKEY = check_setting_str(CFG, "NZBMatrix", "nzbmatrix_apikey", "") NEWZBIN = bool(check_setting_int(CFG, "Newzbin", "newzbin", 0)) NEWZBIN_USERNAME = check_setting_str(CFG, "Newzbin", "newzbin_username", "") NEWZBIN_PASSWORD = check_setting_str(CFG, "Newzbin", "newzbin_password", "") BINREQ = bool(check_setting_int(CFG, "Bin-Req", "binreq", 1)) WOMBLE = bool(check_setting_int(CFG, "Womble", "womble", 1)) 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", "") 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_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_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_GROWL = bool(check_setting_int(CFG, "Growl", "use_growl", 0)) GROWL_HOST = check_setting_str(CFG, "Growl", "growl_host", "") GROWL_PASSWORD = check_setting_str(CFG, "Growl", "growl_password", "") USE_TWITTER = bool(check_setting_int(CFG, "Twitter", "use_twitter", 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", "Sick Beard") GIT_PATH = check_setting_str(CFG, "General", "git_path", "") EXTRA_SCRIPTS = [x for x in check_setting_str(CFG, "General", "extra_scripts", "").split("|") if x] METADATA_TYPE = check_setting_str(CFG, "General", "metadata_type", "xbmc") METADATA_SHOW = bool(check_setting_int(CFG, "General", "metadata_show", 1)) METADATA_EPISODE = bool(check_setting_int(CFG, "General", "metadata_episode", 1)) ART_POSTER = bool(check_setting_int(CFG, "General", "art_poster", 1)) ART_FANART = bool(check_setting_int(CFG, "General", "art_fanart", 1)) ART_THUMBNAILS = bool(check_setting_int(CFG, "General", "art_thumbnails", 1)) ART_SEASON_THUMBNAILS = bool(check_setting_int(CFG, "General", "art_season_thumbnails", 1)) # try setting defaults if possible try: TEMP_CREATE_METADATA = bool(int(CFG["General"]["create_metadata"])) METADATA_SHOW = TEMP_CREATE_METADATA METADATA_EPISODE = TEMP_CREATE_METADATA except: pass try: TEMP_CREATE_IMAGES = bool(int(CFG["General"]["create_images"])) ART_POSTER = TEMP_CREATE_IMAGES ART_FANART = TEMP_CREATE_IMAGES ART_THUMBNAILS = TEMP_CREATE_IMAGES ART_SEASON_THUMBNAILS = TEMP_CREATE_IMAGES except: pass newznabData = check_setting_str(CFG, "Newznab", "newznab_data", "") newznabProviderList = providers.getNewznabProviderList(newznabData) providerList = providers.makeProviderList() metadata_generator = metadata.getMetadataClass(METADATA_TYPE) logger.initLogging(consoleLogging=consoleLogging) # initialize the main SB database db.upgradeDatabase(db.DBConnection(), mainDB.InitialSchema) currentSearchScheduler = scheduler.Scheduler( searchCurrent.CurrentSearcher(), cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY), threadName="SEARCH", runImmediately=True, ) backlogSearchScheduler = searchBacklog.BacklogSearchScheduler( searchBacklog.BacklogSearcher(), cycleTime=datetime.timedelta(minutes=get_backlog_cycle_time()), threadName="BACKLOG", runImmediately=False, ) backlogSearchScheduler.action.cycleTime = BACKLOG_SEARCH_FREQUENCY # the interval for this is stored inside the ShowUpdater class showUpdaterInstance = showUpdater.ShowUpdater() showUpdateScheduler = scheduler.Scheduler( showUpdaterInstance, cycleTime=showUpdaterInstance.updateInterval, threadName="SHOWUPDATER", runImmediately=False, ) versionCheckScheduler = scheduler.Scheduler( versionChecker.CheckVersion(), cycleTime=datetime.timedelta(hours=12), threadName="CHECKVERSION", runImmediately=True, ) showQueueScheduler = scheduler.Scheduler( queue.ShowQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SHOWQUEUE", silent=True ) properFinderInstance = properFinder.ProperFinder() properFinderScheduler = scheduler.Scheduler( properFinderInstance, cycleTime=properFinderInstance.updateInterval, threadName="FINDPROPERS", runImmediately=False, ) autoPostProcesserScheduler = scheduler.Scheduler( autoPostProcesser.PostProcesser(), cycleTime=datetime.timedelta(minutes=10), threadName="POSTPROCESSER", runImmediately=True, ) showList = [] loadingShowList = {} airingList = [] comingList = [] __INITIALIZED__ = True return True
def initialize(consoleLogging=True): with INIT_LOCK: global LOG_DIR, WEB_PORT, WEB_LOG, WEB_ROOT, WEB_USERNAME, WEB_PASSWORD, WEB_HOST, WEB_IPV6, USE_NZBS, USE_TORRENTS, NZB_METHOD, NZB_DIR, TVBINZ, TVBINZ_UID, TVBINZ_HASH, DOWNLOAD_PROPERS, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_HOST, NZBGET_PASSWORD, NZBGET_CATEGORY, NZBGET_HOST, currentSearchScheduler, backlogSearchScheduler, USE_XBMC, XBMC_NOTIFY_ONSNATCH, XBMC_NOTIFY_ONDOWNLOAD, XBMC_UPDATE_FULL, XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, USE_PLEX, PLEX_NOTIFY_ONSNATCH, PLEX_NOTIFY_ONDOWNLOAD, PLEX_UPDATE_LIBRARY, PLEX_SERVER_HOST, PLEX_HOST, PLEX_USERNAME, PLEX_PASSWORD, showUpdateScheduler, __INITIALIZED__, LAUNCH_BROWSER, showList, loadingShowList, NZBS, NZBS_UID, NZBS_HASH, EZRSS, TVTORRENTS, TVTORRENTS_DIGEST, TVTORRENTS_HASH, TORRENT_DIR, USENET_RETENTION, SOCKET_TIMEOUT, SEARCH_FREQUENCY, DEFAULT_SEARCH_FREQUENCY, BACKLOG_SEARCH_FREQUENCY, QUALITY_DEFAULT, SEASON_FOLDERS_FORMAT, SEASON_FOLDERS_DEFAULT, STATUS_DEFAULT, TWITTER_NOTIFY_ONSNATCH, TWITTER_NOTIFY_ONDOWNLOAD, USE_GROWL, GROWL_NOTIFY_ONSNATCH, GROWL_NOTIFY_ONDOWNLOAD, GROWL_STICKY, GROWL_HOST, GROWL_PASSWORD, USE_PROWL, PROWL_NOTIFY_ONSNATCH, PROWL_NOTIFY_ONDOWNLOAD, PROWL_API, PROWL_PRIORITY, PROG_DIR, NZBMATRIX, NZBMATRIX_USERNAME, NZBMATRIX_APIKEY, versionCheckScheduler, VERSION_NOTIFY, PROCESS_AUTOMATICALLY, KEEP_PROCESSED_DIR, TV_DOWNLOAD_DIR, TVDB_BASE_URL, MIN_SEARCH_FREQUENCY, TVBINZ_AUTH, showQueueScheduler, searchQueueScheduler, ROOT_DIRS, NAMING_SHOW_NAME, NAMING_EP_TYPE, NAMING_MULTI_EP_TYPE, CACHE_DIR, TVDB_API_PARMS, RENAME_EPISODES, properFinderScheduler, PROVIDER_ORDER, autoPostProcesserScheduler, NAMING_EP_NAME, NAMING_SEP_TYPE, NAMING_USE_PERIODS, WOMBLE, NZBSRUS, NZBSRUS_UID, NZBSRUS_HASH, NAMING_QUALITY, providerList, newznabProviderList, NAMING_DATES, EXTRA_SCRIPTS, USE_TWITTER, TWITTER_USERNAME, TWITTER_PASSWORD, TWITTER_PREFIX, USE_NOTIFO, NOTIFO_USERNAME, NOTIFO_APISECRET, NOTIFO_NOTIFY_ONDOWNLOAD, NOTIFO_NOTIFY_ONSNATCH, USE_LIBNOTIFY, LIBNOTIFY_NOTIFY_ONSNATCH, LIBNOTIFY_NOTIFY_ONDOWNLOAD, USE_NMJ, NMJ_HOST, NMJ_DATABASE, NMJ_MOUNT, USE_BANNER, USE_LISTVIEW, METADATA_XBMC, METADATA_MEDIABROWSER, METADATA_PS3, metadata_provider_dict, NEWZBIN, NEWZBIN_USERNAME, NEWZBIN_PASSWORD, GIT_PATH, MOVE_ASSOCIATED_FILES, COMING_EPS_LAYOUT, COMING_EPS_SORT, COMING_EPS_DISPLAY_PAUSED, METADATA_WDTV if __INITIALIZED__: return False socket.setdefaulttimeout(SOCKET_TIMEOUT) CheckSection("General") CheckSection("Blackhole") CheckSection("Newzbin") CheckSection("TVBinz") CheckSection("SABnzbd") CheckSection("NZBget") CheckSection("XBMC") CheckSection("PLEX") CheckSection("Growl") CheckSection("Prowl") CheckSection("Twitter") CheckSection("NMJ") LOG_DIR = check_setting_str(CFG, "General", "log_dir", "Logs") if not helpers.makeDir(LOG_DIR): logger.log(u"!!! No log folder, logging to screen only!", logger.ERROR) 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)) 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)) CACHE_DIR = check_setting_str(CFG, "General", "cache_dir", "cache") # fix bad configs due to buggy code if CACHE_DIR == "None": CACHE_DIR = "cache" if not helpers.makeDir(CACHE_DIR): logger.log(u"!!! Creating local cache dir failed, using system default", logger.ERROR) CACHE_DIR = None ROOT_DIRS = check_setting_str(CFG, "General", "root_dirs", "") if not re.match(r"\d+\|[^|]+(?:\|[^|]+)*", ROOT_DIRS): ROOT_DIRS = "" proxies = urllib.getproxies() proxy_url = None if "http" in proxies: proxy_url = proxies["http"] elif "ftp" in proxies: proxy_url = proxies["ftp"] # Set our common tvdb_api options here TVDB_API_PARMS = { "cache": True, "apikey": TVDB_API_KEY, "language": "en", "cache_dir": False, "http_proxy": proxy_url, } if CACHE_DIR: TVDB_API_PARMS["cache_dir"] = os.path.join(CACHE_DIR, "tvdb") QUALITY_DEFAULT = check_setting_int(CFG, "General", "quality_default", SD) STATUS_DEFAULT = check_setting_int(CFG, "General", "status_default", SKIPPED) VERSION_NOTIFY = check_setting_int(CFG, "General", "version_notify", 1) SEASON_FOLDERS_FORMAT = check_setting_str(CFG, "General", "season_folders_format", "Season %02d") SEASON_FOLDERS_DEFAULT = bool(check_setting_int(CFG, "General", "season_folders_default", 0)) PROVIDER_ORDER = check_setting_str(CFG, "General", "provider_order", "").split() NAMING_SHOW_NAME = bool(check_setting_int(CFG, "General", "naming_show_name", 1)) NAMING_EP_NAME = bool(check_setting_int(CFG, "General", "naming_ep_name", 1)) NAMING_EP_TYPE = check_setting_int(CFG, "General", "naming_ep_type", 0) NAMING_MULTI_EP_TYPE = check_setting_int(CFG, "General", "naming_multi_ep_type", 0) NAMING_SEP_TYPE = check_setting_int(CFG, "General", "naming_sep_type", 0) NAMING_USE_PERIODS = bool(check_setting_int(CFG, "General", "naming_use_periods", 0)) NAMING_QUALITY = bool(check_setting_int(CFG, "General", "naming_quality", 0)) NAMING_DATES = bool(check_setting_int(CFG, "General", "naming_dates", 1)) TVDB_BASE_URL = "http://www.thetvdb.com/api/" + TVDB_API_KEY USE_NZBS = bool(check_setting_int(CFG, "General", "use_nzbs", 1)) USE_TORRENTS = bool(check_setting_int(CFG, "General", "use_torrents", 0)) NZB_METHOD = check_setting_str(CFG, "General", "nzb_method", "blackhole") if NZB_METHOD not in ("blackhole", "sabnzbd", "nzbget"): NZB_METHOD = "blackhole" DOWNLOAD_PROPERS = bool(check_setting_int(CFG, "General", "download_propers", 1)) USENET_RETENTION = check_setting_int(CFG, "General", "usenet_retention", 500) SEARCH_FREQUENCY = check_setting_int(CFG, "General", "search_frequency", DEFAULT_SEARCH_FREQUENCY) if SEARCH_FREQUENCY < MIN_SEARCH_FREQUENCY: SEARCH_FREQUENCY = MIN_SEARCH_FREQUENCY 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 = check_setting_int(CFG, "General", "process_automatically", 0) RENAME_EPISODES = check_setting_int(CFG, "General", "rename_episodes", 1) KEEP_PROCESSED_DIR = check_setting_int(CFG, "General", "keep_processed_dir", 1) MOVE_ASSOCIATED_FILES = check_setting_int(CFG, "General", "move_associated_files", 0) EZRSS = bool(check_setting_int(CFG, "General", "use_torrent", 0)) if not EZRSS: EZRSS = bool(check_setting_int(CFG, "EZRSS", "ezrss", 0)) TVTORRENTS = bool(check_setting_int(CFG, "TVTORRENTS", "tvtorrents", 0)) TVTORRENTS_DIGEST = check_setting_str(CFG, "TVTORRENTS", "tvtorrents_digest", "") TVTORRENTS_HASH = check_setting_str(CFG, "TVTORRENTS", "tvtorrents_hash", "") TVBINZ = bool(check_setting_int(CFG, "TVBinz", "tvbinz", 0)) TVBINZ_UID = check_setting_str(CFG, "TVBinz", "tvbinz_uid", "") TVBINZ_HASH = check_setting_str(CFG, "TVBinz", "tvbinz_hash", "") TVBINZ_AUTH = check_setting_str(CFG, "TVBinz", "tvbinz_auth", "") NZBS = bool(check_setting_int(CFG, "NZBs", "nzbs", 0)) NZBS_UID = check_setting_str(CFG, "NZBs", "nzbs_uid", "") NZBS_HASH = check_setting_str(CFG, "NZBs", "nzbs_hash", "") NZBSRUS = bool(check_setting_int(CFG, "NZBsRUS", "nzbsrus", 0)) NZBSRUS_UID = check_setting_str(CFG, "NZBsRUS", "nzbsrus_uid", "") NZBSRUS_HASH = check_setting_str(CFG, "NZBsRUS", "nzbsrus_hash", "") NZBMATRIX = bool(check_setting_int(CFG, "NZBMatrix", "nzbmatrix", 0)) NZBMATRIX_USERNAME = check_setting_str(CFG, "NZBMatrix", "nzbmatrix_username", "") NZBMATRIX_APIKEY = check_setting_str(CFG, "NZBMatrix", "nzbmatrix_apikey", "") NEWZBIN = bool(check_setting_int(CFG, "Newzbin", "newzbin", 0)) NEWZBIN_USERNAME = check_setting_str(CFG, "Newzbin", "newzbin_username", "") NEWZBIN_PASSWORD = check_setting_str(CFG, "Newzbin", "newzbin_password", "") WOMBLE = bool(check_setting_int(CFG, "Womble", "womble", 1)) 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_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", "") USE_XBMC = bool(check_setting_int(CFG, "XBMC", "use_xbmc", 0)) 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_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_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_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_STICKY = bool(check_setting_int(CFG, "Growl", "growl_sticky", 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_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_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", "Sick Beard") USE_NOTIFO = bool(check_setting_int(CFG, "Notifo", "use_notifo", 0)) NOTIFO_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, "Notifo", "notifo_notify_onsnatch", 0)) NOTIFO_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, "Notifo", "notifo_notify_ondownload", 0)) NOTIFO_USERNAME = check_setting_str(CFG, "Notifo", "notifo_username", "") NOTIFO_APISECRET = check_setting_str(CFG, "Notifo", "notifo_apisecret", "") 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)) 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", "") GIT_PATH = check_setting_str(CFG, "General", "git_path", "") EXTRA_SCRIPTS = [x for x in check_setting_str(CFG, "General", "extra_scripts", "").split("|") if x] USE_BANNER = bool(check_setting_int(CFG, "General", "use_banner", 0)) USE_LISTVIEW = bool(check_setting_int(CFG, "General", "use_listview", 0)) METADATA_TYPE = check_setting_str(CFG, "General", "metadata_type", "") metadata_provider_dict = metadata.get_metadata_generator_dict() # if this exists it's legacy, use the info to upgrade metadata to the new settings if METADATA_TYPE: old_metadata_class = None if METADATA_TYPE == "xbmc": old_metadata_class = metadata.xbmc.metadata_class elif METADATA_TYPE == "mediabrowser": old_metadata_class = metadata.mediabrowser.metadata_class elif METADATA_TYPE == "ps3": old_metadata_class = metadata.ps3.metadata_class if old_metadata_class: METADATA_SHOW = bool(check_setting_int(CFG, "General", "metadata_show", 1)) METADATA_EPISODE = bool(check_setting_int(CFG, "General", "metadata_episode", 1)) ART_POSTER = bool(check_setting_int(CFG, "General", "art_poster", 1)) ART_FANART = bool(check_setting_int(CFG, "General", "art_fanart", 1)) ART_THUMBNAILS = bool(check_setting_int(CFG, "General", "art_thumbnails", 1)) ART_SEASON_THUMBNAILS = bool(check_setting_int(CFG, "General", "art_season_thumbnails", 1)) new_metadata_class = old_metadata_class( METADATA_SHOW, METADATA_EPISODE, ART_POSTER, ART_FANART, ART_THUMBNAILS, ART_SEASON_THUMBNAILS ) metadata_provider_dict[new_metadata_class.name] = new_metadata_class # this is the normal codepath for metadata config else: METADATA_XBMC = check_setting_str(CFG, "General", "metadata_xbmc", "0|0|0|0|0|0") METADATA_MEDIABROWSER = check_setting_str(CFG, "General", "metadata_mediabrowser", "0|0|0|0|0|0") METADATA_PS3 = check_setting_str(CFG, "General", "metadata_ps3", "0|0|0|0|0|0") METADATA_WDTV = check_setting_str(CFG, "General", "metadata_wdtv", "0|0|0|0|0|0") for cur_metadata_tuple in [ (METADATA_XBMC, metadata.xbmc), (METADATA_MEDIABROWSER, metadata.mediabrowser), (METADATA_PS3, metadata.ps3), (METADATA_WDTV, metadata.wdtv), ]: (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 COMING_EPS_LAYOUT = check_setting_str(CFG, "GUI", "coming_eps_layout", "banner") COMING_EPS_DISPLAY_PAUSED = bool(check_setting_int(CFG, "GUI", "coming_eps_display_paused", 0)) COMING_EPS_SORT = check_setting_str(CFG, "GUI", "coming_eps_sort", "date") newznabData = check_setting_str(CFG, "Newznab", "newznab_data", "") newznabProviderList = providers.getNewznabProviderList(newznabData) providerList = providers.makeProviderList() logger.initLogging(consoleLogging=consoleLogging) # initialize the main SB database db.upgradeDatabase(db.DBConnection(), mainDB.InitialSchema) # initialize the cache database db.upgradeDatabase(db.DBConnection("cache.db"), cache_db.InitialSchema) # fix up any db problems db.sanityCheckDatabase(db.DBConnection(), mainDB.MainSanityCheck) currentSearchScheduler = scheduler.Scheduler( searchCurrent.CurrentSearcher(), cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY), threadName="SEARCH", runImmediately=True, ) backlogSearchScheduler = searchBacklog.BacklogSearchScheduler( searchBacklog.BacklogSearcher(), cycleTime=datetime.timedelta(minutes=get_backlog_cycle_time()), threadName="BACKLOG", runImmediately=False, ) backlogSearchScheduler.action.cycleTime = BACKLOG_SEARCH_FREQUENCY # the interval for this is stored inside the ShowUpdater class showUpdaterInstance = showUpdater.ShowUpdater() showUpdateScheduler = scheduler.Scheduler( showUpdaterInstance, cycleTime=showUpdaterInstance.updateInterval, threadName="SHOWUPDATER", runImmediately=False, ) versionCheckScheduler = scheduler.Scheduler( versionChecker.CheckVersion(), cycleTime=datetime.timedelta(hours=12), threadName="CHECKVERSION", runImmediately=True, ) showQueueScheduler = scheduler.Scheduler( show_queue.ShowQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SHOWQUEUE", silent=True ) searchQueueScheduler = scheduler.Scheduler( search_queue.SearchQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SEARCHQUEUE", silent=True ) properFinderInstance = properFinder.ProperFinder() properFinderScheduler = scheduler.Scheduler( properFinderInstance, cycleTime=properFinderInstance.updateInterval, threadName="FINDPROPERS", runImmediately=False, ) autoPostProcesserScheduler = scheduler.Scheduler( autoPostProcesser.PostProcesser(), cycleTime=datetime.timedelta(minutes=10), threadName="POSTPROCESSER", runImmediately=True, ) showList = [] loadingShowList = {} __INITIALIZED__ = True return True
def initialize(): with INIT_LOCK: global LOG_DIR, WEB_PORT, WEB_LOG, WEB_ROOT, WEB_USERNAME, WEB_PASSWORD, NZB_METHOD, NZB_DIR, \ NEWZBIN, NEWZBIN_USERNAME, NEWZBIN_PASSWORD, TVBINZ, TVBINZ_UID, TVBINZ_HASH, \ SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_HOST, IRC_BOT, IRC_SERVER, \ IRC_CHANNEL, IRC_KEY, IRC_NICK, XBMC_NOTIFY_ONSNATCH, XBMC_NOTIFY_ONDOWNLOAD, \ XBMC_UPDATE_LIBRARY, XBMC_HOST, XBMC_USERNAME, XBMC_PASSWORD, currentSearchScheduler, backlogSearchScheduler, \ showUpdateScheduler, botRunner, __INITIALIZED__, LAUNCH_BROWSER, showList, missingList, \ airingList, comingList, loadingShowList, CREATE_METADATA, SOCKET_TIMEOUT, \ NZBS, NZBS_UID, NZBS_HASH, USE_NZB, USE_TORRENT, TORRENT_DIR, USENET_RETENTION, \ SEARCH_FREQUENCY, DEFAULT_SEARCH_FREQUENCY, BACKLOG_SEARCH_FREQUENCY, \ DEFAULT_BACKLOG_SEARCH_FREQUENCY, QUALITY_DEFAULT, SEASON_FOLDERS_DEFAULT, \ USE_GROWL, GROWL_HOST, GROWL_PASSWORD, PROG_DIR, NZBMATRIX, NZBMATRIX_USERNAME, \ NZBMATRIX_APIKEY, versionCheckScheduler, VERSION_NOTIFY, PROCESS_AUTOMATICALLY, \ KEEP_PROCESSED_DIR, TV_DOWNLOAD_DIR, TVNZB, TVDB_BASE_URL, MIN_SEARCH_FREQUENCY, \ MIN_BACKLOG_SEARCH_FREQUENCY, TVBINZ_AUTH, TVBINZ_SABUID, showQueueScheduler, \ NAMING_SHOW_NAME, NAMING_EP_TYPE, NAMING_MULTI_EP_TYPE, \ CACHE_DIR, TVDB_API_PARMS if __INITIALIZED__: return False socket.setdefaulttimeout(SOCKET_TIMEOUT) CheckSection('General') CheckSection('Blackhole') CheckSection('Newzbin') CheckSection('TVBinz') CheckSection('SABnzbd') CheckSection('IRC') CheckSection('XBMC') CheckSection('Growl') LOG_DIR = check_setting_str(CFG, 'General', 'log_dir', 'Logs') if not helpers.makeDir(LOG_DIR): logger.log("!!! No log folder, logging to screen only!", logger.ERROR) 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_ROOT = check_setting_str(CFG, 'General', 'web_root', '').rstrip("/") WEB_LOG = bool(check_setting_int(CFG, 'General', 'web_log', 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)) CREATE_METADATA = bool(check_setting_int(CFG, 'General', 'create_metadata', 1)) CACHE_DIR = check_setting_str(CFG, 'General', 'cache_dir', 'cache') if not helpers.makeDir(CACHE_DIR): logger.log("!!! Creating local cache dir failed, using system default", logger.ERROR) CACHE_DIR = None # Set our common tvdb_api options here TVDB_API_PARMS = {'cache': None, 'apikey': TVDB_API_KEY} if CACHE_DIR: TVDB_API_PARMS['cache'] = CACHE_DIR + '/tvdb' else: TVDB_API_PARMS['cache'] = True QUALITY_DEFAULT = check_setting_int(CFG, 'General', 'quality_default', SD) VERSION_NOTIFY = check_setting_int(CFG, 'General', 'version_notify', 1) SEASON_FOLDERS_DEFAULT = bool(check_setting_int(CFG, 'General', 'season_folders_default', 0)) NAMING_SHOW_NAME = bool(check_setting_int(CFG, 'General', 'naming_show_name', 1)) NAMING_EP_TYPE = check_setting_int(CFG, 'General', 'naming_ep_string', 0) NAMING_MULTI_EP_TYPE = check_setting_int(CFG, 'General', 'naming_multi_ep_type', 0) TVDB_BASE_URL = 'http://www.thetvdb.com/api/' + TVDB_API_KEY NZB_METHOD = check_setting_str(CFG, 'General', 'nzb_method', 'blackhole') if NZB_METHOD not in ('blackhole', 'sabnzbd'): NZB_METHOD = 'blackhole' USE_NZB = bool(check_setting_int(CFG, 'General', 'use_nzb', 1)) USE_TORRENT = bool(check_setting_int(CFG, 'General', 'use_torrent', 0)) USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', 200) SEARCH_FREQUENCY = check_setting_int(CFG, 'General', 'search_frequency', DEFAULT_SEARCH_FREQUENCY) if SEARCH_FREQUENCY < MIN_SEARCH_FREQUENCY: SEARCH_FREQUENCY = MIN_SEARCH_FREQUENCY BACKLOG_SEARCH_FREQUENCY = check_setting_int(CFG, 'General', 'backlog_search_frequency', DEFAULT_BACKLOG_SEARCH_FREQUENCY) if BACKLOG_SEARCH_FREQUENCY < MIN_BACKLOG_SEARCH_FREQUENCY: BACKLOG_SEARCH_FREQUENCY = MIN_BACKLOG_SEARCH_FREQUENCY 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 = check_setting_int(CFG, 'General', 'process_automatically', 0) KEEP_PROCESSED_DIR = check_setting_int(CFG, 'General', 'keep_processed_dir', 0) NEWZBIN = bool(check_setting_int(CFG, 'Newzbin', 'newzbin', 0)) NEWZBIN_USERNAME = check_setting_str(CFG, 'Newzbin', 'newzbin_username', '') NEWZBIN_PASSWORD = check_setting_str(CFG, 'Newzbin', 'newzbin_password', '') TVBINZ = bool(check_setting_int(CFG, 'TVBinz', 'tvbinz', 0)) TVBINZ_UID = check_setting_str(CFG, 'TVBinz', 'tvbinz_uid', '') TVBINZ_SABUID = check_setting_str(CFG, 'TVBinz', 'tvbinz_sabuid', '') TVBINZ_HASH = check_setting_str(CFG, 'TVBinz', 'tvbinz_hash', '') TVBINZ_AUTH = check_setting_str(CFG, 'TVBinz', 'tvbinz_auth', '') NZBS = bool(check_setting_int(CFG, 'NZBs', 'nzbs', 0)) NZBS_UID = check_setting_str(CFG, 'NZBs', 'nzbs_uid', '') NZBS_HASH = check_setting_str(CFG, 'NZBs', 'nzbs_hash', '') NZBMATRIX = bool(check_setting_int(CFG, 'NZBMatrix', 'nzbmatrix', 0)) NZBMATRIX_USERNAME = check_setting_str(CFG, 'NZBMatrix', 'nzbmatrix_username', '') NZBMATRIX_APIKEY = check_setting_str(CFG, 'NZBMatrix', 'nzbmatrix_apikey', '') TVNZB = bool(check_setting_int(CFG, 'TVNZB', 'tvnzb', 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', '') IRC_BOT = bool(check_setting_int(CFG, 'IRC', 'irc_bot', 0)) IRC_SERVER = check_setting_str(CFG, 'IRC', 'irc_server', '') IRC_CHANNEL = check_setting_str(CFG, 'IRC', 'irc_channel', '') IRC_KEY = check_setting_str(CFG, 'IRC', 'irc_key', '') IRC_NICK = check_setting_str(CFG, 'IRC', 'irc_nick', '') 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_UPDATE_LIBRARY = bool(check_setting_int(CFG, 'XBMC', 'xbmc_update_library', 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_GROWL = bool(check_setting_int(CFG, 'Growl', 'use_growl', 0)) GROWL_HOST = check_setting_str(CFG, 'Growl', 'growl_host', '') GROWL_PASSWORD = check_setting_str(CFG, 'Growl', 'growl_password', '') logger.initLogging() currentSearchScheduler = scheduler.Scheduler(searchCurrent.CurrentSearcher(), cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY), threadName="SEARCH", runImmediately=True) backlogSearchScheduler = searchBacklog.BacklogSearchScheduler(searchBacklog.BacklogSearcher(), cycleTime=datetime.timedelta(hours=1), threadName="BACKLOG", runImmediately=False) backlogSearchScheduler.action.cycleTime = BACKLOG_SEARCH_FREQUENCY # the interval for this is stored inside the ShowUpdater class showUpdaterInstance = showUpdater.ShowUpdater() showUpdateScheduler = scheduler.Scheduler(showUpdaterInstance, cycleTime=showUpdaterInstance.updateInterval, threadName="SHOWUPDATER", runImmediately=True) versionCheckScheduler = scheduler.Scheduler(versionChecker.CheckVersion(), cycleTime=datetime.timedelta(hours=12), threadName="CHECKVERSION", runImmediately=True) showQueueScheduler = scheduler.Scheduler(queue.ShowQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SHOWQUEUE", silent=True) showList = [] loadingShowList = {} missingList = [] airingList = [] comingList = [] __INITIALIZED__ = True return True