From 7f1a34f859a8a471e0efee5d4566d057a48e22ad Mon Sep 17 00:00:00 2001 From: RemixDev Date: Sat, 29 Feb 2020 21:22:44 +0100 Subject: [PATCH] Implemented save sync lyrics --- deemix/api/deezer.py | 16 +--------------- deemix/app/downloader.py | 13 ++++++++++--- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/deemix/api/deezer.py b/deemix/api/deezer.py index 79bca07..82295d0 100755 --- a/deemix/api/deezer.py +++ b/deemix/api/deezer.py @@ -191,21 +191,7 @@ class Deezer: def get_lyrics_gw(self, sng_id): body = self.gw_api_call('song.getLyrics', {'sng_id': sng_id}) - lyr = { - 'unsyncLyrics': { - 'description': "", - 'lyrics': body["results"]["LYRICS_TEXT"] - }, - 'syncLyrics': "", - } - for i in range(len(body["results"]["LYRICS_SYNC_JSON"])): - if "lrc_timestamp" in body["results"]["LYRICS_SYNC_JSON"][i]: - lyr['syncLyrics'] += body["results"]["LYRICS_SYNC_JSON"][i]["lrc_timestamp"] + \ - body["results"]["LYRICS_SYNC_JSON"][i]["line"] + "\r\n" - elif i + 1 < len(body["results"]["LYRICS_SYNC_JSON"]): - lyr['syncLyrics'] += body["results"]["LYRICS_SYNC_JSON"][i + 1]["lrc_timestamp"] + \ - body["results"]["LYRICS_SYNC_JSON"][i]["line"] + "\r\n" - return lyr + return body["results"] def get_user_playlist(self, user_id): body = self.api_call('user/' + str(user_id) + '/playlists', {'limit': -1}) diff --git a/deemix/app/downloader.py b/deemix/app/downloader.py index d9a9275..f789a93 100644 --- a/deemix/app/downloader.py +++ b/deemix/app/downloader.py @@ -124,7 +124,9 @@ def getTrackData(trackAPI_gw, trackAPI = None, albumAPI_gw = None, albumAPI = No track['lyrics'] = {} if 'LYRICS_ID' in trackAPI_gw: track['lyrics']['id'] = trackAPI_gw['LYRICS_ID'] - if "LYRICS" in trackAPI_gw: + if not "LYRICS" in trackAPI_gw and int(track['lyrics']['id']) != 0: + trackAPI_gw["LYRICS"] = dz.get_lyrics_gw(track['id']) + if int(track['lyrics']['id']) != 0: if "LYRICS_TEXT" in trackAPI_gw["LYRICS"]: track['lyrics']['unsync'] = trackAPI_gw["LYRICS"]["LYRICS_TEXT"] if "LYRICS_SYNC_JSON" in trackAPI_gw["LYRICS"]: @@ -256,7 +258,7 @@ def downloadTrackObj(trackAPI, settings, overwriteBitrate=False, extraTrack=None track['album']['picUrl'] = "http://e-cdn-images.deezer.com/images/cover/{}/{}x{}-000000-80-0-0.{}".format(track['album']['pic'], settings['embeddedArtworkSize'], settings['embeddedArtworkSize'], 'png' if settings['PNGcovers'] else 'jpg') # Generate filename and filepath from metadata - filename = generateFilename(track, trackAPI, settings) + extensions[track['selectedFormat']] + filename = generateFilename(track, trackAPI, settings) (filepath, artistPath, coverPath, extrasPath) = generateFilepath(track, trackAPI, settings) # Download and cache coverart @@ -269,7 +271,12 @@ def downloadTrackObj(trackAPI, settings, overwriteBitrate=False, extraTrack=None track['album']['picPath'] = None makedirs(filepath, exist_ok=True) - writepath = os.path.join(filepath, filename) + writepath = os.path.join(filepath, filename + extensions[track['selectedFormat']]) + + # Save lyrics in lrc file + if settings['syncedLyrics'] and 'sync' in track['lyrics']: + with open(os.path.join(filepath, filename + '.lrc'), 'w') as f: + f.write(track['lyrics']['sync']) track['downloadUrl'] = dz.get_track_stream_url(track['id'], track['MD5'], track['mediaVersion'], track['selectedFormat']) with open(writepath, 'wb') as stream: