Replaced PNGcovers with localArtworkFormat

Forced embedded artwork to jpg as png artwork is buggy
localArtworkFormat is a comma separated list of the local cover formats 
you want
This commit is contained in:
RemixDev 2020-07-18 18:01:18 +02:00
parent 492b1dbc23
commit 2dfedcb18f
2 changed files with 52 additions and 31 deletions

View File

@ -28,11 +28,11 @@
"syncedLyrics": false, "syncedLyrics": false,
"embeddedArtworkSize": 800, "embeddedArtworkSize": 800,
"localArtworkSize": 1400, "localArtworkSize": 1400,
"localArtworkFormat": "jpg",
"saveArtwork": true, "saveArtwork": true,
"coverImageTemplate": "cover", "coverImageTemplate": "cover",
"saveArtworkArtist": false, "saveArtworkArtist": false,
"artistImageTemplate": "folder", "artistImageTemplate": "folder",
"PNGcovers": false,
"jpegImageQuality": 80, "jpegImageQuality": 80,
"dateFormat": "Y-M-D", "dateFormat": "Y-M-D",
"albumVariousArtists": true, "albumVariousArtists": true,
@ -70,6 +70,6 @@
"useNullSeparator": false, "useNullSeparator": false,
"saveID3v1": true, "saveID3v1": true,
"multiArtistSeparator": "default", "multiArtistSeparator": "default",
"singleAlbumArtist": false, "singleAlbumArtist": false
} }
} }

View File

