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

Abierto
#605 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript, openapi
Área
api

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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!

Lenguaje dominante
JavaScript
Estrellas
262
Forks
52
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de soundcloud/api

Todos los issues de soundcloud/api

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.