From cf6fec172eed875ac3ecbfe5347416be16e45325 Mon Sep 17 00:00:00 2001 From: Shabinder Singh Date: Tue, 12 Oct 2021 18:00:51 +0530 Subject: [PATCH] Code Cleanup --- .../FetchPlatformQueryResult.kt | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/common/providers/src/commonMain/kotlin/com.shabinder.common.providers/FetchPlatformQueryResult.kt b/common/providers/src/commonMain/kotlin/com.shabinder.common.providers/FetchPlatformQueryResult.kt index 35b6c6b3..ef00442e 100644 --- a/common/providers/src/commonMain/kotlin/com.shabinder.common.providers/FetchPlatformQueryResult.kt +++ b/common/providers/src/commonMain/kotlin/com.shabinder.common.providers/FetchPlatformQueryResult.kt @@ -28,6 +28,7 @@ import com.shabinder.common.models.TrackDetails import com.shabinder.common.models.dispatcherIO import com.shabinder.common.models.event.coroutines.SuspendableEvent import com.shabinder.common.models.event.coroutines.flatMapError +import com.shabinder.common.models.event.coroutines.onFailure import com.shabinder.common.models.event.coroutines.onSuccess import com.shabinder.common.models.event.coroutines.success import com.shabinder.common.models.spotify.Source @@ -134,16 +135,14 @@ class FetchPlatformQueryResult( ) appendLine("Trying Local Extraction") - runCatching { - youtubeProvider.fetchVideoM4aLink( - track.videoID.requireNotNull() - ).also { - audioQuality = it.second - audioFormat = AudioFormat.MP4 - }.first - }.onFailure { - appendPadded(it.stackTraceToString()) - }.getOrNull() + SuspendableEvent { + youtubeProvider.fetchVideoM4aLink(track.videoID.requireNotNull()) + }.onFailure { throwable -> + appendPadded("YT Manual Extraction Failed!", throwable.stackTraceToString()) + }.onSuccess { + audioQuality = it.second + audioFormat = AudioFormat.MP4 + }.component1()?.first } else { audioFormat = AudioFormat.MP3 ytMp3LinkRes.component1() @@ -185,14 +184,23 @@ class FetchPlatformQueryResult( ).onSuccess { audioFormat = AudioFormat.MP4 }.flatMapError { saavnError -> appendPadded("Fetching From Saavn Failed:", saavnError.stackTraceToString()) // Saavn Failed, Lets Try Fetching Now From Youtube Music - youtubeMusic.findMp3SongDownloadURLYT(track, preferredQuality).also { + youtubeMusic.findMp3SongDownloadURLYT(track, preferredQuality).onSuccess { + audioFormat = AudioFormat.MP3 + }.flatMapError { // Append Error To StackTrace - if (it is SuspendableEvent.Failure) - appendPadded( - "Fetching From YT-Music Failed:", - it.component2()?.stackTraceToString() - ) - else audioFormat = AudioFormat.MP3 + appendPadded( + "Fetching From Yt1s Failed:", + it.stackTraceToString() + ) + appendPadded("Extracting Manually...") + + SuspendableEvent { + youtubeProvider.fetchVideoM4aLink(track.videoID.requireNotNull()) + }.onFailure { throwable -> + appendPadded("YT Manual Extraction Failed!", throwable.stackTraceToString()) + }.onSuccess { + audioFormat = AudioFormat.MP4 + } } }