omnisong / odesli
Omnisong Odesli: one link (or an ISRC, a UPC) to the same song or album on every platform, through song.link's API.
Requires
- php: >=8.2
- glitchr/omnisong: ^1.0@dev
- symfony/http-client: ^6.4|^7.0|^8.0
Requires (Dev)
- phpunit/phpunit: ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-03 16:12:04 UTC
README
Odesli (song.link) for glitchr/omnisong: one link - a URL on any platform, or a platform's own id - to the same song or album on every other one, through the application's HTTP client.
omnisong: catalogs: odesli: factory: odesli options: api_key: '%env(default::ODESLI_API_KEY)%' # asked from developers@song.link country: 'DE' # userCountry: the store the links point at base_uri: 'https://api.song.link/v1-alpha.1/'
links() reads linksByPlatform (Spotify, Apple Music, iTunes, YouTube, YouTube Music, Deezer,
Tidal, Amazon Music, Amazon, SoundCloud, Napster, Pandora, Anghami, Boomplay, Audiomack, Audius,
Bandcamp), each link with the platform's own id; release() gives the title, the artist, the cover
and those links - no tracks, Odesli has none; releases() is not supported. Odesli reads neither a
UPC nor an ISRC (NotSupportedException): behind omnisong/itunes the aggregator comes back with
the iTunes id the release was found under, and Odesli is asked by that
(?platform=itunes&type=album&id=...).
What it answers: unknown (404) is an empty PlatformLinks / null; 429 is a
RateLimitedException with Retry-After; 5xx, a transport error, and a missing or refused key
(401, 403) are an UnavailableException - the aggregator skips Odesli and says so in
$incomplete, so a site does not cache a half answer; any other 4xx is a ProviderException.
The key: song.link's keyless access is withdrawn - a call without one answers 401 PUBLIC_API_ACCESS_DEPRECATED (seen 2026-10-03). Ask developers@song.link for a key and set it as
api_key (ODESLI_API_KEY); without it this catalogue is skipped and named in $incomplete, and
the release still comes with iTunes' tracks and Apple's links.
License: LGPL-3.0-or-later.