myspoti
Native Android client for Spotify, built with Jetpack Compose
Find the shortest chain of collaborations linking any two music artists, like the Oracle of Bacon, but for music.
MediaPython · PLpgSQLGitHub @davitrekOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Find the shortest chain of collaborations linking any two music artists, like the Oracle of Bacon (Six Degrees of Kevin Bacon), but for music.
Live at oracleofmusic.app: currently covers the top 5,000 Spotify artists and everyone they've collaborated with.
Built with: Python · Flask · SQLAlchemy · PostgreSQL · Docker · Gunicorn · Nginx · vanilla JS/HTML/CSS · MusicBrainz · Spotify Web API
flowchart LR
A[MusicBrainz dump] --> B[(PostgreSQL)]
B --> C[Adjacency list]
C --> D[BFS]
D --> E[Spotify Web API]
E --> F[HTML/CSS Path]
Follow deploy_database/instructions.txt to start PostgreSQL in Docker and load the MusicBrainz data dump into it.
Create a .env file in the repo root:
| Variable | Description |
|---|---|
DATABASE_URL | SQLAlchemy URL for the MusicBrainz database, e.g. postgresql+psycopg://postgres:<password>@localhost:5432/musicbrainz |
SPOTIFY_CLIENT_ID | Spotify app client ID |
SPOTIFY_CLIENT_SECRET | Spotify app client secret |
ARTIST_NAMES_FILE_PATH | Text file with one artist name per line, most important first |
ARTISTS_TO_LOAD | How many names to read from that file. The app finds Paths between these artists and everyone they've collaborated with. The live site uses the top 5,000 Spotify artists. |
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cd app
gunicorn app:app # or: flask --app app run
The first start builds the collaboration graph and caches it in the database. Later starts reuse the cache.
The tests don't need a database or Spotify credentials:
pytest