Add initial suport for reencod OGG

This commit is contained in:
pabloalcantara
2011-08-18 17:03:08 -03:00
parent 776f67bd46
commit 33be00a827
2 changed files with 28 additions and 17 deletions

View File

@@ -119,6 +119,7 @@ BITRATE = None
SAMPLINGFREQUENCY = None
ADVANCEDENCODER = None
ENCODEROUTPUTFORMAT = None
VORBISQUALITY = None
def CheckSection(sec):
""" Check if INI section exists, if not create it """
@@ -178,7 +179,7 @@ def initialize():
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, \
NZBSORG, NZBSORG_UID, NZBSORG_HASH, NEWZBIN, NEWZBIN_UID, NEWZBIN_PASSWORD, LASTFM_USERNAME, INTERFACE, FOLDER_PERMISSIONS, \
ENCODERFOLDER, ENCODER, BITRATE, SAMPLINGFREQUENCY, ENCODE, ADVANCEDENCODER, ENCODEROUTPUTFORMAT
ENCODERFOLDER, ENCODER, BITRATE, SAMPLINGFREQUENCY, ENCODE, ADVANCEDENCODER, ENCODEROUTPUTFORMAT, VORBISQUALITY
if __INITIALIZED__:
return False
@@ -264,8 +265,9 @@ def initialize():
BITRATE = check_setting_int(CFG, 'General', 'bitrate', 192)
SAMPLINGFREQUENCY= check_setting_int(CFG, 'General', 'samplingfrequency', 44100)
ENCODE = bool(check_setting_int(CFG, 'General', 'encode', 0))
ADVANCEDENCODER = check_setting_int(CFG, 'General', 'advancedencoder', '')
ENCODEROUTPUTFORMAT = check_setting_int(CFG, 'General', 'encoderoutputformat', 'mp3')
ADVANCEDENCODER = check_setting_str(CFG, 'General', 'advancedencoder', '')
ENCODEROUTPUTFORMAT = check_setting_str(CFG, 'General', 'encoderoutputformat', 'mp3')
VORBISQUALITY = check_setting_int(CFG, 'General', 'vorbisquality', 60)
if not LOG_DIR:
LOG_DIR = os.path.join(DATA_DIR, 'logs')
@@ -447,6 +449,7 @@ def config_write():
new_config['General']['encoderfolder'] = ENCODERFOLDER
new_config['General']['advancedencoder'] = ADVANCEDENCODER
new_config['General']['encoderoutputformat'] = ENCODEROUTPUTFORMAT
new_config['General']['vorbisquality'] = VORBISQUALITY
new_config.write()

View File

@@ -28,7 +28,7 @@ def encode(albumPath):
for r,d,f in os.walk(albumPath):
for music in f:
if any(music.endswith('.' + x) for x in ["mp3", "flac", "m4a", "wav"]):
if any(music.endswith('.' + x) for x in headphones.MEDIA_FORMATS):
musicFiles.append(os.path.join(r, music))
musicTemp = os.path.splitext(music)[0]+'.'+headphones.ENCODEROUTPUTFORMAT
musicTempFiles.append(os.path.join(tempDirEncode, musicTemp))
@@ -40,6 +40,7 @@ def encode(albumPath):
i=0
for music in musicFiles:
infoMusic=MediaFile(music)
if headphones.ENCODER == 'lame':
if not any(music.endswith('.' +headphones.ENCODEROUTPUTFORMAT) for x in ["mp3", "wav"]):
logger.warn('Lame cant encode "%s" format for "%s", use ffmpeg' % (os.path.splitext(music)[1],music))
@@ -48,11 +49,17 @@ def encode(albumPath):
logger.warn('Music "%s" has bitrate<="%skbit" will not be reencoded' % (music,headphones.BITRATE))
else:
command(encoder,music,musicTempFiles[i],albumPath)
elif headphones.ENCODER == 'ffmpeg':
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)
else:
if headphones.ENCODEROUTPUTFORMAT=='ogg':
if music.endswith('.ogg'):
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)):
logger.warn('Music "%s" has bitrate<="%skbit" will not be reencoded' % (music,headphones.BITRATE))
else:
command(encoder,music,musicTempFiles[i],albumPath)
i=i+1
shutil.rmtree(tempDirEncode)
@@ -66,20 +73,21 @@ def encode(albumPath):
def command(encoder,musicSource,musicDest,albumPath):
return_code=1
cmd=''
if headphones.ENCODER == 'lame':
cmd=encoder + ' -h --resample ' + str(headphones.SAMPLINGFREQUENCY) + ' -b ' + str(headphones.BITRATE)
cmd=cmd+ ' ' + headphones.ADVANCEDENCODER
cmd=cmd+ ' "' + musicSource + '"'
cmd=cmd+ ' "' + musicDest +'"'
elif headphones.ENCODER == 'ffmpeg':
if headphones.ENCODEROUTPUTFORMAT=='mp3':
cmd=encoder+ ' -i'
cmd=cmd+ ' "' + musicSource + '"'
cmd=cmd+ ' -ac 2 -map_metadata 0:0,s0 -vn -ar ' + str(headphones.SAMPLINGFREQUENCY) + ' -ab ' + str(headphones.BITRATE) + 'k'
cmd=cmd+ ' ' + headphones.ADVANCEDENCODER
cmd=cmd+ ' "' + musicDest + '"'
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+ ' ' + headphones.ADVANCEDENCODER
cmd=cmd+ ' "' + musicDest + '"'
return_code = call(cmd, shell=True)
if return_code==0:
if (return_code==0) and (os.path.exists(musicDest)):
os.remove(musicSource)
shutil.move(musicDest,albumPath)