-
-
Notifications
You must be signed in to change notification settings - Fork 2k
Description
Is there an existing issue for this? (Please read the description)
- I have searched the existing issues
Current Behavior
When searching songs and playing from the results, the song never plays. Even after it finishes loading, it stays at 0:00, and no audio plays. When playing from a playlist, album, etc the same occurs, but after a few seconds of nothing playing, it skips to the next song, loads, stays at 0:00, no audio for a few seconds, and skips again.
Downloads also never start or finish, or even have an error (which it never actually provides an error message, just a red triangle that can not be interacted with).
Only local files can be played, but must be downloaded elsewhere.
Expected Behavior
What is expected of this question? The expected behavior is that a music app should play music, no?
Steps to reproduce
1: Open app
2: Find a song that isn't a local file stored on your device
3: Attempt to play it
Logs
Logs
es/metadata/endpoints/search.dart:146)
<asynchronous suspension>
#6 MetadataPluginSearchTracksNotifier.fetch (package:spotube/provider/metadata_plugin/search/tracks.dart:24)
<asynchronous suspension>
#7 MetadataPluginSearchTracksNotifier.build (package:spotube/provider/metadata_plugin/search/tracks.dart:38)
<asynchronous suspension>
#8 FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:52:32.779909]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 401 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 401 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 HttpClient.request (package:hetu_std/http/http.dart:146)
<asynchronous suspension>
#2 HttpClient.post (package:hetu_std/http/http.dart:189)
<asynchronous suspension>
#3 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#4 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#5 MetadataPluginSearchEndpoint.tracks (package:spotube/services/metadata/endpoints/search.dart:146)
<asynchronous suspension>
#6 MetadataPluginSearchTracksNotifier.fetch (package:spotube/provider/metadata_plugin/search/tracks.dart:24)
<asynchronous suspension>
#7 MetadataPluginSearchTracksNotifier.build (package:spotube/provider/metadata_plugin/search/tracks.dart:38)
<asynchronous suspension>
#8 FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:52:33.019170]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 401 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 401 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 HttpClient.request (package:hetu_std/http/http.dart:146)
<asynchronous suspension>
#2 HttpClient.post (package:hetu_std/http/http.dart:189)
<asynchronous suspension>
#3 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#4 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#5 MetadataPluginSearchEndpoint.tracks (package:spotube/services/metadata/endpoints/search.dart:146)
<asynchronous suspension>
#6 MetadataPluginSearchTracksNotifier.fetch (package:spotube/provider/metadata_plugin/search/tracks.dart:24)
<asynchronous suspension>
#7 MetadataPluginSearchTracksNotifier.build (package:spotube/provider/metadata_plugin/search/tracks.dart:38)
<asynchronous suspension>
#8 FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:52:37.140150]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 401 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 401 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 HttpClient.request (package:hetu_std/http/http.dart:146)
<asynchronous suspension>
#2 HttpClient.post (package:hetu_std/http/http.dart:189)
<asynchronous suspension>
#3 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#4 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#5 MetadataPluginAlbumEndpoint.releases (package:spotube/services/metadata/endpoints/album.dart:47)
<asynchronous suspension>
#6 MetadataPluginAlbumReleasesNotifier.fetch (package:spotube/provider/metadata_plugin/album/releases.dart:13)
<asynchronous suspension>
#7 MetadataPluginAlbumReleasesNotifier.build (package:spotube/provider/metadata_plugin/album/releases.dart:21)
<asynchronous suspension>
#8 FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:52:37.204250]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 401 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 401 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 HttpClient.request (package:hetu_std/http/http.dart:146)
<asynchronous suspension>
#2 HttpClient.post (package:hetu_std/http/http.dart:189)
<asynchronous suspension>
#3 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#4 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#5 MetadataPluginBrowseEndpoint.sections (package:spotube/services/metadata/endpoints/browse.dart:18)
<asynchronous suspension>
#6 MetadataPluginBrowseSectionsNotifier.fetch (package:spotube/provider/metadata_plugin/browse/sections.dart:14)
<asynchronous suspension>
#7 MetadataPluginBrowseSectionsNotifier.build (package:spotube/provider/metadata_plugin/browse/sections.dart:23)
<asynchronous suspension>
#8 FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:01.849900]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:05.898891]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:05.901851]---------------------
[MediaKitError]
Failed to open http://0.0.0.0:17256/stream/0RFgvrhkf9FiDRLA0BhzpZ.
#0 new CustomPlayer.<anonymous closure> (package:spotube/services/audio_player/custom_player.dart:47)
#1 _rootRunUnary (dart:async/zone.dart:1538)
#2 _CustomZone.runUnary (dart:async/zone.dart:1429)
#3 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1329)
#4 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381)
#5 _DelayedData.perform (dart:async/stream_impl.dart:573)
#6 _PendingEvents.handleNext (dart:async/stream_impl.dart:678)
#7 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:649)
#8 _rootRun (dart:async/zone.dart:1517)
#9 _CustomZone.run (dart:async/zone.dart:1422)
#10 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#11 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#12 _rootRun (dart:async/zone.dart:1525)
#13 _CustomZone.run (dart:async/zone.dart:1422)
#14 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#15 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#16 _microtaskLoop (dart:async/schedule_microtask.dart:40)
#17 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49)
----------------------------------------
[2026-03-01 23:53:26.174813]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ChunkDownloaderDioExtension.chunkDownload (package:spotube/extensions/dio.dart:62)
<asynchronous suspension>
#2 DownloadManagerNotifier._downloadTrack (package:spotube/provider/download_manager_provider.dart:217)
<asynchronous suspension>
#3 DownloadManagerNotifier._startDownloading (package:spotube/provider/download_manager_provider.dart:271)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:41.765527]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ChunkDownloaderDioExtension.chunkDownload (package:spotube/extensions/dio.dart:62)
<asynchronous suspension>
#2 DownloadManagerNotifier._downloadTrack (package:spotube/provider/download_manager_provider.dart:217)
<asynchronous suspension>
#3 DownloadManagerNotifier._startDownloading (package:spotube/provider/download_manager_provider.dart:271)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:42.626566]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ChunkDownloaderDioExtension.chunkDownload (package:spotube/extensions/dio.dart:62)
<asynchronous suspension>
#2 DownloadManagerNotifier._downloadTrack (package:spotube/provider/download_manager_provider.dart:217)
<asynchronous suspension>
#3 DownloadManagerNotifier._startDownloading (package:spotube/provider/download_manager_provider.dart:271)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:43.226420]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ChunkDownloaderDioExtension.chunkDownload (package:spotube/extensions/dio.dart:62)
<asynchronous suspension>
#2 DownloadManagerNotifier._downloadTrack (package:spotube/provider/download_manager_provider.dart:217)
<asynchronous suspension>
#3 DownloadManagerNotifier._startDownloading (package:spotube/provider/download_manager_provider.dart:271)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:43.807078]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ChunkDownloaderDioExtension.chunkDownload (package:spotube/extensions/dio.dart:62)
<asynchronous suspension>
#2 DownloadManagerNotifier._downloadTrack (package:spotube/provider/download_manager_provider.dart:217)
<asynchronous suspension>
#3 DownloadManagerNotifier._startDownloading (package:spotube/provider/download_manager_provider.dart:271)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:44.499566]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ChunkDownloaderDioExtension.chunkDownload (package:spotube/extensions/dio.dart:62)
<asynchronous suspension>
#2 DownloadManagerNotifier._downloadTrack (package:spotube/provider/download_manager_provider.dart:217)
<asynchronous suspension>
#3 DownloadManagerNotifier._startDownloading (package:spotube/provider/download_manager_provider.dart:271)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:45.329302]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ChunkDownloaderDioExtension.chunkDownload (package:spotube/extensions/dio.dart:62)
<asynchronous suspension>
#2 DownloadManagerNotifier._downloadTrack (package:spotube/provider/download_manager_provider.dart:217)
<asynchronous suspension>
#3 DownloadManagerNotifier._startDownloading (package:spotube/provider/download_manager_provider.dart:271)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:47.830357]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 429 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 429 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 HttpClient.request (package:hetu_std/http/http.dart:146)
<asynchronous suspension>
#2 HttpClient.get (package:hetu_std/http/http.dart:175)
<asynchronous suspension>
#3 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#4 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#5 MetadataPluginUserEndpoint.savedArtists (package:spotube/services/metadata/endpoints/user.dart:86)
<asynchronous suspension>
#6 MetadataPluginSavedArtistNotifier.fetch (package:spotube/provider/metadata_plugin/library/artists.dart:13)
<asynchronous suspension>
#7 MetadataPluginSavedArtistNotifier.build (package:spotube/provider/metadata_plugin/library/artists.dart:24)
<asynchronous suspension>
#8 FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:53:49.330276]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 429 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 429 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 HttpClient.request (package:hetu_std/http/http.dart:146)
<asynchronous suspension>
#2 HttpClient.get (package:hetu_std/http/http.dart:175)
<asynchronous suspension>
#3 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#4 StreamBinding.hFetch.<anonymous closure>.<anonymous closure> (package:hetu_std/stream/stream.binding.dart:84)
<asynchronous suspension>
#5 MetadataPluginUserEndpoint.savedArtists (package:spotube/services/metadata/endpoints/user.dart:86)
<asynchronous suspension>
#6 MetadataPluginSavedArtistNotifier.fetch (package:spotube/provider/metadata_plugin/library/artists.dart:13)
<asynchronous suspension>
#7 MetadataPluginSavedArtistNotifier.build (package:spotube/provider/metadata_plugin/library/artists.dart:24)
<asynchronous suspension>
#8 FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:355)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:56:01.850519]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:56:05.889237]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:56:05.891569]---------------------
Failed to open http://0.0.0.0:22179/stream/0RFgvrhkf9FiDRLA0BhzpZ.
#0 new AudioPlayerInterface.<anonymous closure> (package:spotube/services/audio_player/audio_player.dart:56)
#1 _rootRunUnary (dart:async/zone.dart:1538)
#2 _CustomZone.runUnary (dart:async/zone.dart:1429)
#3 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1329)
#4 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381)
#5 _DelayedData.perform (dart:async/stream_impl.dart:573)
#6 _PendingEvents.handleNext (dart:async/stream_impl.dart:678)
#7 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:649)
#8 _rootRun (dart:async/zone.dart:1517)
#9 _CustomZone.run (dart:async/zone.dart:1422)
#10 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#11 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#12 _rootRun (dart:async/zone.dart:1525)
#13 _CustomZone.run (dart:async/zone.dart:1422)
#14 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#15 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#16 _microtaskLoop (dart:async/schedule_microtask.dart:40)
#17 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49)
----------------------------------------
---------
[2026-03-01 23:57:40.026811]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:57:44.700252]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:57:44.701658]---------------------
Failed to open http://0.0.0.0:22179/stream/4c9FIjxXYYEyD9iH02fvbu.
#0 new AudioPlayerInterface.<anonymous closure> (package:spotube/services/audio_player/audio_player.dart:56)
#1 _rootRunUnary (dart:async/zone.dart:1538)
#2 _CustomZone.runUnary (dart:async/zone.dart:1429)
#3 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1329)
#4 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381)
#5 _DelayedData.perform (dart:async/stream_impl.dart:573)
#6 _PendingEvents.handleNext (dart:async/stream_impl.dart:678)
#7 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:649)
#8 _rootRun (dart:async/zone.dart:1517)
#9 _CustomZone.run (dart:async/zone.dart:1422)
#10 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#11 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#12 _rootRun (dart:async/zone.dart:1525)
#13 _CustomZone.run (dart:async/zone.dart:1422)
#14 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#15 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#16 _microtaskLoop (dart:async/schedule_microtask.dart:40)
#17 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49)
----------------------------------------
---------
[2026-03-01 23:57:49.031971]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:57:53.409983]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:57:53.412136]---------------------
Failed to open http://0.0.0.0:22179/stream/5brviRvO3ZIDvdF0dED9wC.
#0 new AudioPlayerInterface.<anonymous closure> (package:spotube/services/audio_player/audio_player.dart:56)
#1 _rootRunUnary (dart:async/zone.dart:1538)
#2 _CustomZone.runUnary (dart:async/zone.dart:1429)
#3 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1329)
#4 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381)
#5 _DelayedData.perform (dart:async/stream_impl.dart:573)
#6 _PendingEvents.handleNext (dart:async/stream_impl.dart:678)
#7 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:649)
#8 _rootRun (dart:async/zone.dart:1517)
#9 _CustomZone.run (dart:async/zone.dart:1422)
#10 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#11 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#12 _rootRun (dart:async/zone.dart:1525)
#13 _CustomZone.run (dart:async/zone.dart:1422)
#14 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#15 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#16 _microtaskLoop (dart:async/schedule_microtask.dart:40)
#17 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49)
----------------------------------------
---------
[2026-03-01 23:57:57.630814]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:58:02.065757]---------------------
DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.
The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.
#0 DioMixin.fetch (package:dio/src/dio_mixin.dart:523)
<asynchronous suspension>
#1 ServerPlaybackRoutes.streamTrack (package:spotube/provider/server/routes/playback.dart:177)
<asynchronous suspension>
#2 ServerPlaybackRoutes.getStreamTrackId (package:spotube/provider/server/routes/playback.dart:310)
<asynchronous suspension>
#3 RouterEntry.invoke.<anonymous closure> (package:shelf_router/src/router_entry.dart:109)
<asynchronous suspension>
#4 RouterEntry.invoke (package:shelf_router/src/router_entry.dart:104)
<asynchronous suspension>
#5 Router.call (package:shelf_router/src/router.dart:184)
<asynchronous suspension>
#6 handleRequest (package:shelf/shelf_io.dart:140)
<asynchronous suspension>
----------------------------------------
[2026-03-01 23:58:02.068101]---------------------
Failed to open http://0.0.0.0:22179/stream/0XNwlgh3Gjikmc2tyAasXF.
#0 new AudioPlayerInterface.<anonymous closure> (package:spotube/services/audio_player/audio_player.dart:56)
#1 _rootRunUnary (dart:async/zone.dart:1538)
#2 _CustomZone.runUnary (dart:async/zone.dart:1429)
#3 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1329)
#4 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:381)
#5 _DelayedData.perform (dart:async/stream_impl.dart:573)
#6 _PendingEvents.handleNext (dart:async/stream_impl.dart:678)
#7 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:649)
#8 _rootRun (dart:async/zone.dart:1517)
#9 _CustomZone.run (dart:async/zone.dart:1422)
#10 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#11 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#12 _rootRun (dart:async/zone.dart:1525)
#13 _CustomZone.run (dart:async/zone.dart:1422)
#14 _CustomZone.runGuarded (dart:async/zone.dart:1321)
#15 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1362)
#16 _microtaskLoop (dart:async/schedule_microtask.dart:40)
#17 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49)
Operating System
Android
Spotube version
Androidv5.1.1
Installation source
Website (spotube.krtirtho.dev)
Additional information
Last update had issues where every page would give an error, only corrected by forcibly crashing the app and relaunching it, and albums would not load. Those seem to have been fixed, but now songs simply don't play. At least I could work around the errors by purposely crashing the app, and I could work around the album issue by using Spotify to add the albums songs to a playlist (which Spotube would load). But now, I can't work around this issue without taking up every bit of my storage by downloading all 69,540 hours of music.
Am I missing a required dependency for this update or something?
Self grab
- I'm ready to work on this issue!