SABnzbd-Suite: rework: a failed part of suite should NEVER block another part.

This commit is contained in:
Stefan Saraev 2012-06-21 12:36:06 +03:00
parent 8dfbdba67b
commit ba695d3da3

View File

@ -182,270 +182,290 @@ except:
signal.signal(signal.SIGCHLD, signal.SIG_DFL)
os.environ['PYTHONPATH'] = str(os.environ.get('PYTHONPATH')) + ':' + pPylib
# write SABnzbd settings
# ----------------------
# SABnzbd start
try:
# write SABnzbd settings
# ----------------------
sabNzbdConfig = ConfigObj(pSabNzbdSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['misc'] = {}
defaultConfig['misc']['disable_api_key'] = '0'
defaultConfig['misc']['check_new_rel'] = '0'
defaultConfig['misc']['auto_browser'] = '0'
defaultConfig['misc']['username'] = user
defaultConfig['misc']['password'] = pwd
defaultConfig['misc']['port'] = '8081'
defaultConfig['misc']['https_port'] = '9081'
defaultConfig['misc']['https_cert'] = 'server.cert'
defaultConfig['misc']['https_key'] = 'server.key'
defaultConfig['misc']['host'] = host
defaultConfig['misc']['web_dir'] = 'Plush'
defaultConfig['misc']['web_dir2'] = 'Plush'
defaultConfig['misc']['web_color'] = 'gold'
defaultConfig['misc']['web_color2'] = 'gold'
defaultConfig['misc']['log_dir'] = 'logs'
defaultConfig['misc']['admin_dir'] = 'admin'
defaultConfig['misc']['nzb_backup_dir'] = 'backup'
defaultConfig['misc']['script_dir'] = 'scripts'
sabNzbdConfig = ConfigObj(pSabNzbdSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['misc'] = {}
defaultConfig['misc']['disable_api_key'] = '0'
defaultConfig['misc']['check_new_rel'] = '0'
defaultConfig['misc']['auto_browser'] = '0'
defaultConfig['misc']['username'] = user
defaultConfig['misc']['password'] = pwd
defaultConfig['misc']['port'] = '8081'
defaultConfig['misc']['https_port'] = '9081'
defaultConfig['misc']['https_cert'] = 'server.cert'
defaultConfig['misc']['https_key'] = 'server.key'
defaultConfig['misc']['host'] = host
defaultConfig['misc']['web_dir'] = 'Plush'
defaultConfig['misc']['web_dir2'] = 'Plush'
defaultConfig['misc']['web_color'] = 'gold'
defaultConfig['misc']['web_color2'] = 'gold'
defaultConfig['misc']['log_dir'] = 'logs'
defaultConfig['misc']['admin_dir'] = 'admin'
defaultConfig['misc']['nzb_backup_dir'] = 'backup'
defaultConfig['misc']['script_dir'] = 'scripts'
if firstLaunch:
defaultConfig['misc']['download_dir'] = pSabNzbdIncomplete
defaultConfig['misc']['complete_dir'] = pSabNzbdComplete
servers = {}
servers['localhost'] = {}
servers['localhost']['host'] = 'localhost'
servers['localhost']['port'] = '119'
servers['localhost']['enable'] = '0'
categories = {}
categories['tv'] = {}
categories['tv']['name'] = 'tv'
categories['tv']['script'] = 'sabToSickBeard.py'
categories['tv']['priority'] = '-100'
categories['movies'] = {}
categories['movies']['name'] = 'movies'
categories['movies']['dir'] = 'movies'
categories['movies']['priority'] = '-100'
categories['music'] = {}
categories['music']['name'] = 'music'
categories['music']['dir'] = 'music'
categories['music']['priority'] = '-100'
defaultConfig['servers'] = servers
defaultConfig['categories'] = categories
sabNzbdConfig.merge(defaultConfig)
sabNzbdConfig.write()
# also keep the autoProcessTV config up to date
autoProcessConfig = ConfigObj(os.path.join(pSabNzbdScripts, 'autoProcessTV.cfg'), create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['SickBeard'] = {}
defaultConfig['SickBeard']['host'] = 'localhost'
defaultConfig['SickBeard']['port'] = '8082'
defaultConfig['SickBeard']['username'] = user
defaultConfig['SickBeard']['password'] = pwd
autoProcessConfig.merge(defaultConfig)
autoProcessConfig.write()
# launch SABnzbd and get the API key
# ----------------------------------
if "true" in sabnzbd_launch:
logging.debug('Launching SABnzbd...')
subprocess.call(sabnzbd,close_fds=True)
logging.debug('...done')
# SABnzbd will only complete the .ini file when we first access the web interface
if firstLaunch:
loadWebInterface('http://' + sabNzbdHost,user,pwd)
sabNzbdConfig.reload()
sabNzbdApiKey = sabNzbdConfig['misc']['api_key']
logging.debug('SABnzbd api key: ' + sabNzbdApiKey)
defaultConfig['misc']['download_dir'] = pSabNzbdIncomplete
defaultConfig['misc']['complete_dir'] = pSabNzbdComplete
servers = {}
servers['localhost'] = {}
servers['localhost']['host'] = 'localhost'
servers['localhost']['port'] = '119'
servers['localhost']['enable'] = '0'
categories = {}
categories['tv'] = {}
categories['tv']['name'] = 'tv'
categories['tv']['script'] = 'sabToSickBeard.py'
categories['tv']['priority'] = '-100'
categories['movies'] = {}
categories['movies']['name'] = 'movies'
categories['movies']['dir'] = 'movies'
categories['movies']['priority'] = '-100'
categories['music'] = {}
categories['music']['name'] = 'music'
categories['music']['dir'] = 'music'
categories['music']['priority'] = '-100'
defaultConfig['servers'] = servers
defaultConfig['categories'] = categories
# write SickBeard settings
# ------------------------
sabNzbdConfig.merge(defaultConfig)
sabNzbdConfig.write()
sickBeardConfig = ConfigObj(pSickBeardSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['General'] = {}
defaultConfig['General']['launch_browser'] = '0'
defaultConfig['General']['version_notify'] = '0'
defaultConfig['General']['log_dir'] = 'logs'
defaultConfig['General']['web_port'] = '8082'
defaultConfig['General']['web_host'] = host
defaultConfig['General']['web_username'] = user
defaultConfig['General']['web_password'] = pwd
if "true" in sabnzbd_launch:
defaultConfig['SABnzbd'] = {}
defaultConfig['SABnzbd']['sab_username'] = user
defaultConfig['SABnzbd']['sab_password'] = pwd
defaultConfig['SABnzbd']['sab_apikey'] = sabNzbdApiKey
defaultConfig['SABnzbd']['sab_host'] = 'http://' + sabNzbdHost + '/'
defaultConfig['XBMC'] = {}
defaultConfig['XBMC']['use_xbmc'] = '1'
defaultConfig['XBMC']['xbmc_host'] = '127.0.0.1:' + xbmcPort
defaultConfig['XBMC']['xbmc_username'] = xbmcUser
defaultConfig['XBMC']['xbmc_password'] = xbmcPwd
# also keep the autoProcessTV config up to date
autoProcessConfig = ConfigObj(os.path.join(pSabNzbdScripts, 'autoProcessTV.cfg'), create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['SickBeard'] = {}
defaultConfig['SickBeard']['host'] = 'localhost'
defaultConfig['SickBeard']['port'] = '8082'
defaultConfig['SickBeard']['username'] = user
defaultConfig['SickBeard']['password'] = pwd
autoProcessConfig.merge(defaultConfig)
autoProcessConfig.write()
if firstLaunch:
defaultConfig['General']['metadata_xbmc'] = '1|1|1|1|1|1'
defaultConfig['General']['nzb_method'] = 'sabnzbd'
defaultConfig['General']['keep_processed_dir'] = '0'
defaultConfig['General']['use_banner'] = '1'
defaultConfig['General']['rename_episodes'] = '1'
defaultConfig['General']['naming_ep_name'] = '0'
defaultConfig['General']['naming_use_periods'] = '1'
defaultConfig['General']['naming_sep_type'] = '1'
defaultConfig['General']['naming_ep_type'] = '1'
defaultConfig['General']['root_dirs'] = '0|/storage/tvshows'
defaultConfig['SABnzbd']['sab_category'] = 'tv'
# workaround: on first launch, sick beard will always add
# 'http://' and trailing '/' on its own
defaultConfig['SABnzbd']['sab_host'] = sabNzbdHost
defaultConfig['XBMC']['xbmc_notify_ondownload'] = '1'
defaultConfig['XBMC']['xbmc_update_library'] = '1'
# launch SABnzbd and get the API key
# ----------------------------------
if "true" in sabnzbd_launch:
logging.debug('Launching SABnzbd...')
subprocess.call(sabnzbd,close_fds=True)
logging.debug('...done')
sickBeardConfig.merge(defaultConfig)
sickBeardConfig.write()
# SABnzbd will only complete the .ini file when we first access the web interface
if firstLaunch:
loadWebInterface('http://' + sabNzbdHost,user,pwd)
sabNzbdConfig.reload()
sabNzbdApiKey = sabNzbdConfig['misc']['api_key']
logging.debug('SABnzbd api key: ' + sabNzbdApiKey)
except Exception,e:
print 'SABnzbd: exception occurred:', e
# SABnzbd end
# launch SickBeard
# ----------------
if "true" in sickbeard_launch:
logging.debug('Launching SickBeard...')
subprocess.call(sickBeard,close_fds=True)
logging.debug('...done')
# SickBeard start
try:
# write SickBeard settings
# ------------------------
sickBeardConfig = ConfigObj(pSickBeardSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['General'] = {}
defaultConfig['General']['launch_browser'] = '0'
defaultConfig['General']['version_notify'] = '0'
defaultConfig['General']['log_dir'] = 'logs'
defaultConfig['General']['web_port'] = '8082'
defaultConfig['General']['web_host'] = host
defaultConfig['General']['web_username'] = user
defaultConfig['General']['web_password'] = pwd
if "true" in sabnzbd_launch:
defaultConfig['SABnzbd'] = {}
defaultConfig['SABnzbd']['sab_username'] = user
defaultConfig['SABnzbd']['sab_password'] = pwd
defaultConfig['SABnzbd']['sab_apikey'] = sabNzbdApiKey
defaultConfig['SABnzbd']['sab_host'] = 'http://' + sabNzbdHost + '/'
defaultConfig['XBMC'] = {}
defaultConfig['XBMC']['use_xbmc'] = '1'
defaultConfig['XBMC']['xbmc_host'] = '127.0.0.1:' + xbmcPort
defaultConfig['XBMC']['xbmc_username'] = xbmcUser
defaultConfig['XBMC']['xbmc_password'] = xbmcPwd
# write CouchPotato settings
# --------------------------
if firstLaunch:
defaultConfig['General']['metadata_xbmc'] = '1|1|1|1|1|1'
defaultConfig['General']['nzb_method'] = 'sabnzbd'
defaultConfig['General']['keep_processed_dir'] = '0'
defaultConfig['General']['use_banner'] = '1'
defaultConfig['General']['rename_episodes'] = '1'
defaultConfig['General']['naming_ep_name'] = '0'
defaultConfig['General']['naming_use_periods'] = '1'
defaultConfig['General']['naming_sep_type'] = '1'
defaultConfig['General']['naming_ep_type'] = '1'
defaultConfig['General']['root_dirs'] = '0|/storage/tvshows'
defaultConfig['SABnzbd']['sab_category'] = 'tv'
# workaround: on first launch, sick beard will always add
# 'http://' and trailing '/' on its own
defaultConfig['SABnzbd']['sab_host'] = sabNzbdHost
defaultConfig['XBMC']['xbmc_notify_ondownload'] = '1'
defaultConfig['XBMC']['xbmc_update_library'] = '1'
couchPotatoConfig = ConfigObj(pCouchPotatoSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['global'] = {}
defaultConfig['global']['launchbrowser'] = 'False'
defaultConfig['global']['updater'] = 'False'
defaultConfig['global']['password'] = pwd
defaultConfig['global']['username'] = user
defaultConfig['global']['port'] = '8083'
defaultConfig['global']['host'] = host
if "true" in sabnzbd_launch:
defaultConfig['Sabnzbd'] = {}
defaultConfig['Sabnzbd']['username'] = user
defaultConfig['Sabnzbd']['password'] = pwd
defaultConfig['Sabnzbd']['apikey'] = sabNzbdApiKey
defaultConfig['Sabnzbd']['host'] = sabNzbdHost
defaultConfig['XBMC'] = {}
defaultConfig['XBMC']['enabled'] = 'True'
defaultConfig['XBMC']['host'] = '127.0.0.1:' + xbmcPort
defaultConfig['XBMC']['username'] = xbmcUser
defaultConfig['XBMC']['password'] = xbmcPwd
sickBeardConfig.merge(defaultConfig)
sickBeardConfig.write()
if firstLaunch:
defaultConfig['Sabnzbd']['category'] = 'movies'
defaultConfig['Sabnzbd']['ppdir'] = pSabNzbdCompleteMov
defaultConfig['Renamer'] = {}
defaultConfig['Renamer']['enabled'] = 'True'
defaultConfig['Renamer']['download'] = pSabNzbdCompleteMov
defaultConfig['Renamer']['destination'] = '/storage/videos'
defaultConfig['Renamer']['separator'] = '.'
defaultConfig['Renamer']['cleanup'] = 'True'
# launch SickBeard
# ----------------
if "true" in sickbeard_launch:
logging.debug('Launching SickBeard...')
subprocess.call(sickBeard,close_fds=True)
logging.debug('...done')
except Exception,e:
print 'SickBeard: exception occurred:', e
# SickBeard end
couchPotatoConfig.merge(defaultConfig)
couchPotatoConfig.write()
# CouchPotato start
try:
# write CouchPotato settings
# --------------------------
couchPotatoConfig = ConfigObj(pCouchPotatoSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['global'] = {}
defaultConfig['global']['launchbrowser'] = 'False'
defaultConfig['global']['updater'] = 'False'
defaultConfig['global']['password'] = pwd
defaultConfig['global']['username'] = user
defaultConfig['global']['port'] = '8083'
defaultConfig['global']['host'] = host
if "true" in sabnzbd_launch:
defaultConfig['Sabnzbd'] = {}
defaultConfig['Sabnzbd']['username'] = user
defaultConfig['Sabnzbd']['password'] = pwd
defaultConfig['Sabnzbd']['apikey'] = sabNzbdApiKey
defaultConfig['Sabnzbd']['host'] = sabNzbdHost
defaultConfig['XBMC'] = {}
defaultConfig['XBMC']['enabled'] = 'True'
defaultConfig['XBMC']['host'] = '127.0.0.1:' + xbmcPort
defaultConfig['XBMC']['username'] = xbmcUser
defaultConfig['XBMC']['password'] = xbmcPwd
# launch CouchPotato
# ------------------
if "true" in couchpotato_launch and "0" in couchpotato_version:
logging.debug('Launching CouchPotato...')
subprocess.call(couchPotato,close_fds=True)
logging.debug('...done')
if firstLaunch:
defaultConfig['Sabnzbd']['category'] = 'movies'
defaultConfig['Sabnzbd']['ppdir'] = pSabNzbdCompleteMov
defaultConfig['Renamer'] = {}
defaultConfig['Renamer']['enabled'] = 'True'
defaultConfig['Renamer']['download'] = pSabNzbdCompleteMov
defaultConfig['Renamer']['destination'] = '/storage/videos'
defaultConfig['Renamer']['separator'] = '.'
defaultConfig['Renamer']['cleanup'] = 'True'
#convert password to md5
md5pwd = hashlib.md5(pwd).hexdigest()
couchPotatoConfig.merge(defaultConfig)
couchPotatoConfig.write()
# write CouchPotatoServer settings
# --------------------------
# launch CouchPotato
# ------------------
if "true" in couchpotato_launch and "0" in couchpotato_version:
logging.debug('Launching CouchPotato...')
subprocess.call(couchPotato,close_fds=True)
logging.debug('...done')
except Exception,e:
print 'CouchPotato: exception occurred:', e
# CouchPotato end
couchPotatoServerConfig = ConfigObj(pCouchPotatoServerSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['newznab'] = {}
defaultConfig['newznab']['api_key'] = ''
defaultConfig['core'] = {}
defaultConfig['core']['username'] = user
defaultConfig['core']['password'] = md5pwd
defaultConfig['core']['port'] = '8083'
defaultConfig['core']['launchbrowser'] = '0'
defaultConfig['core']['host'] = host
defaultConfig['core']['data_dir'] = pAddonHome
defaultConfig['core']['permission_folder'] = '0644'
defaultConfig['core']['permission_file'] = '0644'
defaultConfig['core']['show_wizard'] = '0'
defaultConfig['core']['debug'] = '0'
defaultConfig['core']['development'] = '0'
defaultConfig['updater'] = {}
defaultConfig['updater']['enabled'] = '0'
defaultConfig['updater']['notification'] = '0'
defaultConfig['updater']['automatic'] = '0'
if "true" in sabnzbd_launch:
defaultConfig['Sabnzbd'] = {}
defaultConfig['Sabnzbd']['username'] = user
defaultConfig['Sabnzbd']['password'] = pwd
defaultConfig['Sabnzbd']['api_key'] = sabNzbdApiKey
defaultConfig['Sabnzbd']['host'] = sabNzbdHost
defaultConfig['xbmc'] = {}
defaultConfig['xbmc']['enabled'] = '1'
defaultConfig['xbmc']['host'] = '127.0.0.1:' + xbmcPort
defaultConfig['xbmc']['username'] = xbmcUser
defaultConfig['xbmc']['password'] = xbmcPwd
# CouchPotatoServer start
try:
#convert password to md5
md5pwd = hashlib.md5(pwd).hexdigest()
if firstLaunch:
defaultConfig['Sabnzbd']['category'] = 'movies'
defaultConfig['Sabnzbd']['pp_directory'] = pSabNzbdCompleteMov
defaultConfig['Renamer'] = {}
defaultConfig['Renamer']['enabled'] = 'True'
defaultConfig['Renamer']['download'] = pSabNzbdCompleteMov
defaultConfig['Renamer']['destination'] = '/storage/videos'
defaultConfig['Renamer']['separator'] = '.'
defaultConfig['Renamer']['cleanup'] = 'False'
# write CouchPotatoServer settings
# --------------------------
couchPotatoServerConfig = ConfigObj(pCouchPotatoServerSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['newznab'] = {}
defaultConfig['newznab']['api_key'] = ''
defaultConfig['core'] = {}
defaultConfig['core']['username'] = user
defaultConfig['core']['password'] = md5pwd
defaultConfig['core']['port'] = '8083'
defaultConfig['core']['launchbrowser'] = '0'
defaultConfig['core']['host'] = host
defaultConfig['core']['data_dir'] = pAddonHome
defaultConfig['core']['permission_folder'] = '0644'
defaultConfig['core']['permission_file'] = '0644'
defaultConfig['core']['show_wizard'] = '0'
defaultConfig['core']['debug'] = '0'
defaultConfig['core']['development'] = '0'
defaultConfig['updater'] = {}
defaultConfig['updater']['enabled'] = '0'
defaultConfig['updater']['notification'] = '0'
defaultConfig['updater']['automatic'] = '0'
if "true" in sabnzbd_launch:
defaultConfig['Sabnzbd'] = {}
defaultConfig['Sabnzbd']['username'] = user
defaultConfig['Sabnzbd']['password'] = pwd
defaultConfig['Sabnzbd']['api_key'] = sabNzbdApiKey
defaultConfig['Sabnzbd']['host'] = sabNzbdHost
defaultConfig['xbmc'] = {}
defaultConfig['xbmc']['enabled'] = '1'
defaultConfig['xbmc']['host'] = '127.0.0.1:' + xbmcPort
defaultConfig['xbmc']['username'] = xbmcUser
defaultConfig['xbmc']['password'] = xbmcPwd
couchPotatoServerConfig.merge(defaultConfig)
couchPotatoServerConfig.write()
if firstLaunch:
defaultConfig['Sabnzbd']['category'] = 'movies'
defaultConfig['Sabnzbd']['pp_directory'] = pSabNzbdCompleteMov
defaultConfig['Renamer'] = {}
defaultConfig['Renamer']['enabled'] = 'True'
defaultConfig['Renamer']['download'] = pSabNzbdCompleteMov
defaultConfig['Renamer']['destination'] = '/storage/videos'
defaultConfig['Renamer']['separator'] = '.'
defaultConfig['Renamer']['cleanup'] = 'False'
# launch CouchPotatoServer
# ------------------
if "true" in couchpotato_launch and "1" in couchpotato_version:
logging.debug('Launching CouchPotatoServer...')
subprocess.call(couchPotatoServer,close_fds=True)
logging.debug('...done')
couchPotatoServerConfig.merge(defaultConfig)
couchPotatoServerConfig.write()
# write Headphones settings
# -------------------------
# launch CouchPotatoServer
# ------------------
if "true" in couchpotato_launch and "1" in couchpotato_version:
logging.debug('Launching CouchPotatoServer...')
subprocess.call(couchPotatoServer,close_fds=True)
logging.debug('...done')
except Exception,e:
print 'CouchPotatoServer: exception occurred:', e
# CouchPotatoServer end
headphonesConfig = ConfigObj(pHeadphonesSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['General'] = {}
defaultConfig['General']['launch_browser'] = '0'
defaultConfig['General']['http_port'] = '8084'
defaultConfig['General']['http_host'] = host
defaultConfig['General']['http_username'] = user
defaultConfig['General']['http_password'] = pwd
if "true" in sabnzbd_launch:
defaultConfig['SABnzbd'] = {}
defaultConfig['SABnzbd']['sab_apikey'] = sabNzbdApiKey
defaultConfig['SABnzbd']['sab_host'] = sabNzbdHost
defaultConfig['SABnzbd']['sab_username'] = user
defaultConfig['SABnzbd']['sab_password'] = pwd
# Headphones start
try:
# write Headphones settings
# -------------------------
headphonesConfig = ConfigObj(pHeadphonesSettings,create_empty=True)
defaultConfig = ConfigObj()
defaultConfig['General'] = {}
defaultConfig['General']['launch_browser'] = '0'
defaultConfig['General']['http_port'] = '8084'
defaultConfig['General']['http_host'] = host
defaultConfig['General']['http_username'] = user
defaultConfig['General']['http_password'] = pwd
if "true" in sabnzbd_launch:
defaultConfig['SABnzbd'] = {}
defaultConfig['SABnzbd']['sab_apikey'] = sabNzbdApiKey
defaultConfig['SABnzbd']['sab_host'] = sabNzbdHost
defaultConfig['SABnzbd']['sab_username'] = user
defaultConfig['SABnzbd']['sab_password'] = pwd
if firstLaunch:
defaultConfig['SABnzbd']['sab_category'] = 'music'
defaultConfig['General']['music_dir'] = '/storage/music'
defaultConfig['General']['destination_dir'] = '/storage/music'
defaultConfig['General']['download_dir'] = '/storage/downloads/music'
defaultConfig['General']['move_files'] = '1'
defaultConfig['General']['rename_files'] = '1'
if firstLaunch:
defaultConfig['SABnzbd']['sab_category'] = 'music'
defaultConfig['General']['music_dir'] = '/storage/music'
defaultConfig['General']['destination_dir'] = '/storage/music'
defaultConfig['General']['download_dir'] = '/storage/downloads/music'
defaultConfig['General']['move_files'] = '1'
defaultConfig['General']['rename_files'] = '1'
headphonesConfig.merge(defaultConfig)
headphonesConfig.write()
headphonesConfig.merge(defaultConfig)
headphonesConfig.write()
# launch Headphones
# -----------------
if "true" in headphones_launch:
logging.debug('Launching Headphones...')
subprocess.call(headphones,close_fds=True)
logging.debug('...done')
# launch Headphones
# -----------------
if "true" in headphones_launch:
logging.debug('Launching Headphones...')
subprocess.call(headphones,close_fds=True)
logging.debug('...done')
except Exception,e:
print 'Headphones: exception occurred:', e
# Headphones end