maxrave-dev / maxrave-dev/SimpMusic
Linux desktop playback fails with timeout – YouTube streams return HTTP 403
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 11.4k
- Forks
- 599
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 7
Description
Duplicate Check
- I confirm I searched for existing reports and found no duplicates.
Describe the Bug
On Linux desktop, SimpMusic is unable to play any song. The app displays a timeout error when attempting playback.
The catalog, search, and YouTube Music content load correctly, but every song fails when playback starts.
Debug logs show that playback initialization succeeds, but MpvPlayerAdapter is already in the ERROR state when play() is called.
Testing outside SimpMusic shows that the YouTube stream URL extracted through the default android_vr client returns HTTP 403.
The same video plays successfully with MPV when using yt-dlp with the web_embedded player client, Deno, and the EJS challenge solver.
This suggests the issue may be related to the YouTube stream extraction/player client used by the desktop version.
Steps to Reproduce
- Install and open SimpMusic Desktop on Linux Fedora 44.
- Log in to a YouTube Music account using string cookies from extension.
- Select any song from the catalog or search results.
- Press Play.
- Wait for playback to initialize.
The same timeout error occurs for every song I tested.
Expected Behavior
The selected song should start playing normally.
App Version
v1.7.0
Android Version
N/A – Linux Desktop
Device Model
Fedora Linux 44 (KDE Plasma Desktop Edition) x86-64 Lenovo IdeaPad 1 15ALC7
Custom ROM
- I am using a custom ROM
Custom ROM Name (if applicable)
No response
Screenshots (optional)
No response
Log / Error Details
Debug: (YouTubeScraper) watchtime done
Debug: (Check initPlayback) Success
Debug: (MpvPlayerAdapter) play() called (current state: ERROR)
Warn: (MpvPlayerAdapter) Play: Called in invalid state: ERROR
Warn: (saveRecentSong) v1pqTBlNsyY 0
Additional testing:
Default MPV/yt-dlp playback of the same video fails with:
[youtube] v1pqTBlNsyY: Downloading android vr player API JSON
[info] v1pqTBlNsyY: Downloading 1 format(s): 251
ERROR: unable to download video data: HTTP Error 403: Forbidden
However, playback works successfully when using:
yt-dlp \
--js-runtimes deno \
--remote-components ejs:github \
--extractor-args "youtube:player_client=web_embedded" \
-f bestaudio \
--no-playlist \
"https://www.youtube.com/watch?v=v1pqTBlNsyY"
MPV also successfully plays the same video with this configuration.
Environment:
OS: Fedora Linux 44
MPV: 0.41.0
yt-dlp: 2026.06.09
Deno: 2.9.5 (stable, release, x86_64-unknown-linux-gnu)
v8 15.0.245.2-rusty
typescript 6.0.3
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at MpvPlayerAdapter playback initialization and the desktop YouTube stream-extraction path; compare the failing android_vr client with the working web_embedded configuration, including the supplied Deno and EJS solver setup. Reproduce with the provided video and environment, then verify that songs play without HTTP 403 errors or timeout failures.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- deno, kotlin
- Domain
- audio-video-rtc, desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100