Closed deluxeGitHub closed 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
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
hmm, I checked spotify and it also stopped working for me, although it still works in another app on android without any difference 🤔
Spotify support is working again in the new released container images :)
That sounds amazing! Thanks so much!
Can confirm that it works!
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