How echomusicapp/lossless-extension works
Echo Music Lossless Extension is a self-hosted addon that resolves track searches and stream metadata through configurable upstream providers; it redirects users to playable HTTPS audio rather than storing audio. Echo Music users connect to the addon, whose HTTP server serves the home player and addon endpoints, selects a provider, normalizes track IDs and stream responses, and returns results. The documented multi mode races providers, while path-prefixed routes expose individual sources. The graph follows shown imports and calls; unsampled provider details and some dynamic UI behavior are omitted.
Main entry points: index.ts Provider selection · server.ts HTTP routes · home.ts Home player · qobuzdl.ts Qobuz-DL adapter
Components 21
Addon entry
- HTTP routes
src/server.ts - Home player
src/home.ts - Runtime configuration
src/config.ts - TTL cache
src/cache.ts
Resolution and identity
- Track and stream normalization
src/normalize.ts
Provider adapters
- Provider selection
src/providers/index.ts - First-response race
src/providers/racing.ts - Qobuz-DL adapter
src/providers/qobuzdl.ts - LastBabe adapter
src/providers/lastbabe.ts - Monochrome adapter
src/providers/monochrome.ts - Instable adapter
src/providers/instable.ts - Remote addon adapter
src/providers/remote-addon.ts - Configured HTTP adapter
src/providers/http.ts - Stub adapter
src/providers/stub.ts
Upstream services
- Qobuz-DL service
- LastBabe service
- Monochrome service
- Instable service
- Remote addon services
Other components
- Echo Music user
- Echo Music
Connections 21
- Echo Music user → Echo Music: uses
README.md - Echo Music → HTTP routes: connects to
README.md - HTTP routes → Home player: serves
src/server.ts - HTTP routes → Runtime configuration: loads
src/server.ts - HTTP routes → TTL cache: uses
src/server.ts - HTTP routes → Provider selection: selects providers
src/server.ts - HTTP routes → Track and stream normalization: normalizes results
src/server.ts - Home player → HTTP routes: searches
src/home.ts - Provider selection → First-response race: creates race
src/providers/index.ts - Provider selection → Qobuz-DL adapter: constructs
src/providers/index.ts - Provider selection → LastBabe adapter: constructs
src/providers/index.ts - Provider selection → Monochrome adapter: constructs
src/providers/index.ts - Provider selection → Instable adapter: constructs
src/providers/index.ts - Provider selection → Remote addon adapter: constructs
src/providers/index.ts - Provider selection → Configured HTTP adapter: constructs
src/providers/index.ts - Provider selection → Stub adapter: constructs
src/providers/index.ts - Qobuz-DL adapter → Qobuz-DL service: requests
src/providers/qobuzdl.ts - LastBabe adapter → LastBabe service: requests
src/providers/lastbabe.ts - Monochrome adapter → Monochrome service: requests
src/providers/monochrome.ts - Instable adapter → Instable service: requests
src/providers/instable.ts - Remote addon adapter → Remote addon services: requests
src/providers/remote-addon.ts