mirror of
https://github.com/rembo10/headphones.git
synced 2026-07-20 16:03:59 +01:00
Add initial suport for reencod OGG
This commit is contained in:
@@ -119,6 +119,7 @@ BITRATE = None
|
|||||||
SAMPLINGFREQUENCY = None
|
SAMPLINGFREQUENCY = None
|
||||||
ADVANCEDENCODER = None
|
ADVANCEDENCODER = None
|
||||||
ENCODEROUTPUTFORMAT = None
|
ENCODEROUTPUTFORMAT = None
|
||||||
|
VORBISQUALITY = None
|
||||||
|
|
||||||
def CheckSection(sec):
|
def CheckSection(sec):
|
||||||
""" Check if INI section exists, if not create it """
|
""" 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, \
|
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, \
|
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, \
|
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__:
|
if __INITIALIZED__:
|
||||||
return False
|
return False
|
||||||
@@ -264,8 +265,9 @@ def initialize():
|
|||||||
BITRATE = check_setting_int(CFG, 'General', 'bitrate', 192)
|
BITRATE = check_setting_int(CFG, 'General', 'bitrate', 192)
|
||||||
SAMPLINGFREQUENCY= check_setting_int(CFG, 'General', 'samplingfrequency', 44100)
|
SAMPLINGFREQUENCY= check_setting_int(CFG, 'General', 'samplingfrequency', 44100)
|
||||||
ENCODE = bool(check_setting_int(CFG, 'General', 'encode', 0))
|
ENCODE = bool(check_setting_int(CFG, 'General', 'encode', 0))
|
||||||
ADVANCEDENCODER = check_setting_int(CFG, 'General', 'advancedencoder', '')
|
ADVANCEDENCODER = check_setting_str(CFG, 'General', 'advancedencoder', '')
|
||||||
ENCODEROUTPUTFORMAT = check_setting_int(CFG, 'General', 'encoderoutputformat', 'mp3')
|
ENCODEROUTPUTFORMAT = check_setting_str(CFG, 'General', 'encoderoutputformat', 'mp3')
|
||||||
|
VORBISQUALITY = check_setting_int(CFG, 'General', 'vorbisquality', 60)
|
||||||
|
|
||||||
if not LOG_DIR:
|
if not LOG_DIR:
|
||||||
LOG_DIR = os.path.join(DATA_DIR, 'logs')
|
LOG_DIR = os.path.join(DATA_DIR, 'logs')
|
||||||
@@ -447,6 +449,7 @@ def config_write():
|
|||||||
new_config['General']['encoderfolder'] = ENCODERFOLDER
|
new_config['General']['encoderfolder'] = ENCODERFOLDER
|
||||||
new_config['General']['advancedencoder'] = ADVANCEDENCODER
|
new_config['General']['advancedencoder'] = ADVANCEDENCODER
|
||||||
new_config['General']['encoderoutputformat'] = ENCODEROUTPUTFORMAT
|
new_config['General']['encoderoutputformat'] = ENCODEROUTPUTFORMAT
|
||||||
|
new_config['General']['vorbisquality'] = VORBISQUALITY
|
||||||
|
|
||||||
new_config.write()
|
new_config.write()
|
||||||
|
|
||||||
|
|||||||
+22
-14
@@ -28,7 +28,7 @@ def encode(albumPath):
|
|||||||
|
|
||||||
for r,d,f in os.walk(albumPath):
|
for r,d,f in os.walk(albumPath):
|
||||||
for music in f:
|
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))
|
musicFiles.append(os.path.join(r, music))
|
||||||
musicTemp = os.path.splitext(music)[0]+'.'+headphones.ENCODEROUTPUTFORMAT
|
musicTemp = os.path.splitext(music)[0]+'.'+headphones.ENCODEROUTPUTFORMAT
|
||||||
musicTempFiles.append(os.path.join(tempDirEncode, musicTemp))
|
musicTempFiles.append(os.path.join(tempDirEncode, musicTemp))
|
||||||
@@ -40,6 +40,7 @@ def encode(albumPath):
|
|||||||
i=0
|
i=0
|
||||||
for music in musicFiles:
|
for music in musicFiles:
|
||||||
infoMusic=MediaFile(music)
|
infoMusic=MediaFile(music)
|
||||||
|
|
||||||
if headphones.ENCODER == 'lame':
|
if headphones.ENCODER == 'lame':
|
||||||
if not any(music.endswith('.' +headphones.ENCODEROUTPUTFORMAT) for x in ["mp3", "wav"]):
|
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))
|
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))
|
logger.warn('Music "%s" has bitrate<="%skbit" will not be reencoded' % (music,headphones.BITRATE))
|
||||||
else:
|
else:
|
||||||
command(encoder,music,musicTempFiles[i],albumPath)
|
command(encoder,music,musicTempFiles[i],albumPath)
|
||||||
elif headphones.ENCODER == 'ffmpeg':
|
else:
|
||||||
if (music.endswith('.'+headphones.ENCODEROUTPUTFORMAT) and (infoMusic.bitrate/1000<=headphones.BITRATE)):
|
if headphones.ENCODEROUTPUTFORMAT=='ogg':
|
||||||
logger.warn('Music "%s" has bitrate<="%skbit" will not be reencoded' % (music,headphones.BITRATE))
|
if music.endswith('.ogg'):
|
||||||
else:
|
logger.warn('Can not reencode .ogg music "%s"' % (music))
|
||||||
command(encoder,music,musicTempFiles[i],albumPath)
|
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
|
i=i+1
|
||||||
|
|
||||||
shutil.rmtree(tempDirEncode)
|
shutil.rmtree(tempDirEncode)
|
||||||
@@ -66,20 +73,21 @@ def encode(albumPath):
|
|||||||
|
|
||||||
def command(encoder,musicSource,musicDest,albumPath):
|
def command(encoder,musicSource,musicDest,albumPath):
|
||||||
return_code=1
|
return_code=1
|
||||||
|
cmd=''
|
||||||
if headphones.ENCODER == 'lame':
|
if headphones.ENCODER == 'lame':
|
||||||
cmd=encoder + ' -h --resample ' + str(headphones.SAMPLINGFREQUENCY) + ' -b ' + str(headphones.BITRATE)
|
cmd=encoder + ' -h --resample ' + str(headphones.SAMPLINGFREQUENCY) + ' -b ' + str(headphones.BITRATE)
|
||||||
cmd=cmd+ ' ' + headphones.ADVANCEDENCODER
|
cmd=cmd+ ' ' + headphones.ADVANCEDENCODER
|
||||||
cmd=cmd+ ' "' + musicSource + '"'
|
cmd=cmd+ ' "' + musicSource + '"'
|
||||||
cmd=cmd+ ' "' + musicDest +'"'
|
cmd=cmd+ ' "' + musicDest +'"'
|
||||||
elif headphones.ENCODER == 'ffmpeg':
|
elif headphones.ENCODER == 'ffmpeg':
|
||||||
if headphones.ENCODEROUTPUTFORMAT=='mp3':
|
cmd=encoder+ ' -i'
|
||||||
cmd=encoder+ ' -i'
|
cmd=cmd+ ' "' + musicSource + '"'
|
||||||
cmd=cmd+ ' "' + musicSource + '"'
|
if headphones.ENCODEROUTPUTFORMAT=='ogg':
|
||||||
cmd=cmd+ ' -ac 2 -map_metadata 0:0,s0 -vn -ar ' + str(headphones.SAMPLINGFREQUENCY) + ' -ab ' + str(headphones.BITRATE) + 'k'
|
cmd=cmd+ ' -acodec vorbis -strict experimental'
|
||||||
cmd=cmd+ ' ' + headphones.ADVANCEDENCODER
|
cmd=cmd+ ' -ac 2 -map_metadata 0:0,s0 -vn -ar ' + str(headphones.SAMPLINGFREQUENCY) + ' -ab ' + str(headphones.BITRATE) + 'k'
|
||||||
cmd=cmd+ ' "' + musicDest + '"'
|
cmd=cmd+ ' ' + headphones.ADVANCEDENCODER
|
||||||
|
cmd=cmd+ ' "' + musicDest + '"'
|
||||||
return_code = call(cmd, shell=True)
|
return_code = call(cmd, shell=True)
|
||||||
if return_code==0:
|
if (return_code==0) and (os.path.exists(musicDest)):
|
||||||
os.remove(musicSource)
|
os.remove(musicSource)
|
||||||
shutil.move(musicDest,albumPath)
|
shutil.move(musicDest,albumPath)
|
||||||
Reference in New Issue
Block a user