Closed Hallohannes123 closed 2 years ago
Same for me!
I tried to download this Spotify playlist: https://open.spotify.com/playlist/37i9dQZF1DX4aYNO8X5RpR?si=xVoFBgo7Tdq4cRvFBXsQ4g&utm_source=copy-link&dl_branch=1
Only 32 out of 172 has actually been downloaded, the 140 left all failed. :/
same problem here
`DownloadLinkFetchFailed(errorTrace=Find Link for А-я-яй
Fetching From Saavn Failed:DownloadLinkFetchFailed(errorTrace=No SAAVN Match Found for А-я-яй) at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$DefaultImpls.findBestSongDownloadURL(JioSaavnRequests.kt:37) at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$findBestSongDownloadURL$1.invokeSuspend(JioSaavnRequests.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Fetching From YT-Music Failed:NoMatchFound(trackName=А-я-яй, message=А-я-яй : NO Match Found!) at com.shabinder.common.providers.youtube_music.YoutubeMusic.getYTIDBestMatch(YoutubeMusic.kt:87) at com.shabinder.common.providers.youtube_music.YoutubeMusic.access$getYTIDBestMatch(YoutubeMusic.kt:37) at com.shabinder.common.providers.youtube_music.YoutubeMusic$getYTIDBestMatch$1.invokeSuspend(YoutubeMusic.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
) at com.shabinder.common.providers.FetchPlatformQueryResult.findBestDownloadLink(FetchPlatformQueryResult.kt:172) at com.shabinder.common.providers.FetchPlatformQueryResult$findBestDownloadLink$1.invokeSuspend(FetchPlatformQueryResult.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) `
@Hallohannes123 can you try using a vpn to US / India etc
Tried a VPN to USA, still produces the same error.
@Shabinder, it's because of Cloudflare DDoS protection. Browser Integrity Check at the API routes will cause (and it really causes right now -- most of the issues in the repo are with the same failure of this check) a lot of failures for the Spotiflyer client.
yt1s.com should not use BIC for the API -- it is the official recommendation from Cloudflare. You can find it (and all the recommendations of API setup with DDoS Protection) here: https://support.cloudflare.com/hc/en-us/articles/200504045
@Shabinder, it's because of Cloudflare DDoS protection. Browser Integrity Check at the API routes will cause (and it really causes right now -- most of the issues in the repo are with the same failure of this check) a lot of failures for the Spotiflyer client.
yt1s.com should not use BIC for the API -- it is the official recommendation from Cloudflare. You can find it (and all the recommendations of API setup with DDoS Protection) here: https://support.cloudflare.com/hc/en-us/articles/200504045
Thanks for this info. So now the time has again come to host one myself or include an alternate in client, will see.
@Shabinder, if you'll decide to host your own one and the sources of the yt1s.com are open, it could be great if you'll add support of configuration dl host in the app -- this setting can make the app more decentralized. Also, if you'll like my idea, configuration could have support of the Basic Auth for those, who don't like to expose their downloader
@JoeMcNuggets what do you mean by configuration dl host
& where would you like Basic Auth
feature exactly?
We will be falling back on Manual Extraction when Yt1s Fail, whatever the reason may be.
Release will be soon
Can u try again with v3.5.0
Tried, doesn't work
what was the error ?
DownloadLinkFetchFailed(errorTrace=Find Link for גמד
Fetching From Saavn Failed:DownloadLinkFetchFailed(errorTrace=No SAAVN Match Found for גמד)
at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$DefaultImpls.findBestSongDownloadURL(JioSaavnRequests.kt:19)
at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$findBestSongDownloadURL$1.invokeSuspend(Unknown Source:10)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)
Fetching From YT Failed:NoMatchFound(trackName=גמד, message=גמד : NO Match Found!)
at com.shabinder.common.providers.youtube_music.YoutubeMusic.getYTIDBestMatch(YoutubeMusic.kt:13)
at com.shabinder.common.providers.youtube_music.YoutubeMusic.access$getYTIDBestMatch(YoutubeMusic.kt:1)
at com.shabinder.common.providers.youtube_music.YoutubeMusic$getYTIDBestMatch$1.invokeSuspend(Unknown Source:12)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)
)
at com.shabinder.common.providers.FetchPlatformQueryResult.findBestDownloadLink(FetchPlatformQueryResult.kt:84)
at com.shabinder.common.providers.FetchPlatformQueryResult$findBestDownloadLink$1.invokeSuspend(Unknown Source:12)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)
All downloads fail. I am running the newest version
Media Links Used: https://open.spotify.com/playlist/5bmSJgFmBjQWpOw1ImERp7
Expected behavior Download songs
StackTrace:
Device Info (please complete the following information):