0xf4b1 / traktor-streaming-proxy

Allow Traktor DJ to stream music from YouTube, Spotify, and Tidal by faking Beatport's API
Other
37 stars 2 forks source link

Spotify and Tidal not working #18

Closed deluxeGitHub closed 5 months ago

deluxeGitHub commented 5 months ago

Hi fabi,

first of all you are a hero for creating this!

Unfortunately I can't get it to work.

The connection to youtube is working fine, but tidal and spotify are not working. Tidal refuses to give anything at all. Spotify will display songs, but I can't play them.

I hope you can give me a hint on how to fix this. I can also provide additional information. Is it just not working anymore due to changes?

greetings Sam

0xf4b1 commented 5 months ago

Hey, thank you! :) Nice to hear you have youtube working!

If you want to use the tidal source, you must have an account with active subscription. Before you enable the tidal source, you must set tidal.clientId=<some client id> for the interaction with the tidal api in the config.properties file. This project does not have its own one, but you may borrow one from somewhere else ;) When starting the server with a valid client_id and tidal enabled the first time, look at the console output, it will print an authorization url you have to visit in your web browser and login with your tidal credentials. Afterwards, the server should receive the token and continue starting up.

For spotify, you only need to provide your credentials in the properties file and it should work :thinking: maybe the incorrect tidal config prevented the server from launching up. If it still does not work with disabled or working tidal, maybe look out for exceptions in the console output

deluxeGitHub commented 5 months ago

Hi Fabi,

okay so Tidal now works without any issues. Thank you so much!

If I try to load a spotify track this is what I see in the log:

