MCPcopy Index your code
hub / github.com/LumePart/Explo

github.com/LumePart/Explo @v1.1.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.2 ↗ · + Follow
627 symbols 1,436 edges 52 files 136 documented · 22%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Explo - Music Discovery for Self-Hosted Music Systems

Discord

Explo bridges the gap between music discovery and self-hosted music systems. Its main function is to act as a self-hosted alternative to Spotify’s Discover Weekly, automating music discovery based on your listening history.

Explo uses the ListenBrainz recommendation engine to retrieve personalized tracks and automatically imports them into your music library.


Features

  • Automatic music discovery powered by ListenBrainz
  • Web UI for setup, scheduling, and playlist import management
  • Fetch personalized playlists from ListenBrainz:
  • Weekly Exploration
  • Weekly Jams
  • Daily Jams
  • Import custom playlists from:
  • Apple Music
  • ListenBrainz
  • Spotify
  • Request tracks from YouTube, Soulseek, or both
  • Add metadata to downloaded tracks
  • Create playlists in your music system
  • Keep previous playlists for later listening

Documentation

See the Wiki Home for an overview of supported systems and next steps.

Or jump directly to: - Quick Start – Get Explo running with docker - Getting Started – Installation and setup guide
- Configuration Parameters – Environment variable and flag reference
- System Notes – Known issues and system-specific tips
- FAQ – Common questions

Acknowledgements

Explo uses the following 3rd-party libraries:

  • ffmpeg-go: Go wrapper for FFmpeg

  • goutubedl: Go wrapper for yt-dlp

  • godotenv: Load configuration from .env files

  • ytmusicapi: Unofficial Youtube Music API

  • notify: Module for sending notifications to different services

  • gocron: Internal cron scheduling

Contributing

Contributions are always welcome! If you have any suggestions, bug reports, or feature requests, please open an issue or submit a pull request (be sure to read the development section of our wiki).

For discussion regarding development or help, join our Discord!

Extension points exported contracts — how you extend this code

APIClient (Interface)
(no doc) [5 implementers]
src/client/client.go
Monitor (Interface)
(no doc) [2 implementers]
src/downloader/monitor.go
Discovery (Interface)
(no doc) [1 implementers]
src/discovery/discovery.go
ArtworkUploader (Interface)
ArtworkUploader is an optional capability for clients that support setting playlist artwork. Use a type assertion: if u, [3 …
src/client/client.go
Downloader (Interface)
(no doc) [2 implementers]
src/downloader/downloader.go

Core symbols most depended-on inside this repo

MakeRequest
called by 42
src/util/http.go
setField
called by 37
src/web/frontend/src/components/Wizard.jsx
ParseResp
called by 34
src/util/http.go
isLocked
called by 28
src/web/frontend/src/components/Wizard.jsx
apiFetch
called by 27
src/web/frontend/src/lib/api.js
RequireAuth
called by 27
src/web/backend/auth.go
Handle
called by 21
src/web/backend/middleware.go
WriteHeader
called by 18
src/web/backend/middleware.go

Shape

Function 264
Method 223
Struct 130
Interface 5
TypeAlias 5

Languages

Go81%
TypeScript19%
Python1%

Modules by API surface

src/web/backend/server.go56 symbols
src/client/plex.go40 symbols
src/web/frontend/src/lib/api.js32 symbols
src/web/backend/spotify.go28 symbols
src/downloader/slskd.go28 symbols
src/config/config.go27 symbols
src/web/frontend/src/components/Settings.jsx26 symbols
src/discovery/listenbrainz.go25 symbols
src/client/jellyfin.go25 symbols
src/client/client.go22 symbols
src/web/backend/custom_playlists.go21 symbols
src/web/backend/playlists.go20 symbols

For agents

$ claude mcp add Explo \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact