Suggestion: API access for listener playback clients (Go+ subscribers) – Music Assistant / Home Assistant

Aperta
#605 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
javascript, openapi
Ambito
api

Direzione di ricerca

Start by reviewing the public API OpenAPI spec and the related issues #77, #577, and #590, which cover rate limits, stream access, and registration without Artist Pro. Compare the requested listener playback capabilities with the endpoints and access rules described in the spec. Done means deciding whether and how to support listener client registration, feed and personalized playlist access, subscription based streaming, and per user rate limits.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Who I am

I'm a paying SoundCloud Go+ subscriber. I don't upload music – I listen. I use SoundCloud through Music Assistant (https://music-assistant.io), the open-source music server that integrates with Home Assistant and streams to multiroom speakers.

The problem

Music Assistant's SoundCloud provider can't use the public API, so it relies on the internal api-v2 used by the web player. Users have to copy their client_id and oauth_token cookie from the browser dev tools. This breaks regularly (401 errors whenever the token or web client_id changes) and recently again when progressive MP3 transcodings were removed. It's fragile for us and surely not what SoundCloud wants either.

Moving to the public API isn't possible today because:

  1. App registration requires Artist Pro. A listener-side playback client has no reason to need an artist subscription. Every user of an open-source project would have to register their own app (the project can't ship a client secret), so every user would need Artist Pro – on top of Go+.
  2. Endpoints a listener client needs are missing (as far as I can tell from the OpenAPI spec).
What a playback client like Music Assistant needs
Use case Status in public API (my understanding)
Current user profile, likes (tracks/playlists), followings, own playlists available
Search, resolve, track/playlist/user details, batch track lookup available
Related tracks, user's top/popular tracks partly available
Stream / feed of followed artists missing
Personalized playlists / mixes (e.g. "Daily Drops", "Weekly Wave", discovery selections) missing
Full-length, high-quality streams based on the listener's Go+ entitlement (via the user's OAuth token, HLS AAC is fine) unclear / restricted
What I'm asking for
  • A way to register non-commercial playback/listener clients without Artist Pro, or tie access to the authenticated user's own subscription (Go+) instead of the developer's.
  • Feed and personalized playlist endpoints in the public API, read-only, scoped to the authenticated user.
  • Streaming entitlement based on the user's token, so Go+ subscribers get the full-length, high-quality streams they pay for in third-party players – the same as in the official apps.
  • Per-user rate limits for apps used by many individual users with their own tokens.

Related (closed): #77 (per-app rate limits, Mopidy/Snapcast), #577 (stream URL requiring Artist Pro), #590 (non-commercial route without Artist Pro).

This would let projects like Music Assistant, Mopidy and others drop browser-scraping workarounds and use the API the intended way – while bringing paying listeners' SoundCloud into their home audio setups.

Thanks for considering!

Lingua principale
JavaScript
Stelle
262
Fork
52
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di soundcloud/api

Tutte le issue di soundcloud/api

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.