diff --git a/deemix/app/downloadjob.py b/deemix/app/downloadjob.py index ff8ca6d..229c60e 100644 --- a/deemix/app/downloadjob.py +++ b/deemix/app/downloadjob.py @@ -70,7 +70,7 @@ def downloadImage(url, path, overwrite="n"): except: sleep(1) return downloadImage(url, path, overwrite) - remove(path) + if os.path.isfile(path): remove(path) return None else: return path @@ -266,16 +266,19 @@ class DownloadJob: track.trackNumber = track.position track.discNumber = "1" track.album = {**track.album, **track.playlist} - track.album['picPath'] = os.path.join(TEMPDIR, f"pl{trackAPI_gw['_EXTRA_PLAYLIST']['id']}_{self.settings['embeddedArtworkSize']}.jpg") + ext = track.playlist['picUrl'][-4:] + if ext[0] != ".": + ext = ".jpg" + track.album['picPath'] = os.path.join(TEMPDIR, f"pl{trackAPI_gw['_EXTRA_PLAYLIST']['id']}_{self.settings['embeddedArtworkSize']}{ext}") else: if track.album['date']: track.date = track.album['date'] track.album['picUrl'] = "https://e-cdns-images.dzcdn.net/images/cover/{}/{}x{}-{}".format( track.album['pic'], self.settings['embeddedArtworkSize'], self.settings['embeddedArtworkSize'], - f'000000-{self.settings["jpegImageQuality"]}-0-0.jpg' - ) - track.album['picPath'] = os.path.join(TEMPDIR, f"alb{track.album['id']}_{self.settings['embeddedArtworkSize']}.jpg") + 'none-100-0-0.png' if self.settings['embeddedArtworkPNG'] else f'000000-{self.settings["jpegImageQuality"]}-0-0.jpg' + ) + track.album['picPath'] = os.path.join(TEMPDIR, f"alb{track.album['id']}_{self.settings['embeddedArtworkSize']}{track.album['picUrl'][-4:]}") track.album['bitrate'] = selectedFormat track.dateString = formatDate(track.date, self.settings['dateFormat']) @@ -333,11 +336,23 @@ class DownloadJob: result['albumURLs'] = [] for format in self.settings['localArtworkFormat'].split(","): if format in ["png","jpg"]: - url = track.album['picUrl'].replace( - f"{self.settings['embeddedArtworkSize']}x{self.settings['embeddedArtworkSize']}", - f"{self.settings['localArtworkSize']}x{self.settings['localArtworkSize']}") - if format == "png": - url = url[:url.find("000000-")]+"none-100-0-0.png" + if self.settings['tags']['savePlaylistAsCompilation'] and track.playlist: + if track.playlist['pic']: + url = "{}/{}x{}-{}".format( + track.album['pic'], + self.settings['localArtworkSize'], self.settings['localArtworkSize'], + 'none-100-0-0.png' if format == "png" else f'000000-{self.settings["jpegImageQuality"]}-0-0.jpg' + ) + else: + url = track.album['picUrl'] + if format != "jpg": + continue + else: + url = "https://e-cdns-images.dzcdn.net/images/cover/{}/{}x{}-{}".format( + track.album['pic'], + self.settings['localArtworkSize'], self.settings['localArtworkSize'], + 'none-100-0-0.png' if format == "png" else f'000000-{self.settings["jpegImageQuality"]}-0-0.jpg' + ) result['albumURLs'].append({'url': url, 'ext': format}) result['albumPath'] = os.path.join(coverPath, f"{settingsRegexAlbum(self.settings['coverImageTemplate'], track.album, self.settings, trackAPI_gw['_EXTRA_PLAYLIST'] if'_EXTRA_PLAYLIST' in trackAPI_gw else None)}") @@ -399,14 +414,14 @@ class DownloadJob: # Save playlist cover if track.playlist: if not len(self.playlistURLs): - if 'dzcdn.net' in track.playlist['picUrl']: + if track.playlist['pic']: for format in self.settings['localArtworkFormat'].split(","): if format in ["png","jpg"]: - url = track.playlist['picUrl'].replace( - f"{self.settings['embeddedArtworkSize']}x{self.settings['embeddedArtworkSize']}", - f"{self.settings['localArtworkSize']}x{self.settings['localArtworkSize']}") - if format == "png": - url = url[:url.find("000000-")]+"none-100-0-0.png" + url = "{}/{}x{}-{}".format( + track.playlist['pic'], + self.settings['localArtworkSize'], self.settings['localArtworkSize'], + 'none-100-0-0.png' if format == "png" else f'000000-{self.settings["jpegImageQuality"]}-0-0.jpg' + ) self.playlistURLs.append({'url': url, 'ext': format}) else: self.playlistURLs.append({'url': track.playlist['picUrl'], 'ext': 'jpg'}) diff --git a/deemix/app/settings.py b/deemix/app/settings.py index dca131a..5770005 100644 --- a/deemix/app/settings.py +++ b/deemix/app/settings.py @@ -47,6 +47,7 @@ class Settings: "playlistFilenameTemplate": "playlist", "syncedLyrics": False, "embeddedArtworkSize": 800, + "embeddedArtworkPNG": False, "localArtworkSize": 1400, "localArtworkFormat": "jpg", "saveArtwork": True, diff --git a/deemix/app/track.py b/deemix/app/track.py index 0fbd866..556b51c 100644 --- a/deemix/app/track.py +++ b/deemix/app/track.py @@ -41,10 +41,14 @@ class Track: if "_EXTRA_PLAYLIST" in trackAPI_gw: self.playlist = {} if 'dzcdn.net' in trackAPI_gw["_EXTRA_PLAYLIST"]['picture_small']: - self.playlist['picUrl'] = trackAPI_gw["_EXTRA_PLAYLIST"]['picture_small'][:-24] + "/{}x{}-{}".format( + self.playlist['pic'] = trackAPI_gw["_EXTRA_PLAYLIST"]['picture_small'][:-24] + self.playlist['picUrl'] = "{}/{}x{}-{}".format( + self.playlist['pic'], settings['embeddedArtworkSize'], settings['embeddedArtworkSize'], - f'000000-{settings["jpegImageQuality"]}-0-0.jpg') + 'none-100-0-0.png' if settings['embeddedArtworkPNG'] else f'000000-{settings["jpegImageQuality"]}-0-0.jpg' + ) else: + self.playlist['pic'] = None self.playlist['picUrl'] = trackAPI_gw["_EXTRA_PLAYLIST"]['picture_xl'] self.playlist['title'] = trackAPI_gw["_EXTRA_PLAYLIST"]['title'] self.playlist['mainArtist'] = {