def initialize(): with INIT_LOCK: global __INITIALIZED__, FULL_PATH, PROG_DIR, VERBOSE, DAEMON, DATA_DIR, CONFIG_FILE, CFG, CONFIG_VERSION, LOG_DIR, CACHE_DIR, \ HTTP_PORT, HTTP_HOST, HTTP_USERNAME, HTTP_PASSWORD, HTTP_ROOT, LAUNCH_BROWSER, GIT_PATH, \ CURRENT_VERSION, LATEST_VERSION, CHECK_GITHUB, CHECK_GITHUB_ON_STARTUP, CHECK_GITHUB_INTERVAL, MUSIC_DIR, DESTINATION_DIR, \ DOWNLOAD_DIR, USENET_RETENTION, SEARCH_INTERVAL, INTERFACE, AUTOWANT_ALL, AUTOWANT_UPCOMING, \ LIBRARYSCAN_INTERVAL, DOWNLOAD_SCAN_INTERVAL, SAB_HOST, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, BLACKHOLE, BLACKHOLE_DIR, \ NZBSU, NZBSU_APIKEY, DOGNZB, DOGNZB_APIKEY, \ RAW, RAW_PROVIDER, RAW_USERNAME, RAW_PASSWORD, RAW_GROUPS, EXPERIMENTAL,\ PREFERRED_QUALITY, MOVE_FILES, RENAME_FILES, CORRECT_METADATA, FOLDER_FORMAT, FILE_FORMAT, \ COMIC_LOCATION, QUAL_ALTVERS, QUAL_SCANNER, QUAL_TYPE, QUAL_QUALITY if __INITIALIZED__: return False # Make sure all the config sections exist CheckSection('General') CheckSection('SABnzbd') CheckSection('NZBsu') CheckSection('DOGnzb') CheckSection('Raw') CheckSection('Experimental') # Set global variables based on config file or use defaults try: HTTP_PORT = check_setting_int(CFG, 'General', 'http_port', 8090) except: HTTP_PORT = 8090 if HTTP_PORT < 21 or HTTP_PORT > 65535: HTTP_PORT = 8090 HTTP_HOST = check_setting_str(CFG, 'General', 'http_host', '0.0.0.0') HTTP_USERNAME = check_setting_str(CFG, 'General', 'http_username', '') HTTP_PASSWORD = check_setting_str(CFG, 'General', 'http_password', '') HTTP_ROOT = check_setting_str(CFG, 'General', 'http_root', '/') LAUNCH_BROWSER = bool(check_setting_int(CFG, 'General', 'launch_browser', 1)) GIT_PATH = check_setting_str(CFG, 'General', 'git_path', '') LOG_DIR = check_setting_str(CFG, 'General', 'log_dir', '') CHECK_GITHUB = bool(check_setting_int(CFG, 'General', 'check_github', 1)) CHECK_GITHUB_ON_STARTUP = bool(check_setting_int(CFG, 'General', 'check_github_on_startup', 1)) CHECK_GITHUB_INTERVAL = check_setting_int(CFG, 'General', 'check_github_interval', 360) DESTINATION_DIR = check_setting_str(CFG, 'General', 'destination_dir', '') USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', '1500') SEARCH_INTERVAL = check_setting_int(CFG, 'General', 'search_interval', 360) LIBRARYSCAN_INTERVAL = check_setting_int(CFG, 'General', 'libraryscan_interval', 300) DOWNLOAD_SCAN_INTERVAL = check_setting_int(CFG, 'General', 'download_scan_interval', 5) INTERFACE = check_setting_str(CFG, 'General', 'interface', 'default') AUTOWANT_ALL = bool(check_setting_int(CFG, 'General', 'autowant_all', 0)) AUTOWANT_UPCOMING = bool(check_setting_int(CFG, 'General', 'autowant_upcoming', 0)) PREFERRED_QUALITY = check_setting_int(CFG, 'General', 'preferred_quality', 0) CORRECT_METADATA = bool(check_setting_int(CFG, 'General', 'correct_metadata', 0)) MOVE_FILES = bool(check_setting_int(CFG, 'General', 'move_files', 0)) RENAME_FILES = bool(check_setting_int(CFG, 'General', 'rename_files', 0)) FOLDER_FORMAT = check_setting_str(CFG, 'General', 'folder_format', 'Artist/Album [Year]') FILE_FORMAT = check_setting_str(CFG, 'General', 'file_format', 'Track Artist - Album [Year]- Title') BLACKHOLE = bool(check_setting_int(CFG, 'General', 'blackhole', 0)) BLACKHOLE_DIR = check_setting_str(CFG, 'General', 'blackhole_dir', '') SAB_HOST = check_setting_str(CFG, 'SABnzbd', 'sab_host', '') 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', '') NZBSU = bool(check_setting_int(CFG, 'NZBsu', 'nzbsu', 0)) NZBSU_APIKEY = check_setting_str(CFG, 'NZBsu', 'nzbsu_apikey', '') DOGNZB = bool(check_setting_int(CFG, 'DOGnzb', 'dognzb', 0)) DOGNZB_APIKEY = check_setting_str(CFG, 'DOGnzb', 'dognzb_apikey', '') RAW = bool(check_setting_int(CFG, 'Raw', 'raw', 0)) RAW_PROVIDER = check_setting_str(CFG, 'Raw', 'raw_provider', '') RAW_USERNAME = check_setting_str(CFG, 'Raw', 'raw_username', '') RAW_PASSWORD = check_setting_str(CFG, 'Raw', 'raw_password', '') RAW_GROUPS = check_setting_str(CFG, 'Raw', 'raw_groups', '') EXPERIMENTAL = bool(check_setting_int(CFG, 'Experimental', 'experimental', 0)) # update folder formats in the config & bump up config version if CONFIG_VERSION == '0': from mylar.helpers import replace_all file_values = { 'tracknumber': 'Track', 'title': 'Title','artist' : 'Artist', 'album' : 'Album', 'year' : 'Year' } folder_values = { 'artist' : 'Artist', 'album':'Album', 'year' : 'Year', 'releasetype' : 'Type', 'first' : 'First', 'lowerfirst' : 'first' } FILE_FORMAT = replace_all(FILE_FORMAT, file_values) FOLDER_FORMAT = replace_all(FOLDER_FORMAT, folder_values) CONFIG_VERSION = '1' if CONFIG_VERSION == '1': from mylar.helpers import replace_all file_values = { 'Track': '$Track', 'Title': '$Title', 'Artist': '$Artist', 'Album': '$Album', 'Year': '$Year', 'track': '$track', 'title': '$title', 'artist': '$artist', 'album': '$album', 'year': '$year' } folder_values = { 'Artist': '$Artist', 'Album': '$Album', 'Year': '$Year', 'Type': '$Type', 'First': '$First', 'artist': '$artist', 'album': '$album', 'year': '$year', 'type': '$type', 'first': '$first' } FILE_FORMAT = replace_all(FILE_FORMAT, file_values) FOLDER_FORMAT = replace_all(FOLDER_FORMAT, folder_values) CONFIG_VERSION = '2' if not LOG_DIR: LOG_DIR = os.path.join(DATA_DIR, 'logs') if not os.path.exists(LOG_DIR): try: os.makedirs(LOG_DIR) except OSError: if VERBOSE: print 'Unable to create the log directory. Logging to screen only.' # Start the logger, silence console logging if we need to logger.mylar_log.initLogger(verbose=VERBOSE) # Put the cache dir in the data dir for now CACHE_DIR = os.path.join(DATA_DIR, 'cache') if not os.path.exists(CACHE_DIR): try: os.makedirs(CACHE_DIR) except OSError: logger.error('Could not create cache dir. Check permissions of datadir: ' + DATA_DIR) # Initialize the database logger.info('Checking to see if the database has all tables....') try: dbcheck() except Exception, e: logger.error("Can't connect to the database: %s" % e) # Get the currently installed version - returns None, 'win32' or the git hash # Also sets INSTALL_TYPE variable to 'win', 'git' or 'source' CURRENT_VERSION = versioncheck.getVersion() # Check for new versions if CHECK_GITHUB_ON_STARTUP: try: LATEST_VERSION = versioncheck.checkGithub() except: LATEST_VERSION = CURRENT_VERSION else: LATEST_VERSION = CURRENT_VERSION __INITIALIZED__ = True return True
def initialize(): with INIT_LOCK: global __INITIALIZED__, FULL_PATH, PROG_DIR, VERBOSE, DAEMON, COMICSORT, DATA_DIR, CONFIG_FILE, CFG, CONFIG_VERSION, LOG_DIR, CACHE_DIR, LOGVERBOSE, OLDCONFIG_VERSION, \ HTTP_PORT, HTTP_HOST, HTTP_USERNAME, HTTP_PASSWORD, HTTP_ROOT, LAUNCH_BROWSER, GIT_PATH, \ CURRENT_VERSION, LATEST_VERSION, CHECK_GITHUB, CHECK_GITHUB_ON_STARTUP, CHECK_GITHUB_INTERVAL, USER_AGENT, DESTINATION_DIR, \ DOWNLOAD_DIR, USENET_RETENTION, SEARCH_INTERVAL, NZB_STARTUP_SEARCH, INTERFACE, AUTOWANT_ALL, AUTOWANT_UPCOMING, ZERO_LEVEL, ZERO_LEVEL_N, COMIC_COVER_LOCAL, HIGHCOUNT, \ LIBRARYSCAN, LIBRARYSCAN_INTERVAL, DOWNLOAD_SCAN_INTERVAL, USE_SABNZBD, SAB_HOST, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_PRIORITY, SAB_DIRECTORY, BLACKHOLE, BLACKHOLE_DIR, ADD_COMICS, COMIC_DIR, IMP_MOVE, IMP_RENAME, IMP_METADATA, \ USE_NZBGET, NZBGET_HOST, NZBGET_PORT, NZBGET_USERNAME, NZBGET_PASSWORD, NZBGET_CATEGORY, NZBGET_PRIORITY, NZBSU, NZBSU_APIKEY, DOGNZB, DOGNZB_APIKEY, NZBX,\ NEWZNAB, NEWZNAB_HOST, NEWZNAB_APIKEY, NEWZNAB_ENABLED, EXTRA_NEWZNABS, NEWZNAB_EXTRA, \ RAW, RAW_PROVIDER, RAW_USERNAME, RAW_PASSWORD, RAW_GROUPS, EXPERIMENTAL, \ PROWL_ENABLED, PROWL_PRIORITY, PROWL_KEYS, PROWL_ONSNATCH, NMA_ENABLED, NMA_APIKEY, NMA_PRIORITY, NMA_ONSNATCH, PUSHOVER_ENABLED, PUSHOVER_PRIORITY, PUSHOVER_APIKEY, PUSHOVER_USERKEY, PUSHOVER_ONSNATCH, LOCMOVE, NEWCOM_DIR, FFTONEWCOM_DIR, \ PREFERRED_QUALITY, MOVE_FILES, RENAME_FILES, LOWERCASE_FILENAMES, USE_MINSIZE, MINSIZE, USE_MAXSIZE, MAXSIZE, CORRECT_METADATA, FOLDER_FORMAT, FILE_FORMAT, REPLACE_CHAR, REPLACE_SPACES, ADD_TO_CSV, CVINFO, LOG_LEVEL, POST_PROCESSING, SEARCH_DELAY, GRABBAG_DIR, READ2FILENAME, STORYARCDIR, CVURL, CVAPIFIX, \ COMIC_LOCATION, QUAL_ALTVERS, QUAL_SCANNER, QUAL_TYPE, QUAL_QUALITY, ENABLE_EXTRA_SCRIPTS, EXTRA_SCRIPTS, ENABLE_PRE_SCRIPTS, PRE_SCRIPTS, PULLNEW, COUNT_ISSUES, COUNT_HAVES, COUNT_COMICS, SYNO_FIX, CHMOD_FILE, CHMOD_DIR, ANNUALS_ON, CV_ONLY, CV_ONETIMER, WEEKFOLDER if __INITIALIZED__: return False # Make sure all the config sections exist CheckSection('General') CheckSection('SABnzbd') CheckSection('NZBGet') CheckSection('NZBsu') CheckSection('DOGnzb') CheckSection('Raw') CheckSection('Experimental') CheckSection('Newznab') # Set global variables based on config file or use defaults try: HTTP_PORT = check_setting_int(CFG, 'General', 'http_port', 8090) except: HTTP_PORT = 8090 if HTTP_PORT < 21 or HTTP_PORT > 65535: HTTP_PORT = 8090 CONFIG_VERSION = check_setting_str(CFG, 'General', 'config_version', '') HTTP_HOST = check_setting_str(CFG, 'General', 'http_host', '0.0.0.0') HTTP_USERNAME = check_setting_str(CFG, 'General', 'http_username', '') HTTP_PASSWORD = check_setting_str(CFG, 'General', 'http_password', '') HTTP_ROOT = check_setting_str(CFG, 'General', 'http_root', '/') LAUNCH_BROWSER = bool(check_setting_int(CFG, 'General', 'launch_browser', 1)) LOGVERBOSE = bool(check_setting_int(CFG, 'General', 'logverbose', 1)) GIT_PATH = check_setting_str(CFG, 'General', 'git_path', '') LOG_DIR = check_setting_str(CFG, 'General', 'log_dir', '') if not CACHE_DIR: CACHE_DIR = check_setting_str(CFG, 'General', 'cache_dir', '') CHECK_GITHUB = bool(check_setting_int(CFG, 'General', 'check_github', 1)) CHECK_GITHUB_ON_STARTUP = bool(check_setting_int(CFG, 'General', 'check_github_on_startup', 1)) CHECK_GITHUB_INTERVAL = check_setting_int(CFG, 'General', 'check_github_interval', 360) DESTINATION_DIR = check_setting_str(CFG, 'General', 'destination_dir', '') CHMOD_DIR = check_setting_str(CFG, 'General', 'chmod_dir', '0777') CHMOD_FILE = check_setting_str(CFG, 'General', 'chmod_file', '0660') USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', '1500') SEARCH_INTERVAL = check_setting_int(CFG, 'General', 'search_interval', 360) NZB_STARTUP_SEARCH = bool(check_setting_int(CFG, 'General', 'nzb_startup_search', 0)) LIBRARYSCAN = bool(check_setting_int(CFG, 'General', 'libraryscan', 1)) LIBRARYSCAN_INTERVAL = check_setting_int(CFG, 'General', 'libraryscan_interval', 300) ADD_COMICS = bool(check_setting_int(CFG, 'General', 'add_comics', 0)) COMIC_DIR = check_setting_str(CFG, 'General', 'comic_dir', '') IMP_MOVE = bool(check_setting_int(CFG, 'General', 'imp_move', 0)) IMP_RENAME = bool(check_setting_int(CFG, 'General', 'imp_rename', 0)) IMP_METADATA = bool(check_setting_int(CFG, 'General', 'imp_metadata', 0)) DOWNLOAD_SCAN_INTERVAL = check_setting_int(CFG, 'General', 'download_scan_interval', 5) INTERFACE = check_setting_str(CFG, 'General', 'interface', 'default') AUTOWANT_ALL = bool(check_setting_int(CFG, 'General', 'autowant_all', 0)) AUTOWANT_UPCOMING = bool(check_setting_int(CFG, 'General', 'autowant_upcoming', 1)) COMIC_COVER_LOCAL = bool(check_setting_int(CFG, 'General', 'comic_cover_local', 0)) PREFERRED_QUALITY = bool(check_setting_int(CFG, 'General', 'preferred_quality', 0)) CORRECT_METADATA = bool(check_setting_int(CFG, 'General', 'correct_metadata', 0)) MOVE_FILES = bool(check_setting_int(CFG, 'General', 'move_files', 0)) RENAME_FILES = bool(check_setting_int(CFG, 'General', 'rename_files', 0)) FOLDER_FORMAT = check_setting_str(CFG, 'General', 'folder_format', '$Series ($Year)') FILE_FORMAT = check_setting_str(CFG, 'General', 'file_format', '$Series $Issue ($Year)') BLACKHOLE = bool(check_setting_int(CFG, 'General', 'blackhole', 0)) BLACKHOLE_DIR = check_setting_str(CFG, 'General', 'blackhole_dir', '') REPLACE_SPACES = bool(check_setting_int(CFG, 'General', 'replace_spaces', 0)) REPLACE_CHAR = check_setting_str(CFG, 'General', 'replace_char', '') ZERO_LEVEL = bool(check_setting_int(CFG, 'General', 'zero_level', 0)) ZERO_LEVEL_N = check_setting_str(CFG, 'General', 'zero_level_n', '') LOWERCASE_FILENAMES = bool(check_setting_int(CFG, 'General', 'lowercase_filenames', 0)) SYNO_FIX = bool(check_setting_int(CFG, 'General', 'syno_fix', 0)) SEARCH_DELAY = check_setting_int(CFG, 'General', 'search_delay', 1) GRABBAG_DIR = check_setting_str(CFG, 'General', 'grabbag_dir', '') if not GRABBAG_DIR: #default to ComicLocation GRABBAG_DIR = DESTINATION_DIR WEEKFOLDER = bool(check_setting_int(CFG, 'General', 'weekfolder', 0)) CVAPIFIX = bool(check_setting_int(CFG, 'General', 'cvapifix', 0)) if CVAPIFIX is None: CVAPIFIX = 0 LOCMOVE = bool(check_setting_int(CFG, 'General', 'locmove', 0)) if LOCMOVE is None: LOCMOVE = 0 NEWCOM_DIR = check_setting_str(CFG, 'General', 'newcom_dir', '') FFTONEWCOM_DIR = bool(check_setting_int(CFG, 'General', 'fftonewcom_dir', 0)) if FFTONEWCOM_DIR is None: FFTONEWCOM_DIR = 0 HIGHCOUNT = check_setting_str(CFG, 'General', 'highcount', '') if not HIGHCOUNT: HIGHCOUNT = 0 READ2FILENAME = bool(check_setting_int(CFG, 'General', 'read2filename', 0)) STORYARCDIR = bool(check_setting_int(CFG, 'General', 'storyarcdir', 0)) PROWL_ENABLED = bool(check_setting_int(CFG, 'Prowl', 'prowl_enabled', 0)) PROWL_KEYS = check_setting_str(CFG, 'Prowl', 'prowl_keys', '') PROWL_ONSNATCH = bool(check_setting_int(CFG, 'Prowl', 'prowl_onsnatch', 0)) PROWL_PRIORITY = check_setting_int(CFG, 'Prowl', 'prowl_priority', 0) NMA_ENABLED = bool(check_setting_int(CFG, 'NMA', 'nma_enabled', 0)) NMA_APIKEY = check_setting_str(CFG, 'NMA', 'nma_apikey', '') NMA_PRIORITY = check_setting_int(CFG, 'NMA', 'nma_priority', 0) NMA_ONSNATCH = bool(check_setting_int(CFG, 'NMA', 'nma_onsnatch', 0)) PUSHOVER_ENABLED = bool(check_setting_int(CFG, 'PUSHOVER', 'pushover_enabled', 0)) PUSHOVER_APIKEY = check_setting_str(CFG, 'PUSHOVER', 'pushover_apikey', '') PUSHOVER_USERKEY = check_setting_str(CFG, 'PUSHOVER', 'pushover_userkey', '') PUSHOVER_PRIORITY = check_setting_int(CFG, 'PUSHOVER', 'pushover_priority', 0) PUSHOVER_ONSNATCH = bool(check_setting_int(CFG, 'PUSHOVER', 'pushover_onsnatch', 0)) USE_MINSIZE = bool(check_setting_int(CFG, 'General', 'use_minsize', 0)) MINSIZE = check_setting_str(CFG, 'General', 'minsize', '') USE_MAXSIZE = bool(check_setting_int(CFG, 'General', 'use_maxsize', 0)) MAXSIZE = check_setting_str(CFG, 'General', 'maxsize', '') ADD_TO_CSV = bool(check_setting_int(CFG, 'General', 'add_to_csv', 1)) CVINFO = bool(check_setting_int(CFG, 'General', 'cvinfo', 0)) ANNUALS_ON = bool(check_setting_int(CFG, 'General', 'annuals_on', 0)) if not ANNUALS_ON: #default to on ANNUALS_ON = 0 CV_ONLY = bool(check_setting_int(CFG, 'General', 'cv_only', 1)) if not CV_ONLY: #default to on CV_ONLY = 1 CV_ONETIMER = bool(check_setting_int(CFG, 'General', 'cv_onetimer', 1)) if not CV_ONETIMER: CV_ONETIMER = 1 LOG_LEVEL = check_setting_str(CFG, 'General', 'log_level', '') ENABLE_EXTRA_SCRIPTS = bool(check_setting_int(CFG, 'General', 'enable_extra_scripts', 0)) EXTRA_SCRIPTS = check_setting_str(CFG, 'General', 'extra_scripts', '') ENABLE_PRE_SCRIPTS = bool(check_setting_int(CFG, 'General', 'enable_pre_scripts', 0)) PRE_SCRIPTS = check_setting_str(CFG, 'General', 'pre_scripts', '') POST_PROCESSING = bool(check_setting_int(CFG, 'General', 'post_processing', 1)) USE_SABNZBD = bool(check_setting_int(CFG, 'SABnzbd', 'use_sabnzbd', 0)) SAB_HOST = check_setting_str(CFG, 'SABnzbd', 'sab_host', '') 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', '') SAB_DIRECTORY = check_setting_str(CFG, 'SABnzbd', 'sab_directory', '') SAB_PRIORITY = check_setting_str(CFG, 'SABnzbd', 'sab_priority', '') if SAB_PRIORITY.isdigit(): if SAB_PRIORITY == "0": SAB_PRIORITY = "Default" elif SAB_PRIORITY == "1": SAB_PRIORITY = "Low" elif SAB_PRIORITY == "2": SAB_PRIORITY = "Normal" elif SAB_PRIORITY == "3": SAB_PRIORITY = "High" elif SAB_PRIORITY == "4": SAB_PRIORITY = "Paused" else: SAB_PRIORITY = "Default" USE_NZBGET = bool(check_setting_int(CFG, 'NZBGet', 'use_nzbget', 0)) NZBGET_HOST = check_setting_str(CFG, 'NZBGet', 'nzbget_host', '') NZBGET_PORT = check_setting_str(CFG, 'NZBGet', 'nzbget_port', '') NZBGET_USERNAME = check_setting_str(CFG, 'NZBGet', 'nzbget_username', '') NZBGET_PASSWORD = check_setting_str(CFG, 'NZBGet', 'nzbget_password', '') NZBGET_CATEGORY = check_setting_str(CFG, 'NZBGet', 'nzbget_category', '') NZBGET_PRIORITY = check_setting_str(CFG, 'NZBGet', 'nzbget_priority', '') NZBSU = bool(check_setting_int(CFG, 'NZBsu', 'nzbsu', 0)) NZBSU_APIKEY = check_setting_str(CFG, 'NZBsu', 'nzbsu_apikey', '') DOGNZB = bool(check_setting_int(CFG, 'DOGnzb', 'dognzb', 0)) DOGNZB_APIKEY = check_setting_str(CFG, 'DOGnzb', 'dognzb_apikey', '') NZBX = bool(check_setting_int(CFG, 'nzbx', 'nzbx', 0)) RAW = bool(check_setting_int(CFG, 'Raw', 'raw', 0)) RAW_PROVIDER = check_setting_str(CFG, 'Raw', 'raw_provider', '') RAW_USERNAME = check_setting_str(CFG, 'Raw', 'raw_username', '') RAW_PASSWORD = check_setting_str(CFG, 'Raw', 'raw_password', '') RAW_GROUPS = check_setting_str(CFG, 'Raw', 'raw_groups', '') EXPERIMENTAL = bool(check_setting_int(CFG, 'Experimental', 'experimental', 0)) NEWZNAB = bool(check_setting_int(CFG, 'Newznab', 'newznab', 0)) if CONFIG_VERSION: NEWZNAB_HOST = check_setting_str(CFG, 'Newznab', 'newznab_host', '') NEWZNAB_APIKEY = check_setting_str(CFG, 'Newznab', 'newznab_apikey', '') NEWZNAB_ENABLED = bool(check_setting_int(CFG, 'Newznab', 'newznab_enabled', 1)) # Need to pack the extra newznabs back into a list of tuples flattened_newznabs = check_setting_str(CFG, 'Newznab', 'extra_newznabs', [], log=False) EXTRA_NEWZNABS = list(itertools.izip(*[itertools.islice(flattened_newznabs, i, None, 3) for i in range(3)])) #to counteract the loss of the 1st newznab entry because of a switch, let's rewrite to the tuple if NEWZNAB_HOST and CONFIG_VERSION: EXTRA_NEWZNABS.append((NEWZNAB_HOST, NEWZNAB_APIKEY, int(NEWZNAB_ENABLED))) # Need to rewrite config here and bump up config version CONFIG_VERSION = '3' config_write() # update folder formats in the config & bump up config version if CONFIG_VERSION == '0': from mylar.helpers import replace_all file_values = { 'issue': 'Issue', 'title': 'Title', 'series' : 'Series', 'year' : 'Year' } folder_values = { 'series' : 'Series', 'publisher':'Publisher', 'year' : 'Year', 'first' : 'First', 'lowerfirst' : 'first' } FILE_FORMAT = replace_all(FILE_FORMAT, file_values) FOLDER_FORMAT = replace_all(FOLDER_FORMAT, folder_values) CONFIG_VERSION = '1' if CONFIG_VERSION == '1': from mylar.helpers import replace_all file_values = { 'Issue': '$Issue', 'Title': '$Title', 'Series': '$Series', 'Year': '$Year', 'title': '$title', 'series': '$series', 'year': '$year' } folder_values = { 'Series': '$Series', 'Publisher': '$Publisher', 'Year': '$Year', 'First': '$First', 'series': '$series', 'publisher': '$publisher', 'year': '$year', 'first': '$first' } FILE_FORMAT = replace_all(FILE_FORMAT, file_values) FOLDER_FORMAT = replace_all(FOLDER_FORMAT, folder_values) CONFIG_VERSION = '2' if 'http://' not in SAB_HOST[:7] and 'https://' not in SAB_HOST[:8]: SAB_HOST = 'http://' + SAB_HOST #print ("SAB_HOST:" + SAB_HOST) if not LOG_DIR: LOG_DIR = os.path.join(DATA_DIR, 'logs') if not os.path.exists(LOG_DIR): try: os.makedirs(LOG_DIR) except OSError: if VERBOSE: print 'Unable to create the log directory. Logging to screen only.' # Start the logger, silence console logging if we need to logger.mylar_log.initLogger(verbose=VERBOSE) # Put the cache dir in the data dir for now if not CACHE_DIR: CACHE_DIR = os.path.join(str(DATA_DIR), 'cache') #logger.info("cache set to : " + str(CACHE_DIR)) if not os.path.exists(CACHE_DIR): try: os.makedirs(CACHE_DIR) except OSError: logger.error('Could not create cache dir. Check permissions of datadir: ' + DATA_DIR) # Sanity check for search interval. Set it to at least 6 hours if SEARCH_INTERVAL < 360: logger.info("Search interval too low. Resetting to 6 hour minimum") SEARCH_INTERVAL = 360 # Initialize the database logger.info('Checking to see if the database has all tables....') try: dbcheck() except Exception, e: logger.error("Can't connect to the database: %s" % e) # With the addition of NZBGet, it's possible that both SAB and NZBget are unchecked initially. # let's force default SAB. if USE_NZBGET == 0 and USE_SABNZBD == 0 : logger.info("No Download Server option given - defaulting to SABnzbd.") USE_SABNZBD = 1 # Get the currently installed version - returns None, 'win32' or the git hash # Also sets INSTALL_TYPE variable to 'win', 'git' or 'source' CURRENT_VERSION = versioncheck.getVersion() if CURRENT_VERSION is not None: hash = CURRENT_VERSION[:7] else: hash = "unknown" if version.MYLAR_VERSION == 'master': vers = 'M' else: vers = 'D' USER_AGENT = 'Mylar/'+str(hash)+'('+vers+') +http://www.github.com/evilhero/mylar/' # Check for new versions if CHECK_GITHUB_ON_STARTUP: try: LATEST_VERSION = versioncheck.checkGithub() except: LATEST_VERSION = CURRENT_VERSION else: LATEST_VERSION = CURRENT_VERSION #check for syno_fix here if SYNO_FIX: parsepath = os.path.join(DATA_DIR, 'bs4', 'builder', '_lxml.py') if os.path.isfile(parsepath): print ("found bs4...renaming appropriate file.") src = os.path.join(parsepath) dst = os.path.join(DATA_DIR, 'bs4', 'builder', 'lxml.py') try: shutil.move(src, dst) except (OSError, IOError): logger.error("Unable to rename file...shutdown Mylar and go to " + src.encode('utf-8') + " and rename the _lxml.py file to lxml.py") logger.error("NOT doing this will result in errors when adding / refreshing a series") else: logger.info("Synology Parsing Fix already implemented. No changes required at this time.") #CV sometimes points to the incorrect DNS - here's the fix. if CVAPIFIX == 1: CVURL = 'http://beta.comicvine.com/api/' logger.info("CVAPIFIX enabled: ComicVine set to beta API site") else: CVURL = 'http://api.comicvine.com/' logger.info("CVAPIFIX disabled: Comicvine set to normal API site") if LOCMOVE: helpers.updateComicLocation() #Ordering comics here logger.info("Remapping the sorting to allow for new additions.") COMICSORT = helpers.ComicSort(sequence='startup') __INITIALIZED__ = True return True
def initialize(): with INIT_LOCK: global __INITIALIZED__, FULL_PATH, PROG_DIR, VERBOSE, DAEMON, DATA_DIR, CONFIG_FILE, CFG, CONFIG_VERSION, LOG_DIR, CACHE_DIR, LOGVERBOSE, HTTP_PORT, HTTP_HOST, HTTP_USERNAME, HTTP_PASSWORD, HTTP_ROOT, LAUNCH_BROWSER, GIT_PATH, CURRENT_VERSION, LATEST_VERSION, CHECK_GITHUB, CHECK_GITHUB_ON_STARTUP, CHECK_GITHUB_INTERVAL, MUSIC_DIR, DESTINATION_DIR, DOWNLOAD_DIR, USENET_RETENTION, SEARCH_INTERVAL, INTERFACE, AUTOWANT_ALL, AUTOWANT_UPCOMING, ZERO_LEVEL, ZERO_LEVEL_N, COMIC_COVER_LOCAL, LIBRARYSCAN_INTERVAL, DOWNLOAD_SCAN_INTERVAL, SAB_HOST, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_PRIORITY, BLACKHOLE, BLACKHOLE_DIR, NZBSU, NZBSU_APIKEY, DOGNZB, DOGNZB_APIKEY, NZBX, NEWZNAB, NEWZNAB_HOST, NEWZNAB_APIKEY, NEWZNAB_ENABLED, EXTRA_NEWZNABS, RAW, RAW_PROVIDER, RAW_USERNAME, RAW_PASSWORD, RAW_GROUPS, EXPERIMENTAL, PREFERRED_QUALITY, MOVE_FILES, RENAME_FILES, USE_MINSIZE, MINSIZE, USE_MAXSIZE, MAXSIZE, CORRECT_METADATA, FOLDER_FORMAT, FILE_FORMAT, REPLACE_CHAR, REPLACE_SPACES, COMIC_LOCATION, QUAL_ALTVERS, QUAL_SCANNER, QUAL_TYPE, QUAL_QUALITY, ENABLE_EXTRA_SCRIPTS, EXTRA_SCRIPTS, ENABLE_PRE_SCRIPTS, PRE_SCRIPTS if __INITIALIZED__: return False # Make sure all the config sections exist CheckSection("General") CheckSection("SABnzbd") CheckSection("NZBsu") CheckSection("DOGnzb") CheckSection("Raw") CheckSection("Experimental") CheckSection("Newznab") # Set global variables based on config file or use defaults try: HTTP_PORT = check_setting_int(CFG, "General", "http_port", 8090) except: HTTP_PORT = 8090 if HTTP_PORT < 21 or HTTP_PORT > 65535: HTTP_PORT = 8090 # CONFIG_VERSION = check_setting_str(CFG, 'General', 'config_version', '') HTTP_HOST = check_setting_str(CFG, "General", "http_host", "0.0.0.0") HTTP_USERNAME = check_setting_str(CFG, "General", "http_username", "") HTTP_PASSWORD = check_setting_str(CFG, "General", "http_password", "") HTTP_ROOT = check_setting_str(CFG, "General", "http_root", "/") LAUNCH_BROWSER = bool(check_setting_int(CFG, "General", "launch_browser", 1)) LOGVERBOSE = bool(check_setting_int(CFG, "General", "logverbose", 1)) GIT_PATH = check_setting_str(CFG, "General", "git_path", "") LOG_DIR = check_setting_str(CFG, "General", "log_dir", "") CHECK_GITHUB = bool(check_setting_int(CFG, "General", "check_github", 1)) CHECK_GITHUB_ON_STARTUP = bool(check_setting_int(CFG, "General", "check_github_on_startup", 1)) CHECK_GITHUB_INTERVAL = check_setting_int(CFG, "General", "check_github_interval", 360) DESTINATION_DIR = check_setting_str(CFG, "General", "destination_dir", "") USENET_RETENTION = check_setting_int(CFG, "General", "usenet_retention", "1500") SEARCH_INTERVAL = check_setting_int(CFG, "General", "search_interval", 360) LIBRARYSCAN_INTERVAL = check_setting_int(CFG, "General", "libraryscan_interval", 300) DOWNLOAD_SCAN_INTERVAL = check_setting_int(CFG, "General", "download_scan_interval", 5) INTERFACE = check_setting_str(CFG, "General", "interface", "default") AUTOWANT_ALL = bool(check_setting_int(CFG, "General", "autowant_all", 0)) AUTOWANT_UPCOMING = bool(check_setting_int(CFG, "General", "autowant_upcoming", 1)) COMIC_COVER_LOCAL = bool(check_setting_int(CFG, "General", "comic_cover_local", 0)) PREFERRED_QUALITY = check_setting_int(CFG, "General", "preferred_quality", 0) CORRECT_METADATA = bool(check_setting_int(CFG, "General", "correct_metadata", 0)) MOVE_FILES = bool(check_setting_int(CFG, "General", "move_files", 0)) RENAME_FILES = bool(check_setting_int(CFG, "General", "rename_files", 0)) FOLDER_FORMAT = check_setting_str(CFG, "General", "folder_format", "$Series-($Year)") FILE_FORMAT = check_setting_str(CFG, "General", "file_format", "$Series $Issue ($Year)") BLACKHOLE = bool(check_setting_int(CFG, "General", "blackhole", 0)) BLACKHOLE_DIR = check_setting_str(CFG, "General", "blackhole_dir", "") REPLACE_SPACES = bool(check_setting_int(CFG, "General", "replace_spaces", 0)) REPLACE_CHAR = check_setting_str(CFG, "General", "replace_char", "") ZERO_LEVEL = bool(check_setting_int(CFG, "General", "zero_level", 0)) ZERO_LEVEL_N = check_setting_str(CFG, "General", "zero_level_n", "") USE_MINSIZE = bool(check_setting_int(CFG, "General", "use_minsize", 0)) MINSIZE = check_setting_str(CFG, "General", "minsize", "") USE_MAXSIZE = bool(check_setting_int(CFG, "General", "use_maxsize", 0)) MAXSIZE = check_setting_str(CFG, "General", "maxsize", "") ENABLE_EXTRA_SCRIPTS = bool(check_setting_int(CFG, "General", "enable_extra_scripts", 0)) EXTRA_SCRIPTS = check_setting_str(CFG, "General", "extra_scripts", "") ENABLE_PRE_SCRIPTS = bool(check_setting_int(CFG, "General", "enable_pre_scripts", 0)) PRE_SCRIPTS = check_setting_str(CFG, "General", "pre_scripts", "") SAB_HOST = check_setting_str(CFG, "SABnzbd", "sab_host", "") 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", "") SAB_PRIORITY = check_setting_str(CFG, "SABnzbd", "sab_priority", "") if SAB_PRIORITY.isdigit(): if SAB_PRIORITY == "0": SAB_PRIORITY = "Default" elif SAB_PRIORITY == "1": SAB_PRIORITY = "Low" elif SAB_PRIORITY == "2": SAB_PRIORITY = "Normal" elif SAB_PRIORITY == "3": SAB_PRIORITY = "High" elif SAB_PRIORITY == "4": SAB_PRIORITY = "Paused" else: SAB_PRIORITY = "Default" NZBSU = bool(check_setting_int(CFG, "NZBsu", "nzbsu", 0)) NZBSU_APIKEY = check_setting_str(CFG, "NZBsu", "nzbsu_apikey", "") DOGNZB = bool(check_setting_int(CFG, "DOGnzb", "dognzb", 0)) DOGNZB_APIKEY = check_setting_str(CFG, "DOGnzb", "dognzb_apikey", "") NZBX = bool(check_setting_int(CFG, "nzbx", "nzbx", 0)) RAW = bool(check_setting_int(CFG, "Raw", "raw", 0)) RAW_PROVIDER = check_setting_str(CFG, "Raw", "raw_provider", "") RAW_USERNAME = check_setting_str(CFG, "Raw", "raw_username", "") RAW_PASSWORD = check_setting_str(CFG, "Raw", "raw_password", "") RAW_GROUPS = check_setting_str(CFG, "Raw", "raw_groups", "") EXPERIMENTAL = bool(check_setting_int(CFG, "Experimental", "experimental", 0)) NEWZNAB = bool(check_setting_int(CFG, "Newznab", "newznab", 0)) NEWZNAB_HOST = check_setting_str(CFG, "Newznab", "newznab_host", "") NEWZNAB_APIKEY = check_setting_str(CFG, "Newznab", "newznab_apikey", "") NEWZNAB_ENABLED = bool(check_setting_int(CFG, "Newznab", "newznab_enabled", 1)) # Need to pack the extra newznabs back into a list of tuples flattened_newznabs = check_setting_str(CFG, "Newznab", "extra_newznabs", [], log=False) EXTRA_NEWZNABS = list(itertools.izip(*[itertools.islice(flattened_newznabs, i, None, 3) for i in range(3)])) # update folder formats in the config & bump up config version if CONFIG_VERSION == "0": from mylar.helpers import replace_all file_values = {"issue": "Issue", "title": "Title", "series": "Series", "year": "Year"} folder_values = { "series": "Series", "publisher": "Publisher", "year": "Year", "first": "First", "lowerfirst": "first", } FILE_FORMAT = replace_all(FILE_FORMAT, file_values) FOLDER_FORMAT = replace_all(FOLDER_FORMAT, folder_values) CONFIG_VERSION = "1" if CONFIG_VERSION == "1": from mylar.helpers import replace_all file_values = { "Issue": "$Issue", "Title": "$Title", "Series": "$Series", "Year": "$Year", "title": "$title", "series": "$series", "year": "$year", } folder_values = { "Series": "$Series", "Publisher": "$Publisher", "Year": "$Year", "First": "$First", "series": "$series", "publisher": "$publisher", "year": "$year", "first": "$first", } FILE_FORMAT = replace_all(FILE_FORMAT, file_values) FOLDER_FORMAT = replace_all(FOLDER_FORMAT, folder_values) CONFIG_VERSION = "2" if "http://" not in SAB_HOST[:7] and "https://" not in SAB_HOST[:8]: SAB_HOST = "http://" + SAB_HOST # print ("SAB_HOST:" + SAB_HOST) if not LOG_DIR: LOG_DIR = os.path.join(DATA_DIR, "logs") if not os.path.exists(LOG_DIR): try: os.makedirs(LOG_DIR) except OSError: if VERBOSE: print "Unable to create the log directory. Logging to screen only." # Start the logger, silence console logging if we need to logger.mylar_log.initLogger(verbose=VERBOSE) # Put the cache dir in the data dir for now CACHE_DIR = os.path.join(DATA_DIR, "cache") if not os.path.exists(CACHE_DIR): try: os.makedirs(CACHE_DIR) except OSError: logger.error("Could not create cache dir. Check permissions of datadir: " + DATA_DIR) # Sanity check for search interval. Set it to at least 6 hours if SEARCH_INTERVAL < 360: logger.info("Search interval too low. Resetting to 6 hour minimum") SEARCH_INTERVAL = 360 # Initialize the database logger.info("Checking to see if the database has all tables....") try: dbcheck() except Exception, e: logger.error("Can't connect to the database: %s" % e) # Get the currently installed version - returns None, 'win32' or the git hash # Also sets INSTALL_TYPE variable to 'win', 'git' or 'source' CURRENT_VERSION = versioncheck.getVersion() # Check for new versions if CHECK_GITHUB_ON_STARTUP: try: LATEST_VERSION = versioncheck.checkGithub() except: LATEST_VERSION = CURRENT_VERSION else: LATEST_VERSION = CURRENT_VERSION __INITIALIZED__ = True return True
def initialize(): with INIT_LOCK: global __INITIALIZED__, FULL_PATH, PROG_DIR, VERBOSE, DAEMON, DATA_DIR, CONFIG_FILE, CFG, CONFIG_VERSION, LOG_DIR, CACHE_DIR, LOGVERBOSE, \ HTTP_PORT, HTTP_HOST, HTTP_USERNAME, HTTP_PASSWORD, HTTP_ROOT, LAUNCH_BROWSER, GIT_PATH, \ CURRENT_VERSION, LATEST_VERSION, CHECK_GITHUB, CHECK_GITHUB_ON_STARTUP, CHECK_GITHUB_INTERVAL, USER_AGENT, MUSIC_DIR, DESTINATION_DIR, \ DOWNLOAD_DIR, USENET_RETENTION, SEARCH_INTERVAL, NZB_STARTUP_SEARCH, INTERFACE, AUTOWANT_ALL, AUTOWANT_UPCOMING, ZERO_LEVEL, ZERO_LEVEL_N, COMIC_COVER_LOCAL, \ LIBRARYSCAN, LIBRARYSCAN_INTERVAL, DOWNLOAD_SCAN_INTERVAL, USE_SABNZBD, SAB_HOST, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, SAB_PRIORITY, SAB_DIRECTORY, BLACKHOLE, BLACKHOLE_DIR, ADD_COMICS, COMIC_DIR, IMP_MOVE, IMP_RENAME, IMP_METADATA, \ USE_NZBGET, NZBGET_HOST, NZBGET_PORT, NZBGET_USERNAME, NZBGET_PASSWORD, NZBGET_CATEGORY, NZBGET_PRIORITY, NZBSU, NZBSU_APIKEY, DOGNZB, DOGNZB_APIKEY, NZBX,\ NEWZNAB, NEWZNAB_HOST, NEWZNAB_APIKEY, NEWZNAB_ENABLED, EXTRA_NEWZNABS,\ RAW, RAW_PROVIDER, RAW_USERNAME, RAW_PASSWORD, RAW_GROUPS, EXPERIMENTAL, \ PROWL_ENABLED, PROWL_PRIORITY, PROWL_KEYS, PROWL_ONSNATCH, NMA_ENABLED, NMA_APIKEY, NMA_PRIORITY, NMA_ONSNATCH, \ PREFERRED_QUALITY, MOVE_FILES, RENAME_FILES, LOWERCASE_FILENAMES, USE_MINSIZE, MINSIZE, USE_MAXSIZE, MAXSIZE, CORRECT_METADATA, FOLDER_FORMAT, FILE_FORMAT, REPLACE_CHAR, REPLACE_SPACES, ADD_TO_CSV, CVINFO, LOG_LEVEL, POST_PROCESSING, \ COMIC_LOCATION, QUAL_ALTVERS, QUAL_SCANNER, QUAL_TYPE, QUAL_QUALITY, ENABLE_EXTRA_SCRIPTS, EXTRA_SCRIPTS, ENABLE_PRE_SCRIPTS, PRE_SCRIPTS, PULLNEW, COUNT_ISSUES, COUNT_HAVES, COUNT_COMICS if __INITIALIZED__: return False # Make sure all the config sections exist CheckSection('General') CheckSection('SABnzbd') CheckSection('NZBGet') CheckSection('NZBsu') CheckSection('DOGnzb') CheckSection('Raw') CheckSection('Experimental') CheckSection('Newznab') # Set global variables based on config file or use defaults try: HTTP_PORT = check_setting_int(CFG, 'General', 'http_port', 8090) except: HTTP_PORT = 8090 if HTTP_PORT < 21 or HTTP_PORT > 65535: HTTP_PORT = 8090 # CONFIG_VERSION = check_setting_str(CFG, 'General', 'config_version', '') HTTP_HOST = check_setting_str(CFG, 'General', 'http_host', '0.0.0.0') HTTP_USERNAME = check_setting_str(CFG, 'General', 'http_username', '') HTTP_PASSWORD = check_setting_str(CFG, 'General', 'http_password', '') HTTP_ROOT = check_setting_str(CFG, 'General', 'http_root', '/') LAUNCH_BROWSER = bool(check_setting_int(CFG, 'General', 'launch_browser', 1)) LOGVERBOSE = bool(check_setting_int(CFG, 'General', 'logverbose', 1)) GIT_PATH = check_setting_str(CFG, 'General', 'git_path', '') LOG_DIR = check_setting_str(CFG, 'General', 'log_dir', '') if not CACHE_DIR: CACHE_DIR = check_setting_str(CFG, 'General', 'cache_dir', '') CHECK_GITHUB = bool(check_setting_int(CFG, 'General', 'check_github', 1)) CHECK_GITHUB_ON_STARTUP = bool(check_setting_int(CFG, 'General', 'check_github_on_startup', 1)) CHECK_GITHUB_INTERVAL = check_setting_int(CFG, 'General', 'check_github_interval', 360) DESTINATION_DIR = check_setting_str(CFG, 'General', 'destination_dir', '') USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', '1500') SEARCH_INTERVAL = check_setting_int(CFG, 'General', 'search_interval', 360) NZB_STARTUP_SEARCH = bool(check_setting_int(CFG, 'General', 'nzb_startup_search', 0)) LIBRARYSCAN = bool(check_setting_int(CFG, 'General', 'libraryscan', 1)) LIBRARYSCAN_INTERVAL = check_setting_int(CFG, 'General', 'libraryscan_interval', 300) ADD_COMICS = bool(check_setting_int(CFG, 'General', 'add_comics', 0)) COMIC_DIR = check_setting_str(CFG, 'General', 'comic_dir', '') IMP_MOVE = bool(check_setting_int(CFG, 'General', 'imp_move', 0)) IMP_RENAME = bool(check_setting_int(CFG, 'General', 'imp_rename', 0)) IMP_METADATA = bool(check_setting_int(CFG, 'General', 'imp_metadata', 0)) DOWNLOAD_SCAN_INTERVAL = check_setting_int(CFG, 'General', 'download_scan_interval', 5) INTERFACE = check_setting_str(CFG, 'General', 'interface', 'default') AUTOWANT_ALL = bool(check_setting_int(CFG, 'General', 'autowant_all', 0)) AUTOWANT_UPCOMING = bool(check_setting_int(CFG, 'General', 'autowant_upcoming', 1)) COMIC_COVER_LOCAL = bool(check_setting_int(CFG, 'General', 'comic_cover_local', 0)) PREFERRED_QUALITY = bool(check_setting_int(CFG, 'General', 'preferred_quality', 0)) CORRECT_METADATA = bool(check_setting_int(CFG, 'General', 'correct_metadata', 0)) MOVE_FILES = bool(check_setting_int(CFG, 'General', 'move_files', 0)) RENAME_FILES = bool(check_setting_int(CFG, 'General', 'rename_files', 0)) FOLDER_FORMAT = check_setting_str(CFG, 'General', 'folder_format', '$Series-($Year)') FILE_FORMAT = check_setting_str(CFG, 'General', 'file_format', '$Series $Issue ($Year)') BLACKHOLE = bool(check_setting_int(CFG, 'General', 'blackhole', 0)) BLACKHOLE_DIR = check_setting_str(CFG, 'General', 'blackhole_dir', '') REPLACE_SPACES = bool(check_setting_int(CFG, 'General', 'replace_spaces', 0)) REPLACE_CHAR = check_setting_str(CFG, 'General', 'replace_char', '') ZERO_LEVEL = bool(check_setting_int(CFG, 'General', 'zero_level', 0)) ZERO_LEVEL_N = check_setting_str(CFG, 'General', 'zero_level_n', '') LOWERCASE_FILENAMES = bool(check_setting_int(CFG, 'General', 'lowercase_filenames', 0)) PROWL_ENABLED = bool(check_setting_int(CFG, 'Prowl', 'prowl_enabled', 0)) PROWL_KEYS = check_setting_str(CFG, 'Prowl', 'prowl_keys', '') PROWL_ONSNATCH = bool(check_setting_int(CFG, 'Prowl', 'prowl_onsnatch', 0)) PROWL_PRIORITY = check_setting_int(CFG, 'Prowl', 'prowl_priority', 0) NMA_ENABLED = bool(check_setting_int(CFG, 'NMA', 'nma_enabled', 0)) NMA_APIKEY = check_setting_str(CFG, 'NMA', 'nma_apikey', '') NMA_PRIORITY = check_setting_int(CFG, 'NMA', 'nma_priority', 0) NMA_ONSNATCH = bool(check_setting_int(CFG, 'NMA', 'nma_onsnatch', 0)) USE_MINSIZE = bool(check_setting_int(CFG, 'General', 'use_minsize', 0)) MINSIZE = check_setting_str(CFG, 'General', 'minsize', '') USE_MAXSIZE = bool(check_setting_int(CFG, 'General', 'use_maxsize', 0)) MAXSIZE = check_setting_str(CFG, 'General', 'maxsize', '') ADD_TO_CSV = bool(check_setting_int(CFG, 'General', 'add_to_csv', 1)) CVINFO = bool(check_setting_int(CFG, 'General', 'cvinfo', 0)) LOG_LEVEL = check_setting_str(CFG, 'General', 'log_level', '') ENABLE_EXTRA_SCRIPTS = bool(check_setting_int(CFG, 'General', 'enable_extra_scripts', 0)) EXTRA_SCRIPTS = check_setting_str(CFG, 'General', 'extra_scripts', '') ENABLE_PRE_SCRIPTS = bool(check_setting_int(CFG, 'General', 'enable_pre_scripts', 0)) PRE_SCRIPTS = check_setting_str(CFG, 'General', 'pre_scripts', '') POST_PROCESSING = bool(check_setting_int(CFG, 'General', 'post_processing', 1)) USE_SABNZBD = bool(check_setting_int(CFG, 'SABnzbd', 'use_sabnzbd', 0)) SAB_HOST = check_setting_str(CFG, 'SABnzbd', 'sab_host', '') 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', '') SAB_DIRECTORY = check_setting_str(CFG, 'SABnzbd', 'sab_directory', '') SAB_PRIORITY = check_setting_str(CFG, 'SABnzbd', 'sab_priority', '') if SAB_PRIORITY.isdigit(): if SAB_PRIORITY == "0": SAB_PRIORITY = "Default" elif SAB_PRIORITY == "1": SAB_PRIORITY = "Low" elif SAB_PRIORITY == "2": SAB_PRIORITY = "Normal" elif SAB_PRIORITY == "3": SAB_PRIORITY = "High" elif SAB_PRIORITY == "4": SAB_PRIORITY = "Paused" else: SAB_PRIORITY = "Default" USE_NZBGET = bool(check_setting_int(CFG, 'NZBGet', 'use_nzbget', 0)) NZBGET_HOST = check_setting_str(CFG, 'NZBGet', 'nzbget_host', '') NZBGET_PORT = check_setting_str(CFG, 'NZBGet', 'nzbget_port', '') NZBGET_USERNAME = check_setting_str(CFG, 'NZBGet', 'nzbget_username', '') NZBGET_PASSWORD = check_setting_str(CFG, 'NZBGet', 'nzbget_password', '') NZBGET_CATEGORY = check_setting_str(CFG, 'NZBGet', 'nzbget_category', '') NZBGET_PRIORITY = check_setting_str(CFG, 'NZBGet', 'nzbget_priority', '') NZBSU = bool(check_setting_int(CFG, 'NZBsu', 'nzbsu', 0)) NZBSU_APIKEY = check_setting_str(CFG, 'NZBsu', 'nzbsu_apikey', '') DOGNZB = bool(check_setting_int(CFG, 'DOGnzb', 'dognzb', 0)) DOGNZB_APIKEY = check_setting_str(CFG, 'DOGnzb', 'dognzb_apikey', '') NZBX = bool(check_setting_int(CFG, 'nzbx', 'nzbx', 0)) RAW = bool(check_setting_int(CFG, 'Raw', 'raw', 0)) RAW_PROVIDER = check_setting_str(CFG, 'Raw', 'raw_provider', '') RAW_USERNAME = check_setting_str(CFG, 'Raw', 'raw_username', '') RAW_PASSWORD = check_setting_str(CFG, 'Raw', 'raw_password', '') RAW_GROUPS = check_setting_str(CFG, 'Raw', 'raw_groups', '') EXPERIMENTAL = bool(check_setting_int(CFG, 'Experimental', 'experimental', 0)) NEWZNAB = bool(check_setting_int(CFG, 'Newznab', 'newznab', 0)) NEWZNAB_HOST = check_setting_str(CFG, 'Newznab', 'newznab_host', '') NEWZNAB_APIKEY = check_setting_str(CFG, 'Newznab', 'newznab_apikey', '') NEWZNAB_ENABLED = bool(check_setting_int(CFG, 'Newznab', 'newznab_enabled', 1)) # Need to pack the extra newznabs back into a list of tuples flattened_newznabs = check_setting_str(CFG, 'Newznab', 'extra_newznabs', [], log=False) EXTRA_NEWZNABS = list(itertools.izip(*[itertools.islice(flattened_newznabs, i, None, 3) for i in range(3)])) # update folder formats in the config & bump up config version if CONFIG_VERSION == '0': from mylar.helpers import replace_all file_values = { 'issue': 'Issue', 'title': 'Title', 'series' : 'Series', 'year' : 'Year' } folder_values = { 'series' : 'Series', 'publisher':'Publisher', 'year' : 'Year', 'first' : 'First', 'lowerfirst' : 'first' } FILE_FORMAT = replace_all(FILE_FORMAT, file_values) FOLDER_FORMAT = replace_all(FOLDER_FORMAT, folder_values) CONFIG_VERSION = '1' if CONFIG_VERSION == '1': from mylar.helpers import replace_all file_values = { 'Issue': '$Issue', 'Title': '$Title', 'Series': '$Series', 'Year': '$Year', 'title': '$title', 'series': '$series', 'year': '$year' } folder_values = { 'Series': '$Series', 'Publisher': '$Publisher', 'Year': '$Year', 'First': '$First', 'series': '$series', 'publisher': '$publisher', 'year': '$year', 'first': '$first' } FILE_FORMAT = replace_all(FILE_FORMAT, file_values) FOLDER_FORMAT = replace_all(FOLDER_FORMAT, folder_values) CONFIG_VERSION = '2' if 'http://' not in SAB_HOST[:7] and 'https://' not in SAB_HOST[:8]: SAB_HOST = 'http://' + SAB_HOST #print ("SAB_HOST:" + SAB_HOST) if not LOG_DIR: LOG_DIR = os.path.join(DATA_DIR, 'logs') if not os.path.exists(LOG_DIR): try: os.makedirs(LOG_DIR) except OSError: if VERBOSE: print 'Unable to create the log directory. Logging to screen only.' # Start the logger, silence console logging if we need to logger.mylar_log.initLogger(verbose=VERBOSE) # Put the cache dir in the data dir for now if not CACHE_DIR: CACHE_DIR = os.path.join(str(DATA_DIR), 'cache') logger.info("cache set to : " + str(CACHE_DIR)) if not os.path.exists(CACHE_DIR): try: os.makedirs(CACHE_DIR) except OSError: logger.error('Could not create cache dir. Check permissions of datadir: ' + DATA_DIR) # Sanity check for search interval. Set it to at least 6 hours if SEARCH_INTERVAL < 360: logger.info("Search interval too low. Resetting to 6 hour minimum") SEARCH_INTERVAL = 360 # Initialize the database logger.info('Checking to see if the database has all tables....') try: dbcheck() except Exception, e: logger.error("Can't connect to the database: %s" % e) # Get the currently installed version - returns None, 'win32' or the git hash # Also sets INSTALL_TYPE variable to 'win', 'git' or 'source' CURRENT_VERSION = versioncheck.getVersion() if CURRENT_VERSION is not None: hash = CURRENT_VERSION[:7] else: hash = "unknown" if version.MYLAR_VERSION == 'master': vers = 'M' else: vers = 'D' USER_AGENT = 'Mylar/'+str(hash)+'('+vers+') +http://www.github.com/evilhero/mylar/' # Check for new versions if CHECK_GITHUB_ON_STARTUP: try: LATEST_VERSION = versioncheck.checkGithub() except: LATEST_VERSION = CURRENT_VERSION else: LATEST_VERSION = CURRENT_VERSION __INITIALIZED__ = True return True
def initialize(config_file): with INIT_LOCK: global CONFIG, _INITIALIZED, QUIET, CONFIG_FILE, CURRENT_VERSION, LATEST_VERSION, COMMITS_BEHIND, INSTALL_TYPE, IMPORTLOCK, PULLBYFILE, INKDROPS_32P, \ DONATEBUTTON, CURRENT_WEEKNUMBER, CURRENT_YEAR, UMASK, USER_AGENT, SNATCHED_QUEUE, NZB_QUEUE, PULLNEW, COMICSORT, WANTED_TAB_OFF, CV_HEADERS, \ IMPORTBUTTON, IMPORT_FILES, IMPORT_TOTALFILES, IMPORT_CID_COUNT, IMPORT_PARSED_COUNT, IMPORT_FAILURE_COUNT, CHECKENABLED, CVURL, DEMURL, WWTURL, TPSEURL, \ USE_SABNZBD, USE_NZBGET, USE_BLACKHOLE, USE_RTORRENT, USE_UTORRENT, USE_QBITTORRENT, USE_DELUGE, USE_TRANSMISSION, USE_WATCHDIR, SAB_PARAMS, \ PROG_DIR, DATA_DIR, CMTAGGER_PATH, DOWNLOAD_APIKEY, LOCAL_IP, STATIC_COMICRN_VERSION, STATIC_APC_VERSION, KEYS_32P, AUTHKEY_32P, FEED_32P, FEEDINFO_32P, \ MONITOR_STATUS, SEARCH_STATUS, RSS_STATUS, WEEKLY_STATUS, VERSION_STATUS, UPDATER_STATUS, DBUPDATE_INTERVAL, \ SCHED_RSS_LAST, SCHED_WEEKLY_LAST, SCHED_MONITOR_LAST, SCHED_SEARCH_LAST, SCHED_VERSION_LAST, SCHED_DBUPDATE_LAST cc = mylar.config.Config(config_file) CONFIG = cc.read() assert CONFIG is not None if _INITIALIZED: return False #set up the default values here if they're wrong. #cc.configure() # Start the logger, silence console logging if we need to logger.initLogger(console=not QUIET, log_dir=CONFIG.LOG_DIR, verbose=VERBOSE) #logger.mylar_log.initLogger(verbose=VERBOSE) #try to get the local IP using socket. Get this on every startup so it's at least current for existing session. import socket try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) LOCAL_IP = s.getsockname()[0] s.close() logger.info('Successfully discovered local IP and locking it in as : ' + str(LOCAL_IP)) except: logger.warn('Unable to determine local IP - this might cause problems when downloading (maybe use host_return in the config.ini)') LOCAL_IP = CONFIG.HTTP_HOST # verbatim back the logger being used since it's now started. if LOGTYPE == 'clog': logprog = 'Concurrent Rotational Log Handler' else: logprog = 'Rotational Log Handler (default)' logger.fdebug('Logger set to use : ' + logprog) if LOGTYPE == 'log' and OS_DETECT == 'Windows': logger.fdebug('ConcurrentLogHandler package not installed. Using builtin log handler for Rotational logs (default)') logger.fdebug('[Windows Users] If you are experiencing log file locking and want this auto-enabled, you need to install Python Extensions for Windows ( http://sourceforge.net/projects/pywin32/ )') logger.info('Config GIT Branch: %s' % CONFIG.GIT_BRANCH) # Get the currently installed version - returns None, 'win32' or the git hash # Also sets INSTALL_TYPE variable to 'win', 'git' or 'source' CURRENT_VERSION, CONFIG.GIT_BRANCH = versioncheck.getVersion() #versioncheck.getVersion() #config_write() if CURRENT_VERSION is not None: hash = CURRENT_VERSION[:7] else: hash = "unknown" if CONFIG.GIT_BRANCH == 'master': vers = 'M' elif CONFIG.GIT_BRANCH == 'development': vers = 'D' else: vers = 'NONE' USER_AGENT = 'Mylar/' +str(hash) +'(' +vers +') +http://www.github.com/evilhero/mylar/' CV_HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'} # set the current week for the pull-list todaydate = datetime.datetime.today() CURRENT_WEEKNUMBER = todaydate.strftime("%U") CURRENT_YEAR = todaydate.strftime("%Y") # Initialize the database logger.info('Checking to see if the database has all tables....') try: dbcheck() except Exception, e: logger.error('Cannot connect to the database: %s' % e) # Check for new versions (autoupdate) if CONFIG.CHECK_GITHUB_ON_STARTUP: try: LATEST_VERSION = versioncheck.checkGithub() except: LATEST_VERSION = CURRENT_VERSION else: LATEST_VERSION = CURRENT_VERSION # if CONFIG.AUTO_UPDATE: if CURRENT_VERSION != LATEST_VERSION and INSTALL_TYPE != 'win' and COMMITS_BEHIND > 0: logger.info('Auto-updating has been enabled. Attempting to auto-update.') # SIGNAL = 'update' #check for syno_fix here if CONFIG.SYNO_FIX: parsepath = os.path.join(DATA_DIR, 'bs4', 'builder', '_lxml.py') if os.path.isfile(parsepath): print ("found bs4...renaming appropriate file.") src = os.path.join(parsepath) dst = os.path.join(DATA_DIR, 'bs4', 'builder', 'lxml.py') try: shutil.move(src, dst) except (OSError, IOError): logger.error('Unable to rename file...shutdown Mylar and go to ' + src.encode('utf-8') + ' and rename the _lxml.py file to lxml.py') logger.error('NOT doing this will result in errors when adding / refreshing a series') else: logger.info('Synology Parsing Fix already implemented. No changes required at this time.') #set the default URL for ComicVine API here. CVURL = 'https://comicvine.gamespot.com/api/' #set default URL for Public trackers (just in case it changes more frequently) WWTURL = 'https://worldwidetorrents.me/' DEMURL = 'https://www.demonoid.pw/' TPSEURL = 'https://torrentproject.se/' if CONFIG.LOCMOVE: helpers.updateComicLocation() #Ordering comics here logger.info('Remapping the sorting to allow for new additions.') COMICSORT = helpers.ComicSort(sequence='startup') # Store the original umask UMASK = os.umask(0) os.umask(UMASK) _INITIALIZED = True return True