@ -612,7 +612,7 @@ def downloadTrackObj(dz, trackAPI, settings, bitrate, queueItem, extraTrack=None
if 'dzcdn.net' in trackAPI["_EXTRA_PLAYLIST"]['picture_small']: if 'dzcdn.net' in trackAPI["_EXTRA_PLAYLIST"]['picture_small']:
track['playlist']['picUrl'] = trackAPI["_EXTRA_PLAYLIST"]['picture_small'][:-24] + "/{}x{}-{}".format( track['playlist']['picUrl'] = trackAPI["_EXTRA_PLAYLIST"]['picture_small'][:-24] + "/{}x{}-{}".format(
settings['embeddedArtworkSize'], settings['embeddedArtworkSize'], settings['embeddedArtworkSize'], settings['embeddedArtworkSize'],
'none-100-0-0.png' if settings['PNGcovers'] else f'000000-{settings["jpegImageQuality"]}-0-0.jpg') f'000000-{settings["jpegImageQuality"]}-0-0.jpg')
else: else:
track['playlist']['picUrl'] = trackAPI["_EXTRA_PLAYLIST"]['picture_xl'] track['playlist']['picUrl'] = trackAPI["_EXTRA_PLAYLIST"]['picture_xl']
track['playlist']['title'] = trackAPI["_EXTRA_PLAYLIST"]['title'] track['playlist']['title'] = trackAPI["_EXTRA_PLAYLIST"]['title']
@ -648,7 +648,7 @@ def downloadTrackObj(dz, trackAPI, settings, bitrate, queueItem, extraTrack=None
track['date'] = track['album']['date'] track['date'] = track['album']['date']
track['album']['picUrl'] = "https://e-cdns-images.dzcdn.net/images/cover/{}/{}x{}-{}".format( track['album']['picUrl'] = "https://e-cdns-images.dzcdn.net/images/cover/{}/{}x{}-{}".format(
track['album']['pic'], settings['embeddedArtworkSize'], settings['embeddedArtworkSize'], track['album']['pic'], settings['embeddedArtworkSize'], settings['embeddedArtworkSize'],
'none-100-0-0.png' if settings['PNGcovers'] else f'000000-{settings["jpegImageQuality"]}-0-0.jpg') f'000000-{settings["jpegImageQuality"]}-0-0.jpg')
track['album']['bitrate'] = format track['album']['bitrate'] = format
track['dateString'] = formatDate(track['date'], settings['dateFormat']) track['dateString'] = formatDate(track['date'], settings['dateFormat'])
track['album']['dateString'] = formatDate(track['album']['date'], settings['dateFormat']) track['album']['dateString'] = formatDate(track['album']['date'], settings['dateFormat'])
@ -700,10 +700,10 @@ def downloadTrackObj(dz, trackAPI, settings, bitrate, queueItem, extraTrack=None
# Download and cache coverart # Download and cache coverart
if settings['tags']['savePlaylistAsCompilation'] and "_EXTRA_PLAYLIST" in trackAPI: if settings['tags']['savePlaylistAsCompilation'] and "_EXTRA_PLAYLIST" in trackAPI:
track['album']['picPath'] = os.path.join(TEMPDIR, track['album']['picPath'] = os.path.join(TEMPDIR,
f"pl{trackAPI['_EXTRA_PLAYLIST']['id']}_{settings['embeddedArtworkSize']}.{'png' if settings['PNGcovers'] else 'jpg'}") f"pl{trackAPI['_EXTRA_PLAYLIST']['id']}_{settings['embeddedArtworkSize']}.jpg")
else: else:
track['album']['picPath'] = os.path.join(TEMPDIR, track['album']['picPath'] = os.path.join(TEMPDIR,
f"alb{track['album']['id']}_{settings['embeddedArtworkSize']}.{'png' if settings['PNGcovers'] else 'jpg'}") f"alb{track['album']['id']}_{settings['embeddedArtworkSize']}.jpg")
logger.info(f"[{track['mainArtist']['name']} - {track['title']}] Getting the album cover") logger.info(f"[{track['mainArtist']['name']} - {track['title']}] Getting the album cover")
track['album']['picPath'] = downloadImage(track['album']['picUrl'], track['album']['picPath']) track['album']['picPath'] = downloadImage(track['album']['picUrl'], track['album']['picPath'])
@ -722,42 +722,58 @@ def downloadTrackObj(dz, trackAPI, settings, bitrate, queueItem, extraTrack=None
# Save local album art # Save local album art
if coverPath: if coverPath:
result['albumURL'] = track['album']['picUrl'].replace( result['albumURLs'] = []
for format in settings['localArtworkFormat'].split(","):
if format in ["png","jpg"]:
url = track['album']['picUrl'].replace(
f"{settings['embeddedArtworkSize']}x{settings['embeddedArtworkSize']}", f"{settings['embeddedArtworkSize']}x{settings['embeddedArtworkSize']}",
f"{settings['localArtworkSize']}x{settings['localArtworkSize']}") f"{settings['localArtworkSize']}x{settings['localArtworkSize']}")
if format == "png":
url = url[:url.find("000000-")]+"none-100-0-0.png"
result['albumURLs'].append({'url': url, 'ext': format})
result['albumPath'] = os.path.join(coverPath, result['albumPath'] = os.path.join(coverPath,
f"{settingsRegexAlbum(settings['coverImageTemplate'], track['album'], settings, trackAPI['_EXTRA_PLAYLIST'] if'_EXTRA_PLAYLIST' in trackAPI else None)}.{'png' if settings['PNGcovers'] else 'jpg'}") f"{settingsRegexAlbum(settings['coverImageTemplate'], track['album'], settings, trackAPI['_EXTRA_PLAYLIST'] if'_EXTRA_PLAYLIST' in trackAPI else None)}")
# Save artist art # Save artist art
if artistPath: if artistPath:
result['artistURLs'] = []
for format in settings['localArtworkFormat'].split(","):
if format in ["png","jpg"]:
url = ""
if track['album']['mainArtist']['pic'] != "": if track['album']['mainArtist']['pic'] != "":
result['artistURL'] = "https://e-cdns-images.dzcdn.net/images/artist/{}/{}x{}-{}".format( url = "https://e-cdns-images.dzcdn.net/images/artist/{}/{}x{}-{}".format(
track['album']['mainArtist']['pic'], settings['localArtworkSize'], settings['localArtworkSize'], track['album']['mainArtist']['pic'], settings['localArtworkSize'], settings['localArtworkSize'],
'none-100-0-0.png' if settings['PNGcovers'] else f'000000-{settings["jpegImageQuality"]}-0-0.jpg') 'none-100-0-0.png' if format == "png" else f'000000-{settings["jpegImageQuality"]}-0-0.jpg')
result['artistPath'] = os.path.join(artistPath, elif format == "jpg":
f"{settingsRegexArtist(settings['artistImageTemplate'], track['album']['mainArtist'], settings)}.{'png' if settings['PNGcovers'] else 'jpg'}") url = "https://e-cdns-images.dzcdn.net/images/artist//{}x{}-{}".format(
else:
result['artistURL'] = "https://e-cdns-images.dzcdn.net/images/artist//{}x{}-{}".format(
settings['localArtworkSize'], settings['localArtworkSize'], f'000000-{settings["jpegImageQuality"]}-0-0.jpg') settings['localArtworkSize'], settings['localArtworkSize'], f'000000-{settings["jpegImageQuality"]}-0-0.jpg')
if url:
result['artistURLs'].append({'url': url, 'ext': format})
result['artistPath'] = os.path.join(artistPath, result['artistPath'] = os.path.join(artistPath,
f"{settingsRegexArtist(settings['artistImageTemplate'], track['album']['mainArtist'], settings)}.jpg") f"{settingsRegexArtist(settings['artistImageTemplate'], track['album']['mainArtist'], settings)}")
# Data for m3u file # Data for m3u file
if extrasPath: if extrasPath:
result['extrasPath'] = extrasPath result['extrasPath'] = extrasPath
result['playlistPosition'] = writepath[len(extrasPath):] result['playlistPosition'] = writepath[len(extrasPath):]
if "playlist" in track: if "playlist" in track:
result['playlistURLs'] = []
if 'dzcdn.net' in track['playlist']['picUrl']: if 'dzcdn.net' in track['playlist']['picUrl']:
result['playlistURL'] = track['playlist']['picUrl'].replace( for format in settings['localArtworkFormat'].split(","):
if format in ["png","jpg"]:
url = track['playlist']['picUrl'].replace(
f"{settings['embeddedArtworkSize']}x{settings['embeddedArtworkSize']}", f"{settings['embeddedArtworkSize']}x{settings['embeddedArtworkSize']}",
f"{settings['localArtworkSize']}x{settings['localArtworkSize']}") f"{settings['localArtworkSize']}x{settings['localArtworkSize']}")
if format == "png":
url = url[:url.find("000000-")]+"none-100-0-0.png"
result['playlistURLs'].append({'url': url, 'ext': format})
else: else:
result['playlistURL'] = track['playlist']['picUrl'] result['playlistURLs'].append({'url': track['playlist']['picUrl'], 'ext': 'jpg'})
track['playlist']['id'] = "pl_" + str(trackAPI['_EXTRA_PLAYLIST']['id']) track['playlist']['id'] = "pl_" + str(trackAPI['_EXTRA_PLAYLIST']['id'])
track['playlist']['genre'] = ["Compilation", ] track['playlist']['genre'] = ["Compilation", ]
track['playlist']['bitrate'] = format track['playlist']['bitrate'] = format
track['playlist']['dateString'] = formatDate(track['playlist']['date'], settings['dateFormat']) track['playlist']['dateString'] = formatDate(track['playlist']['date'], settings['dateFormat'])
result['playlistCover'] = f"{settingsRegexAlbum(settings['coverImageTemplate'], track['playlist'], settings, trackAPI['_EXTRA_PLAYLIST'])}.{'png' if settings['PNGcovers'] else 'jpg'}" result['playlistCover'] = f"{settingsRegexAlbum(settings['coverImageTemplate'], track['playlist'], settings, trackAPI['_EXTRA_PLAYLIST'])}"
track['downloadUrl'] = dz.get_track_stream_url(track['id'], track['MD5'], track['mediaVersion'], track['downloadUrl'] = dz.get_track_stream_url(track['id'], track['MD5'], track['mediaVersion'],
track['selectedFormat']) track['selectedFormat'])
@ -941,9 +957,11 @@ def after_download(tracks, settings, queueItem):
playlistCover = result['playlistCover'] playlistCover = result['playlistCover']
playlistURL = result['playlistURL'] playlistURL = result['playlistURL']
if settings['saveArtwork'] and 'albumPath' in result: if settings['saveArtwork'] and 'albumPath' in result:
downloadImage(result['albumURL'], result['albumPath'], settings['overwriteFile']) for image in result['albumURLs']:
downloadImage(image['url'], f"{result['albumPath']}.{image['ext']}", settings['overwriteFile'])
if settings['saveArtworkArtist'] and 'artistPath' in result: if settings['saveArtworkArtist'] and 'artistPath' in result:
downloadImage(result['artistURL'], result['artistPath'], settings['overwriteFile']) for image in result['artistURLs']:
downloadImage(image['url'], f"{result['artistPath']}.{image['ext']}", settings['overwriteFile'])
if 'playlistPosition' in result: if 'playlistPosition' in result:
playlist[index] = result['playlistPosition'] playlist[index] = result['playlistPosition']
else: else:
@ -954,7 +972,8 @@ def after_download(tracks, settings, queueItem):
with open(os.path.join(extrasPath, 'errors.txt'), 'wb') as f: with open(os.path.join(extrasPath, 'errors.txt'), 'wb') as f:
f.write(errors.encode('utf-8')) f.write(errors.encode('utf-8'))
if settings['saveArtwork'] and playlistCover and not settings['tags']['savePlaylistAsCompilation']: if settings['saveArtwork'] and playlistCover and not settings['tags']['savePlaylistAsCompilation']:
downloadImage(playlistURL, os.path.join(extrasPath, playlistCover), settings['overwriteFile']) for image in result['playlistURLs']:
downloadImage(image['url'], os.path.join(extrasPath, playlistCover)+f".{image['ext']}", settings['overwriteFile'])
if settings['logSearched'] and searched != "": if settings['logSearched'] and searched != "":
with open(os.path.join(extrasPath, 'searched.txt'), 'wb') as f: with open(os.path.join(extrasPath, 'searched.txt'), 'wb') as f:
f.write(searched.encode('utf-8')) f.write(searched.encode('utf-8'))
@ -974,9 +993,11 @@ def after_download_single(track, settings, queueItem):
if 'extrasPath' not in track: if 'extrasPath' not in track:
track['extrasPath'] = settings['downloadLocation'] track['extrasPath'] = settings['downloadLocation']
if settings['saveArtwork'] and 'albumPath' in track: if settings['saveArtwork'] and 'albumPath' in track:
downloadImage(track['albumURL'], track['albumPath'], settings['overwriteFile']) for image in result['albumURLs']:
downloadImage(image['url'], f"{result['albumPath']}.{image['ext']}", settings['overwriteFile'])
if settings['saveArtworkArtist'] and 'artistPath' in track: if settings['saveArtworkArtist'] and 'artistPath' in track:
downloadImage(track['artistURL'], track['artistPath'], settings['overwriteFile']) for image in result['artistURLs']:
downloadImage(image['url'], f"{result['artistPath']}.{image['ext']}", settings['overwriteFile'])
if settings['logSearched'] and 'searched' in track: if settings['logSearched'] and 'searched' in track:
with open(os.path.join(track['extrasPath'], 'searched.txt'), 'wb+') as f: with open(os.path.join(track['extrasPath'], 'searched.txt'), 'wb+') as f:
orig = f.read().decode('utf-8') orig = f.read().decode('utf-8')