diff --git a/data/interfaces/default/config.html b/data/interfaces/default/config.html
index 9bceb8db..5f29847b 100644
--- a/data/interfaces/default/config.html
+++ b/data/interfaces/default/config.html
@@ -1,6 +1,7 @@
m<%inherit file="base.html"/>
<%!
import headphones
+ from operator import itemgetter
%>
<%def name="headerIncludes()">
@@ -217,19 +218,27 @@ m<%inherit file="base.html"/>
<%
newznab_number = 2
%>
- %for newznab in config['extra_newznabs']:
+ %for newznab in sorted(config['extra_newznabs'], key=itemgetter(0)):
+ <%
+ if newznab[2]:
+ newznab_enabled = "checked"
+ else:
+ newznab_enabled = ""
+ %>
");
+ var formfields = $("
");
- $("#newznab" + intIdPrev).append(formfields);
+ $("#newznab" + intIdPrev).after(formfields);
});
});
diff --git a/headphones/__init__.py b/headphones/__init__.py
index 91b396f7..f8eacc1a 100644
--- a/headphones/__init__.py
+++ b/headphones/__init__.py
@@ -122,6 +122,7 @@ NEWZNAB = False
NEWZNAB_HOST = None
NEWZNAB_APIKEY = None
NEWZNAB_ENABLED = False
+EXTRA_NEWZNABS = []
NZBSORG = False
NZBSORG_UID = None
@@ -241,7 +242,7 @@ def initialize():
ADD_ALBUM_ART, EMBED_ALBUM_ART, EMBED_LYRICS, DOWNLOAD_DIR, BLACKHOLE, BLACKHOLE_DIR, USENET_RETENTION, SEARCH_INTERVAL, \
TORRENTBLACKHOLE_DIR, NUMBEROFSEEDERS, ISOHUNT, KAT, MININOVA, WAFFLES, WAFFLES_UID, WAFFLES_PASSKEY, DOWNLOAD_TORRENT_DIR, \
LIBRARYSCAN_INTERVAL, DOWNLOAD_SCAN_INTERVAL, SAB_HOST, SAB_USERNAME, SAB_PASSWORD, SAB_APIKEY, SAB_CATEGORY, \
- NZBMATRIX, NZBMATRIX_USERNAME, NZBMATRIX_APIKEY, NEWZNAB, NEWZNAB_HOST, NEWZNAB_APIKEY, NEWZNAB_ENABLED, \
+ NZBMATRIX, NZBMATRIX_USERNAME, NZBMATRIX_APIKEY, NEWZNAB, NEWZNAB_HOST, NEWZNAB_APIKEY, NEWZNAB_ENABLED, EXTRA_NEWZNABS,\
NZBSORG, NZBSORG_UID, NZBSORG_HASH, NEWZBIN, NEWZBIN_UID, NEWZBIN_PASSWORD, LASTFM_USERNAME, INTERFACE, FOLDER_PERMISSIONS, \
ENCODERFOLDER, ENCODER, BITRATE, SAMPLINGFREQUENCY, MUSIC_ENCODER, ADVANCEDENCODER, ENCODEROUTPUTFORMAT, ENCODERQUALITY, ENCODERVBRCBR, \
ENCODERLOSSLESS, PROWL_ENABLED, PROWL_PRIORITY, PROWL_KEYS, PROWL_ONSNATCH, MIRRORLIST, MIRROR, CUSTOMHOST, CUSTOMPORT, \
@@ -342,6 +343,7 @@ def initialize():
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))
+ EXTRA_NEWZNABS = check_setting_str(CFG, 'Newznab', 'extra_newznabs', [], log=False)
NZBSORG = bool(check_setting_int(CFG, 'NZBsorg', 'nzbsorg', 0))
NZBSORG_UID = check_setting_str(CFG, 'NZBsorg', 'nzbsorg_uid', '')
@@ -616,6 +618,7 @@ def config_write():
new_config['Newznab']['newznab_host'] = NEWZNAB_HOST
new_config['Newznab']['newznab_apikey'] = NEWZNAB_APIKEY
new_config['Newznab']['newznab_enabled'] = int(NEWZNAB_ENABLED)
+ new_config['Newznab']['extra_newznabs'] = EXTRA_NEWZNABS
new_config['NZBsorg'] = {}
new_config['NZBsorg']['nzbsorg'] = int(NZBSORG)
diff --git a/headphones/webserve.py b/headphones/webserve.py
index 93865a6a..2d190bf8 100644
--- a/headphones/webserve.py
+++ b/headphones/webserve.py
@@ -385,6 +385,7 @@ class WebInterface(object):
"newznab_host" : headphones.NEWZNAB_HOST,
"newznab_api" : headphones.NEWZNAB_APIKEY,
"newznab_enabled" : checked(headphones.NEWZNAB_ENABLED),
+ "extra_newznabs" : headphones.EXTRA_NEWZNABS,
"use_nzbsorg" : checked(headphones.NZBSORG),
"nzbsorg_uid" : headphones.NZBSORG_UID,
"nzbsorg_hash" : headphones.NZBSORG_HASH,
@@ -465,7 +466,7 @@ class WebInterface(object):
rename_files=0, correct_metadata=0, cleanup_files=0, add_album_art=0, embed_album_art=0, embed_lyrics=0, destination_dir=None, folder_format=None, file_format=None, include_extras=0, autowant_upcoming=False, autowant_all=False, interface=None, log_dir=None,
music_encoder=0, encoder=None, bitrate=None, samplingfrequency=None, encoderfolder=None, advancedencoder=None, encoderoutputformat=None, encodervbrcbr=None, encoderquality=None, encoderlossless=0,
prowl_enabled=0, prowl_onsnatch=0, prowl_keys=None, prowl_priority=0, xbmc_enabled=0, xbmc_host=None, xbmc_username=None, xbmc_password=None, xbmc_update=0, xbmc_notify=0,
- nma_enabled=False, nma_apikey=None, nma_priority=0, synoindex_enabled=False, mirror=None, customhost=None, customport=None, customsleep=None, hpuser=None, hppass=None):
+ nma_enabled=False, nma_apikey=None, nma_priority=0, synoindex_enabled=False, mirror=None, customhost=None, customport=None, customsleep=None, hpuser=None, hppass=None, **kwargs):
headphones.HTTP_HOST = http_host
headphones.HTTP_PORT = http_port
@@ -556,6 +557,22 @@ class WebInterface(object):
headphones.CUSTOMSLEEP = customsleep
headphones.HPUSER = hpuser
headphones.HPPASS = hppass
+
+ # Handle the variable config options. Note - keys with False values aren't getting passed
+
+ headphones.EXTRA_NEWZNABS = []
+
+ for kwarg in kwargs:
+ if kwarg.startswith('newznab_host'):
+ newznab_number = kwarg[12:]
+ newznab_host = kwargs['newznab_host' + newznab_number]
+ newznab_api = kwargs['newznab_api' + newznab_number]
+ try:
+ newznab_enabled = int(kwargs['newznab_enabled' + newznab_number])
+ except KeyError:
+ newznab_enabled = 0
+
+ headphones.EXTRA_NEWZNABS.append([newznab_host, newznab_api, newznab_enabled])
headphones.config_write()