Fix various config keys and template config keys to round trip more data

This commit is contained in:
Jesse Mullan
2014-10-29 07:13:44 -07:00
parent 4af96b2bb6
commit b0c7c8b682
3 changed files with 57 additions and 54 deletions
+21 -21
View File
@@ -50,13 +50,13 @@
<label title="Username for web server authentication. Leave empty to disable."> <label title="Username for web server authentication. Leave empty to disable.">
HTTP Username HTTP Username
</label> </label>
<input type="text" name="http_username" value="${config['http_user']}" size="30"> <input type="text" name="http_username" value="${config['http_username']}" size="30">
</div> </div>
<div class="row"> <div class="row">
<label title="Password for web server authentication. Leave empty to disable."> <label title="Password for web server authentication. Leave empty to disable.">
HTTP Password HTTP Password
</label> </label>
<input type="password" name="http_password" value="${config['http_pass']}" size="30"> <input type="password" name="http_password" value="${config['http_password']}" size="30">
</div> </div>
<div class="row checkbox"> <div class="row checkbox">
<input type="checkbox" name="launch_browser" value="1" ${config['launch_browser']} /> <input type="checkbox" name="launch_browser" value="1" ${config['launch_browser']} />
@@ -166,25 +166,25 @@
<label title="SABnzbd username. Leave empty if not applicable."> <label title="SABnzbd username. Leave empty if not applicable.">
SABnzbd Username SABnzbd Username
</label> </label>
<input type="text" name="sab_username" value="${config['sab_user']}" size="20"> <input type="text" name="sab_username" value="${config['sab_username']}" size="20">
</div> </div>
<div class="row"> <div class="row">
<label title="SABnzbd password. Leave empty if not applicable."> <label title="SABnzbd password. Leave empty if not applicable.">
SABnzbd Password SABnzbd Password
</label> </label>
<input type="password" name="sab_password" value="${config['sab_pass']}" size="20"> <input type="password" name="sab_password" value="${config['sab_password']}" size="20">
</div> </div>
<div class="row"> <div class="row">
<label title="SABnzbd API key. Can be found in SABnzbd settings."> <label title="SABnzbd API key. Can be found in SABnzbd settings.">
SABnzbd API key SABnzbd API key
</label> </label>
<input type="text" name="sab_apikey" value="${config['sab_api']}" size="36"> <input type="text" name="sab_apikey" value="${config['sab_apikey']}" size="36">
</div> </div>
<div class="row"> <div class="row">
<label title="Name of SABnzbd category to add downloads to."> <label title="Name of SABnzbd category to add downloads to.">
SABnzbd Category SABnzbd Category
</label> </label>
<input type="text" name="sab_category" value="${config['sab_cat']}" size="20"> <input type="text" name="sab_category" value="${config['sab_category']}" size="20">
</div> </div>
</fieldset> </fieldset>
@@ -200,19 +200,19 @@
<label title="NZBGet username. Leave empty if not applicable"> <label title="NZBGet username. Leave empty if not applicable">
NZBget Username NZBget Username
</label> </label>
<input type="text" name="nzbget_username" value="${config['nzbget_user']}" size="20"> <input type="text" name="nzbget_username" value="${config['nzbget_username']}" size="20">
</div> </div>
<div class="row"> <div class="row">
<label title="NZBGet password. Leave empty if not applicable"> <label title="NZBGet password. Leave empty if not applicable">
NZBget Password NZBget Password
</label> </label>
<input type="password" name="nzbget_password" value="${config['nzbget_pass']}" size="20"> <input type="password" name="nzbget_password" value="${config['nzbget_password']}" size="20">
</div> </div>
<div class="row"> <div class="row">
<label title="Name of NZBget category to add downloads to."> <label title="Name of NZBget category to add downloads to.">
NZBget Category NZBget Category
</label> </label>
<input type="text" name="nzbget_category" value="${config['nzbget_cat']}" size="20"> <input type="text" name="nzbget_category" value="${config['nzbget_category']}" size="20">
</div> </div>
<% <%
if config['nzbget_priority'] == -100: if config['nzbget_priority'] == -100:
@@ -348,11 +348,11 @@
</div> </div>
<div class="row"> <div class="row">
<label>Transmission Username</label> <label>Transmission Username</label>
<input type="text" name="transmission_username" value="${config['transmission_user']}" size="30"> <input type="text" name="transmission_username" value="${config['transmission_username']}" size="30">
</div> </div>
<div class="row"> <div class="row">
<label>Transmission Password</label> <label>Transmission Password</label>
<input type="password" name="transmission_password" value="${config['transmission_pass']}" size="30"> <input type="password" name="transmission_password" value="${config['transmission_password']}" size="30">
</div> </div>
<div class="row"> <div class="row">
<small>Note: With Transmission, you can specify a different download directory for downloads sent from Headphones. <small>Note: With Transmission, you can specify a different download directory for downloads sent from Headphones.
@@ -368,11 +368,11 @@
</div> </div>
<div class="row"> <div class="row">
<label>uTorrent Username</label> <label>uTorrent Username</label>
<input type="text" name="utorrent_username" value="${config['utorrent_user']}" size="30"> <input type="text" name="utorrent_username" value="${config['utorrent_username']}" size="30">
</div> </div>
<div class="row"> <div class="row">
<label>uTorrent Password</label> <label>uTorrent Password</label>
<input type="password" name="utorrent_password" value="${config['utorrent_pass']}" size="30"> <input type="password" name="utorrent_password" value="${config['utorrent_password']}" size="30">
</div> </div>
<div class="row"> <div class="row">
<label>uTorrent Label</label> <label>uTorrent Label</label>
@@ -445,7 +445,7 @@
</div> </div>
<div class="row"> <div class="row">
<label>Newznab API</label> <label>Newznab API</label>
<input type="text" name="newznab_apikey" value="${config['newznab_api']}" size="36"> <input type="text" name="newznab_apikey" value="${config['newznab_apikey']}" size="36">
</div> </div>
<div class="row checkbox"> <div class="row checkbox">
<input id="newznab_enabled" type="checkbox" name="newznab_enabled" onclick="initConfigCheckbox($(this));" value="1" ${config['newznab_enabled']} /><label>Enabled</label> <input id="newznab_enabled" type="checkbox" name="newznab_enabled" onclick="initConfigCheckbox($(this));" value="1" ${config['newznab_enabled']} /><label>Enabled</label>
@@ -667,15 +667,15 @@
<div id="preferred_bitrate_options"> <div id="preferred_bitrate_options">
<div class="row"> <div class="row">
Target bitrate Target bitrate
<input type="text" class="override-float" name="preferred_bitrate" value="${config['pref_bitrate']}" size="3">kbps<br> <input type="text" class="override-float" name="preferred_bitrate" value="${config['preferred_bitrate']}" size="3">kbps<br>
</div> </div>
<div class="row"> <div class="row">
<span style="padding-left: 20px"> <span style="padding-left: 20px">
Reject if <strong>less than</strong> <input type="text" class="override-float" name="preferred_bitrate_low_buffer" value="${config['pref_bitrate_low']}" size="3">% or <strong>more than</strong> <input type="text" class="override-float" name="preferred_bitrate_high_buffer" value="${config['pref_bitrate_high']}" size="3">% of the target size (leave blank for no limit)<br> Reject if <strong>less than</strong> <input type="text" class="override-float" name="preferred_bitrate_low_buffer" value="${config['preferred_bitrate_low']}" size="3">% or <strong>more than</strong> <input type="text" class="override-float" name="preferred_bitrate_high_buffer" value="${config['preferred_bitrate_high']}" size="3">% of the target size (leave blank for no limit)<br>
</span> </span>
</div> </div>
<div class="row checkbox left" style="padding-left: 20px"> <div class="row checkbox left" style="padding-left: 20px">
<input type="checkbox" name="preferred_bitrate_allow_lossless" value="1" ${config['pref_bitrate_allow_lossless']}> <input type="checkbox" name="preferred_bitrate_allow_lossless" value="1" ${config['preferred_bitrate_allow_lossless']}>
<label>Allow lossless if no good lossy match found</label> <label>Allow lossless if no good lossy match found</label>
</div> </div>
<div class="row checkbox left" style="padding-left: 20px"> <div class="row checkbox left" style="padding-left: 20px">
@@ -762,12 +762,12 @@
</div> </div>
<div class="row"> <div class="row">
<label>Path to Destination Folder</label> <label>Path to Destination Folder</label>
<input type="text" name="destination_dir" value="${config['dest_dir']}" size="50"> <input type="text" name="destination_dir" value="${config['destination_dir']}" size="50">
<small>e.g. /Users/name/Music/iTunes or /Volumes/share/music</small> <small>e.g. /Users/name/Music/iTunes or /Volumes/share/music</small>
</div> </div>
<div class="row"> <div class="row">
<label>Path to Lossless Destination folder (optional)</label> <label>Path to Lossless Destination folder (optional)</label>
<input type="text" name="lossless_destination_dir" value="${config['lossless_dest_dir']}" size="50"> <input type="text" name="lossless_destination_dir" value="${config['lossless_destination_dir']}" size="50">
<small>Set this if you have a separate directory for lossless music</small> <small>Set this if you have a separate directory for lossless music</small>
</div> </div>
</fieldset> </fieldset>
@@ -1258,7 +1258,7 @@
</div> </div>
<div class="row"> <div class="row">
<label>Path to Encoder</label> <label>Path to Encoder</label>
<input type="text" name="encoderfolder" value="${config['encoderfolder']}" size="43"> <input type="text" name="encoder_path" value="${config['encoder_path']}" size="43">
</div> </div>
</td> </td>
<td> <td>
@@ -1367,7 +1367,7 @@
<div class="row"> <div class="row">
<label>Muscbrainz Mirror</label> <label>Muscbrainz Mirror</label>
<select name="mirror" id="mirror"> <select name="mirror" id="mirror">
%for mirror in config['mirror_list']: %for mirror in config['mirrorlist']:
<% <%
if mirror == headphones.CONFIG.MIRROR: if mirror == headphones.CONFIG.MIRROR:
selected = 'selected="selected"' selected = 'selected="selected"'
+9 -7
View File
@@ -13,11 +13,13 @@ def bool_int(value):
value = 0 value = 0
return int(bool(value)) return int(bool(value))
_config_definitions = { _CONFIG_DEFINITIONS = {
'ADD_ALBUM_ART': (int, 'General', 0), 'ADD_ALBUM_ART': (int, 'General', 0),
'ADVANCEDENCODER': (str, 'General', ''), 'ADVANCEDENCODER': (str, 'General', ''),
'ALBUM_ART_FORMAT': (str, 'General', 'folder'), 'ALBUM_ART_FORMAT': (str, 'General', 'folder'),
'ALBUM_COMPLETION_PCT': (int, 'Advanced', 80), # This is used in importer.py to determine how complete an album needs to be - to be considered "downloaded". Percentage from 0-100 # This is used in importer.py to determine how complete an album needs to
# be - to be considered "downloaded". Percentage from 0-100
'ALBUM_COMPLETION_PCT': (int, 'Advanced', 80),
'API_ENABLED': (int, 'General', 0), 'API_ENABLED': (int, 'General', 0),
'API_KEY': (str, 'General', ''), 'API_KEY': (str, 'General', ''),
'AUTOWANT_ALL': (int, 'General', 0), 'AUTOWANT_ALL': (int, 'General', 0),
@@ -237,7 +239,7 @@ class Config(object):
""" Initialize the config with values from a file """ """ Initialize the config with values from a file """
self._config_file = config_file self._config_file = config_file
self._config = ConfigObj(self._config_file, encoding='utf-8') self._config = ConfigObj(self._config_file, encoding='utf-8')
for key in _config_definitions.keys(): for key in _CONFIG_DEFINITIONS.keys():
self.check_setting(key) self.check_setting(key)
self.ENCODER_MULTICORE_COUNT = max(0, self.ENCODER_MULTICORE_COUNT) self.ENCODER_MULTICORE_COUNT = max(0, self.ENCODER_MULTICORE_COUNT)
self._upgrade() self._upgrade()
@@ -245,7 +247,7 @@ class Config(object):
def _define(self, name): def _define(self, name):
key = name.upper() key = name.upper()
ini_key = name.lower() ini_key = name.lower()
definition = _config_definitions[key] definition = _CONFIG_DEFINITIONS[key]
if len(definition) == 3: if len(definition) == 3:
definition_type, section, default = definition definition_type, section, default = definition
else: else:
@@ -276,8 +278,8 @@ class Config(object):
new_config = ConfigObj(encoding="UTF-8") new_config = ConfigObj(encoding="UTF-8")
new_config.filename = self._config_file new_config.filename = self._config_file
# first copy over everything from the old config, even if it is not correctly # first copy over everything from the old config, even if it is not
# defined to keep from losing data # correctly defined to keep from losing data
for key, subkeys in self._config.items(): for key, subkeys in self._config.items():
if key not in new_config: if key not in new_config:
new_config[key] = {} new_config[key] = {}
@@ -285,7 +287,7 @@ class Config(object):
new_config[key][subkey] = value new_config[key][subkey] = value
# next make sure that everything we expect to have defined is so # next make sure that everything we expect to have defined is so
for key in _config_definitions.keys(): for key in _CONFIG_DEFINITIONS.keys():
key, definition_type, section, ini_key, default = self._define(key) key, definition_type, section, ini_key, default = self._define(key)
self.check_setting(key) self.check_setting(key)
if section not in new_config: if section not in new_config:
+27 -26
View File
@@ -659,7 +659,7 @@ class WebInterface(object):
def importLastFM(self, username): def importLastFM(self, username):
headphones.CONFIG.LASTFM_USERNAME = username headphones.CONFIG.LASTFM_USERNAME = username
headphones.config_write() headphones.CONFIG.write()
threading.Thread(target=lastfm.getArtists).start() threading.Thread(target=lastfm.getArtists).start()
raise cherrypy.HTTPRedirect("home") raise cherrypy.HTTPRedirect("home")
importLastFM.exposed = True importLastFM.exposed = True
@@ -671,7 +671,7 @@ class WebInterface(object):
def importItunes(self, path): def importItunes(self, path):
headphones.CONFIG.PATH_TO_XML = path headphones.CONFIG.PATH_TO_XML = path
headphones.config_write() headphones.CONFIG.write()
threading.Thread(target=importer.itunesImport, args=[path]).start() threading.Thread(target=importer.itunesImport, args=[path]).start()
time.sleep(10) time.sleep(10)
raise cherrypy.HTTPRedirect("home") raise cherrypy.HTTPRedirect("home")
@@ -681,7 +681,7 @@ class WebInterface(object):
headphones.CONFIG.LIBRARYSCAN = libraryscan headphones.CONFIG.LIBRARYSCAN = libraryscan
headphones.CONFIG.AUTO_ADD_ARTISTS = autoadd headphones.CONFIG.AUTO_ADD_ARTISTS = autoadd
headphones.CONFIG.MUSIC_DIR = path headphones.CONFIG.MUSIC_DIR = path
headphones.config_write() headphones.CONFIG.write()
if scan: if scan:
try: try:
threading.Thread(target=librarysync.libraryScan).start() threading.Thread(target=librarysync.libraryScan).start()
@@ -937,9 +937,9 @@ class WebInterface(object):
config = { config = {
"http_host" : headphones.CONFIG.HTTP_HOST, "http_host" : headphones.CONFIG.HTTP_HOST,
"http_user" : headphones.CONFIG.HTTP_USERNAME, "http_username" : headphones.CONFIG.HTTP_USERNAME,
"http_port" : headphones.CONFIG.HTTP_PORT, "http_port" : headphones.CONFIG.HTTP_PORT,
"http_pass" : headphones.CONFIG.HTTP_PASSWORD, "http_password" : headphones.CONFIG.HTTP_PASSWORD,
"launch_browser" : checked(headphones.CONFIG.LAUNCH_BROWSER), "launch_browser" : checked(headphones.CONFIG.LAUNCH_BROWSER),
"enable_https" : checked(headphones.CONFIG.ENABLE_HTTPS), "enable_https" : checked(headphones.CONFIG.ENABLE_HTTPS),
"https_cert" : headphones.CONFIG.HTTPS_CERT, "https_cert" : headphones.CONFIG.HTTPS_CERT,
@@ -952,21 +952,21 @@ class WebInterface(object):
"search_interval" : headphones.CONFIG.SEARCH_INTERVAL, "search_interval" : headphones.CONFIG.SEARCH_INTERVAL,
"libraryscan_interval" : headphones.CONFIG.LIBRARYSCAN_INTERVAL, "libraryscan_interval" : headphones.CONFIG.LIBRARYSCAN_INTERVAL,
"sab_host" : headphones.CONFIG.SAB_HOST, "sab_host" : headphones.CONFIG.SAB_HOST,
"sab_user" : headphones.CONFIG.SAB_USERNAME, "sab_username" : headphones.CONFIG.SAB_USERNAME,
"sab_api" : headphones.CONFIG.SAB_APIKEY, "sab_apikey" : headphones.CONFIG.SAB_APIKEY,
"sab_pass" : headphones.CONFIG.SAB_PASSWORD, "sab_password" : headphones.CONFIG.SAB_PASSWORD,
"sab_cat" : headphones.CONFIG.SAB_CATEGORY, "sab_category" : headphones.CONFIG.SAB_CATEGORY,
"nzbget_host" : headphones.CONFIG.NZBGET_HOST, "nzbget_host" : headphones.CONFIG.NZBGET_HOST,
"nzbget_user" : headphones.CONFIG.NZBGET_USERNAME, "nzbget_username" : headphones.CONFIG.NZBGET_USERNAME,
"nzbget_pass" : headphones.CONFIG.NZBGET_PASSWORD, "nzbget_password" : headphones.CONFIG.NZBGET_PASSWORD,
"nzbget_cat" : headphones.CONFIG.NZBGET_CATEGORY, "nzbget_category" : headphones.CONFIG.NZBGET_CATEGORY,
"nzbget_priority" : headphones.CONFIG.NZBGET_PRIORITY, "nzbget_priority" : headphones.CONFIG.NZBGET_PRIORITY,
"transmission_host" : headphones.CONFIG.TRANSMISSION_HOST, "transmission_host" : headphones.CONFIG.TRANSMISSION_HOST,
"transmission_user" : headphones.CONFIG.TRANSMISSION_USERNAME, "transmission_username" : headphones.CONFIG.TRANSMISSION_USERNAME,
"transmission_pass" : headphones.CONFIG.TRANSMISSION_PASSWORD, "transmission_password" : headphones.CONFIG.TRANSMISSION_PASSWORD,
"utorrent_host" : headphones.CONFIG.UTORRENT_HOST, "utorrent_host" : headphones.CONFIG.UTORRENT_HOST,
"utorrent_user" : headphones.CONFIG.UTORRENT_USERNAME, "utorrent_username" : headphones.CONFIG.UTORRENT_USERNAME,
"utorrent_pass" : headphones.CONFIG.UTORRENT_PASSWORD, "utorrent_password" : headphones.CONFIG.UTORRENT_PASSWORD,
"utorrent_label" : headphones.CONFIG.UTORRENT_LABEL, "utorrent_label" : headphones.CONFIG.UTORRENT_LABEL,
"nzb_downloader_sabnzbd" : radio(headphones.CONFIG.NZB_DOWNLOADER, 0), "nzb_downloader_sabnzbd" : radio(headphones.CONFIG.NZB_DOWNLOADER, 0),
"nzb_downloader_nzbget" : radio(headphones.CONFIG.NZB_DOWNLOADER, 1), "nzb_downloader_nzbget" : radio(headphones.CONFIG.NZB_DOWNLOADER, 1),
@@ -981,7 +981,7 @@ class WebInterface(object):
"headphones_indexer" : checked(headphones.CONFIG.HEADPHONES_INDEXER), "headphones_indexer" : checked(headphones.CONFIG.HEADPHONES_INDEXER),
"use_newznab" : checked(headphones.CONFIG.NEWZNAB), "use_newznab" : checked(headphones.CONFIG.NEWZNAB),
"newznab_host" : headphones.CONFIG.NEWZNAB_HOST, "newznab_host" : headphones.CONFIG.NEWZNAB_HOST,
"newznab_api" : headphones.CONFIG.NEWZNAB_APIKEY, "newznab_apikey" : headphones.CONFIG.NEWZNAB_APIKEY,
"newznab_enabled" : checked(headphones.CONFIG.NEWZNAB_ENABLED), "newznab_enabled" : checked(headphones.CONFIG.NEWZNAB_ENABLED),
"extra_newznabs" : headphones.CONFIG.get_extra_newznabs(), "extra_newznabs" : headphones.CONFIG.get_extra_newznabs(),
"use_nzbsorg" : checked(headphones.CONFIG.NZBSORG), "use_nzbsorg" : checked(headphones.CONFIG.NZBSORG),
@@ -1020,10 +1020,10 @@ class WebInterface(object):
"pref_qual_1" : radio(headphones.CONFIG.PREFERRED_QUALITY, 1), "pref_qual_1" : radio(headphones.CONFIG.PREFERRED_QUALITY, 1),
"pref_qual_2" : radio(headphones.CONFIG.PREFERRED_QUALITY, 2), "pref_qual_2" : radio(headphones.CONFIG.PREFERRED_QUALITY, 2),
"pref_qual_3" : radio(headphones.CONFIG.PREFERRED_QUALITY, 3), "pref_qual_3" : radio(headphones.CONFIG.PREFERRED_QUALITY, 3),
"pref_bitrate" : headphones.CONFIG.PREFERRED_BITRATE, "preferred_bitrate" : headphones.CONFIG.PREFERRED_BITRATE,
"pref_bitrate_high" : headphones.CONFIG.PREFERRED_BITRATE_HIGH_BUFFER, "preferred_bitrate_high" : headphones.CONFIG.PREFERRED_BITRATE_HIGH_BUFFER,
"pref_bitrate_low" : headphones.CONFIG.PREFERRED_BITRATE_LOW_BUFFER, "preferred_bitrate_low" : headphones.CONFIG.PREFERRED_BITRATE_LOW_BUFFER,
"pref_bitrate_allow_lossless" : checked(headphones.CONFIG.PREFERRED_BITRATE_ALLOW_LOSSLESS), "preferred_bitrate_allow_lossless" : checked(headphones.CONFIG.PREFERRED_BITRATE_ALLOW_LOSSLESS),
"detect_bitrate" : checked(headphones.CONFIG.DETECT_BITRATE), "detect_bitrate" : checked(headphones.CONFIG.DETECT_BITRATE),
"lossless_bitrate_from" : headphones.CONFIG.LOSSLESS_BITRATE_FROM, "lossless_bitrate_from" : headphones.CONFIG.LOSSLESS_BITRATE_FROM,
"lossless_bitrate_to" : headphones.CONFIG.LOSSLESS_BITRATE_TO, "lossless_bitrate_to" : headphones.CONFIG.LOSSLESS_BITRATE_TO,
@@ -1038,8 +1038,8 @@ class WebInterface(object):
"embed_album_art" : checked(headphones.CONFIG.EMBED_ALBUM_ART), "embed_album_art" : checked(headphones.CONFIG.EMBED_ALBUM_ART),
"embed_lyrics" : checked(headphones.CONFIG.EMBED_LYRICS), "embed_lyrics" : checked(headphones.CONFIG.EMBED_LYRICS),
"replace_existing_folders" : checked(headphones.CONFIG.REPLACE_EXISTING_FOLDERS), "replace_existing_folders" : checked(headphones.CONFIG.REPLACE_EXISTING_FOLDERS),
"dest_dir" : headphones.CONFIG.DESTINATION_DIR, "destination_dir" : headphones.CONFIG.DESTINATION_DIR,
"lossless_dest_dir" : headphones.CONFIG.LOSSLESS_DESTINATION_DIR, "lossless_destination_dir" : headphones.CONFIG.LOSSLESS_DESTINATION_DIR,
"folder_format" : headphones.CONFIG.FOLDER_FORMAT, "folder_format" : headphones.CONFIG.FOLDER_FORMAT,
"file_format" : headphones.CONFIG.FILE_FORMAT, "file_format" : headphones.CONFIG.FILE_FORMAT,
"file_underscores" : checked(headphones.CONFIG.FILE_UNDERSCORES), "file_underscores" : checked(headphones.CONFIG.FILE_UNDERSCORES),
@@ -1061,7 +1061,7 @@ class WebInterface(object):
"encoder": headphones.CONFIG.ENCODER, "encoder": headphones.CONFIG.ENCODER,
"xldprofile": headphones.CONFIG.XLDPROFILE, "xldprofile": headphones.CONFIG.XLDPROFILE,
"bitrate": int(headphones.CONFIG.BITRATE), "bitrate": int(headphones.CONFIG.BITRATE),
"encoderfolder": headphones.CONFIG.ENCODER_PATH, "encoder_path": headphones.CONFIG.ENCODER_PATH,
"advancedencoder": headphones.CONFIG.ADVANCEDENCODER, "advancedencoder": headphones.CONFIG.ADVANCEDENCODER,
"encoderoutputformat": headphones.CONFIG.ENCODEROUTPUTFORMAT, "encoderoutputformat": headphones.CONFIG.ENCODEROUTPUTFORMAT,
"samplingfrequency": headphones.CONFIG.SAMPLINGFREQUENCY, "samplingfrequency": headphones.CONFIG.SAMPLINGFREQUENCY,
@@ -1123,7 +1123,7 @@ class WebInterface(object):
"boxcar_enabled": checked(headphones.CONFIG.BOXCAR_ENABLED), "boxcar_enabled": checked(headphones.CONFIG.BOXCAR_ENABLED),
"boxcar_onsnatch": checked(headphones.CONFIG.BOXCAR_ONSNATCH), "boxcar_onsnatch": checked(headphones.CONFIG.BOXCAR_ONSNATCH),
"boxcar_token": headphones.CONFIG.BOXCAR_TOKEN, "boxcar_token": headphones.CONFIG.BOXCAR_TOKEN,
"mirror_list": headphones.MIRRORLIST, "mirrorlist": headphones.MIRRORLIST,
"mirror": headphones.CONFIG.MIRROR, "mirror": headphones.CONFIG.MIRROR,
"customhost": headphones.CONFIG.CUSTOMHOST, "customhost": headphones.CONFIG.CUSTOMHOST,
"customport": headphones.CONFIG.CUSTOMPORT, "customport": headphones.CONFIG.CUSTOMPORT,
@@ -1140,7 +1140,8 @@ class WebInterface(object):
"mpc_enabled": checked(headphones.CONFIG.MPC_ENABLED) "mpc_enabled": checked(headphones.CONFIG.MPC_ENABLED)
} }
# Need to convert EXTRAS to a dictionary we can pass to the config: it'll come in as a string like 2,5,6,8 (append new extras to the end) # Need to convert EXTRAS to a dictionary we can pass to the config:
# it'll come in as a string like 2,5,6,8
extra_munges = { extra_munges = {
"dj-mix": "dj_mix", "dj-mix": "dj_mix",
"mixtape/street": "mixtape_street" "mixtape/street": "mixtape_street"