ugly fix for deezer patching their API
This commit is contained in:
parent
5cffc597fe
commit
203f0c9b7e
|
@ -100,10 +100,12 @@ def formatDate(date, template):
|
||||||
return template
|
return template
|
||||||
|
|
||||||
|
|
||||||
def getPreferredBitrate(filesize, bitrate, fallback=True):
|
def getPreferredBitrate(dz, track, bitrate, fallback=True):
|
||||||
if not fallback:
|
if not fallback:
|
||||||
formats = {9: 'flac', 3: 'mp3_320', 1: 'mp3_128', 15: '360_hq', 14: '360_mq', 13: '360_lq'}
|
formats = {9: 'flac', 3: 'mp3_320', 1: 'mp3_128', 15: '360_hq', 14: '360_mq', 13: '360_lq'}
|
||||||
if filesize[formats[int(bitrate)]] > 0:
|
request = get(dz.get_track_stream_url(track['id'], track['MD5'], track['mediaVersion'], bitrate))
|
||||||
|
filesize = request.headers["Content-Length"]
|
||||||
|
if filesize != "0":
|
||||||
return (int(bitrate), filesize[formats[int(bitrate)]])
|
return (int(bitrate), filesize[formats[int(bitrate)]])
|
||||||
else:
|
else:
|
||||||
return (-100, 0)
|
return (-100, 0)
|
||||||
|
@ -112,18 +114,26 @@ def getPreferredBitrate(filesize, bitrate, fallback=True):
|
||||||
selectedFormat = -200
|
selectedFormat = -200
|
||||||
selectedFilesize = 0
|
selectedFilesize = 0
|
||||||
for format, formatNum in formats.items():
|
for format, formatNum in formats.items():
|
||||||
if formatNum <= int(bitrate) and filesize[format] > 0:
|
if formatNum <= int(bitrate):
|
||||||
|
request = get(dz.get_track_stream_url(track['id'], track['MD5'], track['mediaVersion'], formatNum))
|
||||||
|
filesize = request.headers["Content-Length"]
|
||||||
|
if filesize == "0":
|
||||||
|
continue
|
||||||
selectedFormat = formatNum
|
selectedFormat = formatNum
|
||||||
selectedFilesize = filesize[format]
|
selectedFilesize = int(filesize)
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
formats = {'flac': 9, 'mp3_320': 3, 'mp3_128': 1}
|
formats = {'flac': 9, 'mp3_320': 3, 'mp3_128': 1}
|
||||||
selectedFormat = 8
|
selectedFormat = 8
|
||||||
selectedFilesize = filesize['default']
|
selectedFilesize = track['filesize']['default']
|
||||||
for format, formatNum in formats.items():
|
for format, formatNum in formats.items():
|
||||||
if formatNum <= int(bitrate) and filesize[format] > 0:
|
if formatNum <= int(bitrate):
|
||||||
|
request = get(dz.get_track_stream_url(track['id'], track['MD5'], track['mediaVersion'], formatNum))
|
||||||
|
filesize = request.headers["Content-Length"]
|
||||||
|
if filesize == "0":
|
||||||
|
continue
|
||||||
selectedFormat = formatNum
|
selectedFormat = formatNum
|
||||||
selectedFilesize = filesize[format]
|
selectedFilesize = int(filesize)
|
||||||
break
|
break
|
||||||
return (selectedFormat, selectedFilesize)
|
return (selectedFormat, selectedFilesize)
|
||||||
|
|
||||||
|
@ -456,7 +466,7 @@ def downloadTrackObj(dz, trackAPI, settings, bitrate, queueItem, extraTrack=None
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# Get the selected bitrate
|
# Get the selected bitrate
|
||||||
(format, filesize) = getPreferredBitrate(track['filesize'], bitrate, settings['fallbackBitrate'])
|
(format, filesize) = getPreferredBitrate(dz, track, bitrate, settings['fallbackBitrate'])
|
||||||
if format == -100:
|
if format == -100:
|
||||||
print("ERROR: Track not found at desired bitrate. Enable fallback to lower bitrates to fix this issue.")
|
print("ERROR: Track not found at desired bitrate. Enable fallback to lower bitrates to fix this issue.")
|
||||||
result['error'] = {
|
result['error'] = {
|
||||||
|
|
Loading…
Reference in New Issue