diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 194f297..ecd50f0 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,6 +4,7 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/LyricsProviderService.kt b/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/LyricsProviderService.kt
index 23a81e2..87de702 100644
--- a/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/LyricsProviderService.kt
+++ b/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/LyricsProviderService.kt
@@ -52,11 +52,11 @@ class LyricsProviderService {
UnknownHostException::class, FileNotFoundException::class, NoTrackFoundException::class,
EmptyQueryException::class, InternalErrorException::class
)
- suspend fun getSongInfo(query: SongInfo, offset: Int? = 0, provider: Providers): SongInfo? {
+ suspend fun getSongInfo(query: SongInfo, offset: Int = 0, provider: Providers): SongInfo? {
return try {
when (provider) {
Providers.SPOTIFY -> spotifyAPI.getSongInfo(query, offset)
- Providers.LRCLIB -> LRCLibAPI().getSongInfo(query).also {
+ Providers.LRCLIB -> LRCLibAPI().getSongInfo(query, offset).also {
lrcLibID = it?.lrcLibID ?: 0
} ?: throw NoTrackFoundException()
@@ -68,7 +68,7 @@ class LyricsProviderService {
appleID = it?.appleID ?: 0
} ?: throw NoTrackFoundException()
- Providers.MUSIXMATCH -> MusixmatchAPI().getSongInfo(query).also {
+ Providers.MUSIXMATCH -> MusixmatchAPI().getSongInfo(query, offset).also {
musixmatchSongInfo = it
} ?: throw NoTrackFoundException()
}
diff --git a/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/others/LRCLibAPI.kt b/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/others/LRCLibAPI.kt
index 43a4a9e..f09c355 100644
--- a/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/others/LRCLibAPI.kt
+++ b/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/others/LRCLibAPI.kt
@@ -20,7 +20,7 @@ class LRCLibAPI {
* @param query The SongInfo object with songName and artistName fields filled.
* @return Search result as a SongInfo object.
*/
- suspend fun getSongInfo(query: SongInfo): SongInfo? {
+ suspend fun getSongInfo(query: SongInfo, offset: Int = 0): SongInfo? {
val search = withContext(Dispatchers.IO) {
URLEncoder.encode(
"${query.songName}", // it doesn't work with artist name and song name together
@@ -41,10 +41,16 @@ class LRCLibAPI {
val json = json.decodeFromString>(responseBody)
+ val song = try {
+ json[offset]
+ } catch (e: IndexOutOfBoundsException) {
+ return null
+ }
+
return SongInfo(
- songName = json[0].trackName,
- artistName = json[0].artistName,
- lrcLibID = json[0].id
+ songName = song.trackName,
+ artistName = song.artistName,
+ lrcLibID = song.id
)
}
diff --git a/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/others/MusixmatchAPI.kt b/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/others/MusixmatchAPI.kt
index f7501cb..57c5159 100644
--- a/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/others/MusixmatchAPI.kt
+++ b/app/src/main/java/pl/lambada/songsync/data/remote/lyrics_providers/others/MusixmatchAPI.kt
@@ -19,7 +19,7 @@ class MusixmatchAPI {
* @param query The SongInfo object with songName and artistName fields filled.
* @return Search result as a SongInfo object.
*/
- suspend fun getSongInfo(query: SongInfo): SongInfo? {
+ suspend fun getSongInfo(query: SongInfo, offset: Int = 0): SongInfo? {
val artistName = withContext(Dispatchers.IO) {
URLEncoder.encode(
"${query.artistName}",
@@ -46,7 +46,7 @@ class MusixmatchAPI {
return null
val result = json.decodeFromString(responseBody)
-
+
return SongInfo(
songName = result.songName,
artistName = result.artistName,
diff --git a/app/src/main/java/pl/lambada/songsync/ui/screens/lyricsFetch/LyricsFetchScreen.kt b/app/src/main/java/pl/lambada/songsync/ui/screens/lyricsFetch/LyricsFetchScreen.kt
index 59b3ba9..57dd6f7 100644
--- a/app/src/main/java/pl/lambada/songsync/ui/screens/lyricsFetch/LyricsFetchScreen.kt
+++ b/app/src/main/java/pl/lambada/songsync/ui/screens/lyricsFetch/LyricsFetchScreen.kt
@@ -175,8 +175,9 @@ fun SharedTransitionScope.LyricsFetchScreen(
lyricsFetchState = viewModel.lyricsFetchState,
animatedVisibilityScope = animatedVisibilityScope,
disableMarquee = viewModel.userSettingsController.disableMarquee,
- allowTryingAgain = viewModel.userSettingsController.selectedProvider != Providers.LRCLIB
- && viewModel.userSettingsController.selectedProvider != Providers.APPLE
+ allowTryingAgain =
+ viewModel.userSettingsController.selectedProvider != Providers.APPLE &&
+ viewModel.userSettingsController.selectedProvider != Providers.MUSIXMATCH
)
is QueryStatus.Failed -> FailedDialogue(