diff --git a/android/app/src/main/java/r/r/refreezer/Deezer.java b/android/app/src/main/java/r/r/refreezer/Deezer.java index 316e211..a5e7d29 100644 --- a/android/app/src/main/java/r/r/refreezer/Deezer.java +++ b/android/app/src/main/java/r/r/refreezer/Deezer.java @@ -623,8 +623,7 @@ public static String generateLRC(Lyrics lyricsData, JSONObject publicTrack) thro } } } - - if (counter == 0) throw new Exception("Empty Lyrics!"); + return output.toString(); } diff --git a/android/app/src/main/java/r/r/refreezer/DownloadService.java b/android/app/src/main/java/r/r/refreezer/DownloadService.java index b86e781..1768ce5 100644 --- a/android/app/src/main/java/r/r/refreezer/DownloadService.java +++ b/android/app/src/main/java/r/r/refreezer/DownloadService.java @@ -310,24 +310,6 @@ public void run() { try { trackJson = deezer.callPublicAPI("track", download.trackId); albumJson = deezer.callPublicAPI("album", Integer.toString(trackJson.getJSONObject("album").getInt("id"))); - - try { - lyricsData = deezer.getlyricsNew(download.trackId); - - if (lyricsData.getErrorMessage() != null || !lyricsData.isLoaded()) { - logger.error("Unable the get lyrics from Pipe API: " + lyricsData.getErrorMessage()); - logger.warn("Using classic API for lyrics"); - - JSONObject privateRaw = deezer.callGWAPI("deezer.pageTrack", "{\"sng_id\": \"" + download.trackId + "\"}"); - privateJson = privateRaw.getJSONObject("results").getJSONObject("DATA"); - if (privateRaw.getJSONObject("results").has("LYRICS")) { - lyricsData = new LyricsClassic(privateRaw.getJSONObject("results").getJSONObject("LYRICS")); - } - } - } catch (Exception e) { - logger.error("Unable to fetch lyrics data! " + e, download); - e.printStackTrace(); - } } catch (Exception e) { logger.error("Unable to fetch track and album metadata! " + e, download); e.printStackTrace(); @@ -552,9 +534,32 @@ public void run() { e.printStackTrace(); } - //Lyrics - if (lyricsData != null) { - if (settings.downloadLyrics) { + //Lyrics (fetch only when requested) + if (settings.downloadLyrics || settings.tags.lyrics) { + try { + lyricsData = deezer.getlyricsNew(download.trackId); + + if (!lyricsData.isLoaded()) { + if (lyricsData.getErrorMessage() != null) { + logger.error("Error getting lyrics from Pipe API: " + lyricsData.getErrorMessage(), download); + logger.warn("Trying classic API for lyrics"); + } + + JSONObject privateRaw = deezer.callGWAPI("deezer.pageTrack", "{\"sng_id\": \"" + download.trackId + "\"}"); + privateJson = privateRaw.getJSONObject("results").getJSONObject("DATA"); + if (privateRaw.getJSONObject("results").has("LYRICS")) { + lyricsData = new LyricsClassic(privateRaw.getJSONObject("results").getJSONObject("LYRICS")); + } + } + } catch (Exception e) { + logger.error("Unable to fetch lyrics data! " + e, download); + } + } + + if (settings.downloadLyrics) { + if (lyricsData == null || !lyricsData.isSynced()){ + logger.warn("No synched lyrics for track, skipping lyrics file" , download); + } else { try { String lrcData = Deezer.generateLRC(lyricsData, trackJson); //Create file diff --git a/pubspec.yaml b/pubspec.yaml index 2fd56f5..a316d93 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.7.11 +version: 0.7.12 environment: sdk: ">=3.0.0 <4.0.0" @@ -110,7 +110,7 @@ dependencies: #restart_app: # git: # url: https://github.com/Argaros/restart_app.git - rxdart: ^0.27.7 + rxdart: ^0.28.0 scrobblenaut: path: ./scrobblenaut share_plus: ^9.0.0