diff --git a/data/interfaces/default/config.html b/data/interfaces/default/config.html index 1a5c113c..0d46458e 100644 --- a/data/interfaces/default/config.html +++ b/data/interfaces/default/config.html @@ -260,7 +260,7 @@

Re-Encoding Options:


-

Convert Lossless to mp3

+

Re-encode Postprocessed Albuns

Note: this option requires the lame or ffmpeg encoder

<% @@ -269,14 +269,88 @@ ffmpegselect = '' else: lameselect = '' - ffmpegselect = 'selected="selected"' + ffmpegselect = 'selected="selected"' %> -

Encoder: - Bitrate: kbps
+ + <% + if config['encoderoutputformat'] == 'ogg': + oggselect = 'selected="selected"' + mp3select = '' + m4aselect = '' + elif config['encoderoutputformat'] == 'm4a': + oggselect = '' + m4aselect = 'selected="selected"' + mp3select = '' + else: + oggselect = '' + m4aselect = '' + mp3select = 'selected="selected"' + %> + Format:

+
+ <% + if config["bitrate"] == 64: + bitrate64select = 'selected="selected"' + bitrate128select = '' + bitrate192select = '' + bitrate256select = '' + bitrate320select = '' + elif config["bitrate"] == 128: + bitrate64select = '' + bitrate128select = 'selected="selected"' + bitrate192select = '' + bitrate256select = '' + bitrate320select = '' + elif config["bitrate"] == 192: + bitrate64select = '' + bitrate128select = '' + bitrate192select = 'selected="selected"' + bitrate256select = '' + bitrate320select = '' + elif config["bitrate"] == 256: + bitrate64select = '' + bitrate128select = '' + bitrate192select = '' + bitrate256select = 'selected="selected"' + bitrate320select = '' + else: + bitrate64select = '' + bitrate128select = '' + bitrate192select = '' + bitrate256select = '' + bitrate320select = 'selected="selected"' + %> +

Bitrate: + + <% + if config["samplingfrequency"] == 44100: + freq44100 = 'selected="selected"' + freq48000 = '' + else: + freq44100 = '' + freq48000 = 'selected="selected"' + %> + Sampling:

+
+

Advance Encode Options:


Path to Encoder:

@@ -287,5 +361,5 @@


(Web Interface changes require a restart to take effect) - +  diff --git a/data/interfaces/remix/config.html b/data/interfaces/remix/config.html index 07763d08..f9aab2cc 100644 --- a/data/interfaces/remix/config.html +++ b/data/interfaces/remix/config.html @@ -260,8 +260,8 @@

Re-Encoding Options:


-

Convert Lossless to mp3

- Note: this option requires the lame or ffdshow encoder +

Re-encode Postprocessed Albuns

+ Note: this option requires the lame or ffmpeg encoder

<% if config['encoder'] == 'lame': @@ -269,14 +269,88 @@ ffmpegselect = '' else: lameselect = '' - ffmpegselect = 'selected="selected"' + ffmpegselect = 'selected="selected"' %> -

Encoder: - Bitrate: kbps
+ + <% + if config['encoderoutputformat'] == 'ogg': + oggselect = 'selected="selected"' + mp3select = '' + m4aselect = '' + elif config['encoderoutputformat'] == 'm4a': + oggselect = '' + m4aselect = 'selected="selected"' + mp3select = '' + else: + oggselect = '' + m4aselect = '' + mp3select = 'selected="selected"' + %> + Format:

+
+ <% + if config["bitrate"] == 64: + bitrate64select = 'selected="selected"' + bitrate128select = '' + bitrate192select = '' + bitrate256select = '' + bitrate320select = '' + elif config["bitrate"] == 128: + bitrate64select = '' + bitrate128select = 'selected="selected"' + bitrate192select = '' + bitrate256select = '' + bitrate320select = '' + elif config["bitrate"] == 192: + bitrate64select = '' + bitrate128select = '' + bitrate192select = 'selected="selected"' + bitrate256select = '' + bitrate320select = '' + elif config["bitrate"] == 256: + bitrate64select = '' + bitrate128select = '' + bitrate192select = '' + bitrate256select = 'selected="selected"' + bitrate320select = '' + else: + bitrate64select = '' + bitrate128select = '' + bitrate192select = '' + bitrate256select = '' + bitrate320select = 'selected="selected"' + %> +

Bitrate: + + <% + if config["samplingfrequency"] == 44100: + freq44100 = 'selected="selected"' + freq48000 = '' + else: + freq44100 = '' + freq48000 = 'selected="selected"' + %> + Sampling:

+
+

Advance Encode Options:


Path to Encoder:

@@ -288,4 +362,4 @@


(Web Interface changes require a restart to take effect) - + \ No newline at end of file diff --git a/headphones/__init__.py b/headphones/__init__.py index ab59ae4d..e46f8c0e 100755 --- a/headphones/__init__.py +++ b/headphones/__init__.py @@ -444,8 +444,8 @@ def config_write(): new_config['General']['encode'] = int(ENCODE) new_config['General']['encoder'] = ENCODER - new_config['General']['bitrate'] = BITRATE - new_config['General']['samplingfrequency'] = SAMPLINGFREQUENCY + new_config['General']['bitrate'] = int(BITRATE) + new_config['General']['samplingfrequency'] = int(SAMPLINGFREQUENCY) new_config['General']['encoderfolder'] = ENCODERFOLDER new_config['General']['advancedencoder'] = ADVANCEDENCODER new_config['General']['encoderoutputformat'] = ENCODEROUTPUTFORMAT diff --git a/headphones/encode.py b/headphones/encode.py index 77a435b4..27ec44b3 100644 --- a/headphones/encode.py +++ b/headphones/encode.py @@ -55,8 +55,8 @@ def encode(albumPath): logger.warn('Can not reencode .ogg music "%s"' % (music)) else: command(encoder,music,musicTempFiles[i],albumPath) - elif (headphones.ENCODEROUTPUTFORMAT=='mp3'): - if (music.endswith('.mp3') and (infoMusic.bitrate/1000<=headphones.BITRATE)): + elif (headphones.ENCODEROUTPUTFORMAT=='mp3' or headphones.ENCODEROUTPUTFORMAT=='m4a'): + if (music.endswith('.'+headphones.ENCODEROUTPUTFORMAT) and (infoMusic.bitrate/1000<=headphones.BITRATE)): logger.warn('Music "%s" has bitrate<="%skbit" will not be reencoded' % (music,headphones.BITRATE)) else: command(encoder,music,musicTempFiles[i],albumPath) @@ -83,8 +83,10 @@ def command(encoder,musicSource,musicDest,albumPath): cmd=encoder+ ' -i' cmd=cmd+ ' "' + musicSource + '"' if headphones.ENCODEROUTPUTFORMAT=='ogg': - cmd=cmd+ ' -acodec vorbis -strict experimental' - cmd=cmd+ ' -ac 2 -map_metadata 0:0,s0 -vn -ar ' + str(headphones.SAMPLINGFREQUENCY) + ' -ab ' + str(headphones.BITRATE) + 'k' + cmd=cmd+ ' -acodec libvorbis' + if headphones.ENCODEROUTPUTFORMAT=='m4a': + cmd=cmd+ ' -strict experimental' + cmd=cmd+ ' -y -ac 2 -map_metadata 0:0,s0 -vn -ar ' + str(headphones.SAMPLINGFREQUENCY) + ' -ab ' + str(headphones.BITRATE) + 'k' cmd=cmd+ ' ' + headphones.ADVANCEDENCODER cmd=cmd+ ' "' + musicDest + '"' return_code = call(cmd, shell=True) diff --git a/headphones/version.py b/headphones/version.py index 0dda129e..b6c5af53 100644 --- a/headphones/version.py +++ b/headphones/version.py @@ -1 +1 @@ -HEADPHONES_VERSION = "master" \ No newline at end of file +HEADPHONES_VERSION = "develop" \ No newline at end of file diff --git a/headphones/webserve.py b/headphones/webserve.py index 42db5f84..17c4f5aa 100644 --- a/headphones/webserve.py +++ b/headphones/webserve.py @@ -352,9 +352,11 @@ class WebInterface(object): "interface_list" : interface_list, "encode": checked(headphones.ENCODE), "encoder": headphones.ENCODER, - "bitrate": headphones.BITRATE, + "bitrate": int(headphones.BITRATE), "encoderfolder": headphones.ENCODERFOLDER, - "advancedencoder": headphones.ADVANCEDENCODER + "advancedencoder": headphones.ADVANCEDENCODER, + "encoderoutputformat": headphones.ENCODEROUTPUTFORMAT, + "samplingfrequency": int(headphones.SAMPLINGFREQUENCY) } return serve_template(templatename="config.html", title="Settings", config=config) config.exposed = True @@ -365,7 +367,7 @@ class WebInterface(object): usenet_retention=None, nzbmatrix=0, nzbmatrix_username=None, nzbmatrix_apikey=None, newznab=0, newznab_host=None, newznab_apikey=None, nzbsorg=0, nzbsorg_uid=None, nzbsorg_hash=None, newzbin=0, newzbin_uid=None, newzbin_password=None, preferred_quality=0, preferred_bitrate=None, detect_bitrate=0, move_files=0, rename_files=0, correct_metadata=0, cleanup_files=0, add_album_art=0, embed_album_art=0, destination_dir=None, folder_format=None, file_format=None, include_extras=0, interface=None, log_dir=None, - encode=0, encoder=None, bitrate=None, encoderfolder=None, advancedencoder=None): + encode=0, encoder=None, bitrate=None, samplingfrequency=None, encoderfolder=None, advancedencoder=None, encoderoutputformat=None): headphones.HTTP_HOST = http_host headphones.HTTP_PORT = http_port @@ -410,9 +412,11 @@ class WebInterface(object): headphones.LOG_DIR = log_dir headphones.ENCODE = encode headphones.ENCODER = encoder - headphones.BITRATE = bitrate + headphones.BITRATE = int(bitrate) + headphones.SAMPLINGFREQUENCY = int(samplingfrequency) headphones.ENCODERFOLDER = encoderfolder headphones.ADVANCEDENCODER = advancedencoder + headphones.ENCODEROUTPUTFORMAT = encoderoutputformat headphones.config_write()