Shabinder / SpotiFlyer

Kotlin Multiplatform Music Downloader, Supports Spotify / Gaana / Youtube Music / Jio Saavn / SoundCloud.
https://soundbound.app
GNU General Public License v3.0
10.26k stars 766 forks source link

[BUG] : <Issue_Title> #3517

Open DxBONESxBACK opened 1 month ago

DxBONESxBACK commented 1 month ago

Describe the bug:

Media Links Used:

Expected behavior

Screenshots:

StackTrace:


Paste Stacktrace here if available
```DownloadLinkFetchFailed(errorTrace=Find Link for Red Barchetta 

Fetching From Saavn Failed:DownloadLinkFetchFailed(errorTrace=No SAAVN Match Found for Red Barchetta)
    at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$DefaultImpls.findBestSongDownloadURL(JioSaavnRequests.kt:299)
    at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$findBestSongDownloadURL$1.invokeSuspend(Unknown Source:10)
    at h7.a.resumeWith(ContinuationImpl.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:12)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:2)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:0)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:14)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:28)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:0)

Yt1sMp3 Failed for FAvQSkK8Z8U:io.ktor.client.features.RedirectResponseException: Unhandled redirect: https://yt1s.com/api/ajaxSearch/index. Status: 302 Found. Text: ""
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invokeSuspend(DefaultResponseValidation.kt:205)
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invoke(Unknown Source:8)
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invoke(Unknown Source:4)
    at io.ktor.client.features.HttpCallValidator.validateResponse(HttpCallValidator.kt:86)
    at io.ktor.client.features.HttpCallValidator.access$validateResponse(HttpCallValidator.kt:0)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invokeSuspend(HttpCallValidator.kt:42)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invoke(Unknown Source:11)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invoke(Unknown Source:8)
    at io.ktor.client.features.HttpSend$Feature$install$1.invokeSuspend(HttpSend.kt:178)
    at h7.a.resumeWith(ContinuationImpl.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:12)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:2)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:0)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:14)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:28)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:0)

Extracting Manually...

YT Manual Extraction Failed!io.ktor.client.features.ClientRequestException: Client request(https://rr5---sn-nx5s7nee.googlevideo.com/videoplayback?expire=1720311156&ei=FImJZvDgDLfFsfIPxL2SqAU&ip=63.155.26.247&id=o-AFxEcuo_cBunjDC_ZJD_kWNyuUoELIikPNUrsc7o9kcK&itag=140&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=4O&mm=31%2C29&mn=sn-nx5s7nee%2Csn-nx57ynse&ms=au%2Crdu&mv=m&mvi=5&pl=19&initcwndbps=952500&bui=AXc671LKF-kOBRJZ7MBM65Lcd0ttet5lQ7tOFqZvqSTBzN-OlMK3O4JgZoI3KiwnNCvII5c2x5k6ePuo&spc=NO7bARawQuw-CieE3O9lqlmSDk8mbq5hViyqVp6vkbzCjgBDYGz4qc2dFrX6&vprv=1&svpuc=1&mime=audio%2Fmp4&ns=_W79kK32FLyESL9tmJ_Qj-YQ&rqh=1&gir=yes&clen=6050556&dur=373.818&lmt=1578697424763957&mt=1720289369&fvip=2&keepalive=yes&c=WEB&sefc=1&txp=5531432&n=1OILEgyTfk-AtYUeG0O&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AHlkHjAwRAIgEydf26DC1D3YQPBxW6G-CEHv89VefkjKDSAi1-VYDdwCIE_nte5gvR3c0Tv035lqhDCTTEgg0SIh2yi0LxvdCCd0&sig=AJfQdSswRQIgN-gXTnV4rjmgxX9sMWyMEICsX4oRGM71pqzkcRBvOzQCIQClwy-MJ65tNQz3bPdno6M62Ngf_sYHYpZbvCHGXVViMQ%3D%3D) invalid: 403 Forbidden. Text: ""
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invokeSuspend(DefaultResponseValidation.kt:199)
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invoke(Unknown Source:8)
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invoke(Unknown Source:4)
    at io.ktor.client.features.HttpCallValidator.validateResponse(HttpCallValidator.kt:86)
    at io.ktor.client.features.HttpCallValidator.access$validateResponse(HttpCallValidator.kt:0)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invokeSuspend(HttpCallValidator.kt:42)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invoke(Unknown Source:11)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invoke(Unknown Source:8)
    at io.ktor.client.features.HttpSend$Feature$install$1.invokeSuspend(HttpSend.kt:178)
    at h7.a.resumeWith(ContinuationImpl.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:12)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:2)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:0)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:14)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:28)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:0)

Fetching From YT Failed:io.ktor.client.features.ClientRequestException: Client request(https://rr5---sn-nx5s7nee.googlevideo.com/videoplayback?expire=1720311156&ei=FImJZvDgDLfFsfIPxL2SqAU&ip=63.155.26.247&id=o-AFxEcuo_cBunjDC_ZJD_kWNyuUoELIikPNUrsc7o9kcK&itag=140&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=4O&mm=31%2C29&mn=sn-nx5s7nee%2Csn-nx57ynse&ms=au%2Crdu&mv=m&mvi=5&pl=19&initcwndbps=952500&bui=AXc671LKF-kOBRJZ7MBM65Lcd0ttet5lQ7tOFqZvqSTBzN-OlMK3O4JgZoI3KiwnNCvII5c2x5k6ePuo&spc=NO7bARawQuw-CieE3O9lqlmSDk8mbq5hViyqVp6vkbzCjgBDYGz4qc2dFrX6&vprv=1&svpuc=1&mime=audio%2Fmp4&ns=_W79kK32FLyESL9tmJ_Qj-YQ&rqh=1&gir=yes&clen=6050556&dur=373.818&lmt=1578697424763957&mt=1720289369&fvip=2&keepalive=yes&c=WEB&sefc=1&txp=5531432&n=1OILEgyTfk-AtYUeG0O&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AHlkHjAwRAIgEydf26DC1D3YQPBxW6G-CEHv89VefkjKDSAi1-VYDdwCIE_nte5gvR3c0Tv035lqhDCTTEgg0SIh2yi0LxvdCCd0&sig=AJfQdSswRQIgN-gXTnV4rjmgxX9sMWyMEICsX4oRGM71pqzkcRBvOzQCIQClwy-MJ65tNQz3bPdno6M62Ngf_sYHYpZbvCHGXVViMQ%3D%3D) invalid: 403 Forbidden. Text: ""
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invokeSuspend(DefaultResponseValidation.kt:199)
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invoke(Unknown Source:8)
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invoke(Unknown Source:4)
    at io.ktor.client.features.HttpCallValidator.validateResponse(HttpCallValidator.kt:86)
    at io.ktor.client.features.HttpCallValidator.access$validateResponse(HttpCallValidator.kt:0)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invokeSuspend(HttpCallValidator.kt:42)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invoke(Unknown Source:11)
    at io.ktor.client.features.HttpCallValidator$Companion$install$3.invoke(Unknown Source:8)
    at io.ktor.client.features.HttpSend$Feature$install$1.invokeSuspend(HttpSend.kt:178)
    at h7.a.resumeWith(ContinuationImpl.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:12)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:2)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:0)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:14)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:28)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:0)

)
    at com.shabinder.common.providers.FetchPlatformQueryResult.findBestDownloadLink(FetchPlatformQueryResult.kt:1873)
    at com.shabinder.common.providers.FetchPlatformQueryResult$findBestDownloadLink$1.invokeSuspend(Unknown Source:12)
    at h7.a.resumeWith(ContinuationImpl.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:74)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:17)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:74)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:17)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:74)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:17)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:55)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:17)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:0)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:24)
    at h7.a.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:12)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:2)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:0)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:14)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:28)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:0)

**Device Info (please complete the following information):**
 - Device:   [e.g. iPhone6, Samsung J2, PocoF1]
 - OS:   [e.g. iOS, Android 10, WinOS, MacOS]
 - Version:   [e.g. 3.2.1]
 - Country: [eg: India, will help in detecting if service is accessible to u]

**Additional context:**
<!--- Add any other context about the problem here. --->