2024-04-29 13:56:12 74263 [eventLoopGroupProxy-4-4] INFO ktor.application  - 200 OK: GET - /v4/curation/playlists/29/tracks/ in 237ms
2024-04-29 13:56:21 82987 [eventLoopGroupProxy-4-1] INFO ktor.application  - 404 Not Found: GET - /v4/catalog/tracks/ in 1ms
2024-04-29 13:56:21 83013 [eventLoopGroupProxy-4-2] INFO ktor.application  - 404 Not Found: GET - /v4/catalog/tracks/ in 0ms
2024-04-29 13:56:21 83039 [eventLoopGroupProxy-4-3] INFO ktor.application  - 404 Not Found: GET - /v4/catalog/tracks/ in 0ms
2024-04-29 13:56:21 83227 [eventLoopGroupProxy-4-5] DEBUG ktor.application  - Unhandled: GET - /v4/catalog/tracks/118378559070211668/download/. Exception class xyz.gianlu.librespot.dealer.ApiClient$StatusCodeException: 400: ]
2024-04-29 13:56:21 xyz.gianlu.librespot.dealer.ApiClient$StatusCodeException: 400: 
2024-04-29 13:56:21 at xyz.gianlu.librespot.dealer.ApiClient$StatusCodeException.checkStatus(ApiClient.java:366)
2024-04-29 13:56:21 at xyz.gianlu.librespot.dealer.ApiClient$StatusCodeException.access$000(ApiClient.java:357)
2024-04-29 13:56:21 at xyz.gianlu.librespot.dealer.ApiClient.clientToken(ApiClient.java:345)
2024-04-29 13:56:21 at xyz.gianlu.librespot.dealer.ApiClient.buildRequest(ApiClient.java:79)
2024-04-29 13:56:21 at xyz.gianlu.librespot.dealer.ApiClient.send(ApiClient.java:114)
2024-04-29 13:56:21 at xyz.gianlu.librespot.dealer.ApiClient.send(ApiClient.java:131)
2024-04-29 13:56:21 at xyz.gianlu.librespot.dealer.ApiClient.getMetadata4Track(ApiClient.java:146)
2024-04-29 13:56:21 at xyz.gianlu.librespot.audio.PlayableContentFeeder.loadTrack(PlayableContentFeeder.java:106)
2024-04-29 13:56:21 at xyz.gianlu.librespot.audio.PlayableContentFeeder.load(PlayableContentFeeder.java:86)
2024-04-29 13:56:21 at sources.Spotify.streamUri(Spotify.kt:192)
2024-04-29 13:56:21 at sources.Spotify.download(Spotify.kt:80)
2024-04-29 13:56:21 at MainKt$main$4$2$15.invokeSuspend(Main.kt:190)
2024-04-29 13:56:21 at MainKt$main$4$2$15.invoke(Main.kt)
2024-04-29 13:56:21 at MainKt$main$4$2$15.invoke(Main.kt)
2024-04-29 13:56:21 at io.ktor.server.routing.Route$buildPipeline$1$1.invokeSuspend(Route.kt:116)
2024-04-29 13:56:21 at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt)
2024-04-29 13:56:21 at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
2024-04-29 13:56:21 at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
2024-04-29 13:56:21 at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
2024-04-29 13:56:21 at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invoke(Pipeline.kt)
2024-04-29 13:56:21 at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invoke(Pipeline.kt)
2024-04-29 13:56:21 at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
2024-04-29 13:56:21 at io.ktor.server.routing.Routing.executeResult(Routing.kt:190)
2024-04-29 13:56:21 at io.ktor.server.routing.Routing.interceptor(Routing.kt:64)
2024-04-29 13:56:21 at io.ktor.server.routing.Routing$Plugin$install$1.invokeSuspend(Routing.kt:140)
2024-04-29 13:56:21 at io.ktor.server.routing.Routing$Plugin$install$1.invoke(Routing.kt)
2024-04-29 13:56:21 at io.ktor.server.routing.Routing$Plugin$install$1.invoke(Routing.kt)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
2024-04-29 13:56:21 at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invokeSuspend(BaseApplicationEngine.kt:123)
2024-04-29 13:56:21 at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invoke(BaseApplicationEngine.kt)
2024-04-29 13:56:21 at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invoke(BaseApplicationEngine.kt)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
2024-04-29 13:56:21 at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
2024-04-29 13:56:21 at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
2024-04-29 13:56:21 at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
2024-04-29 13:56:21 at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
2024-04-29 13:56:21 at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
2024-04-29 13:56:21 at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invokeSuspend(DefaultEnginePipeline.kt:118)
2024-04-29 13:56:21 at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invoke(DefaultEnginePipeline.kt)
2024-04-29 13:56:21 at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invoke(DefaultEnginePipeline.kt)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
2024-04-29 13:56:21 at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
2024-04-29 13:56:21 at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
2024-04-29 13:56:21 at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
2024-04-29 13:56:21 at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
2024-04-29 13:56:21 at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
2024-04-29 13:56:21 at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
2024-04-29 13:56:21 at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invokeSuspend(NettyApplicationCallHandler.kt:119)
2024-04-29 13:56:21 at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt)
2024-04-29 13:56:21 at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt)
2024-04-29 13:56:21 at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55)
2024-04-29 13:56:21 at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
2024-04-29 13:56:21 at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
2024-04-29 13:56:21 at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
2024-04-29 13:56:21 at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
2024-04-29 13:56:21 at io.ktor.server.netty.NettyApplicationCallHandler.handleRequest(NettyApplicationCallHandler.kt:37)
2024-04-29 13:56:21 at io.ktor.server.netty.NettyApplicationCallHandler.channelRead(NettyApplicationCallHandler.kt:29)
2024-04-29 13:56:21 at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2024-04-29 13:56:21 at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:61)
2024-04-29 13:56:21 at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:425)
2024-04-29 13:56:21 at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
2024-04-29 13:56:21 at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
2024-04-29 13:56:21 at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
2024-04-29 13:56:21 at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
2024-04-29 13:56:21 at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
2024-04-29 13:56:21 at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
2024-04-29 13:56:21 at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda$1$lambda$0(NettyApplicationEngine.kt:291)
2024-04-29 13:56:21 at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
2024-04-29 13:56:21 at java.base/java.lang.Thread.run(Thread.java:833)
2024-04-29 13:56:21 83228 [eventLoopGroupProxy-4-5] INFO ktor.application  - 500 Internal Server Error: GET - /v4/catalog/tracks/118378559070211668/download/ in 242ms
0xf4b1 commented 5 months ago

hmm, I checked spotify and it also stopped working for me, although it still works in another app on android without any difference 🤔

0xf4b1 commented 5 months ago

Spotify support is working again in the new released container images :)

deluxeGitHub commented 5 months ago

That sounds amazing! Thanks so much!

deluxeGitHub commented 5 months ago

Can confirm that it works!