Try it out here!
This project allows you to explore a 3D galaxy, where each star represents a musical artist. Each star can be clicked, which will open up a sidebar containing relevant information about the artist, as well as a top 10 of artists that are similar which can be used to easily find new music recommendations. Additionally, you can use the search bar for easy lookup.
- Fully 3D explorable galaxy, where each star is clickable and labeled with an artist name
- Artist search
- Artist information derived from last.fm (artist bio, user tags)
- List of top 10 most similar artists for each selected artist, where each entry is clickable to allow for easy navigation
- Links to popular music platforms (Spotify, Apple Music, YouTube) if available on Wikidata
First, open up a terminal and navigate to the ./docs/ directory:
cd /your/path/to/docs/Here, start a local server, for example using Python's built-in module:
python -m http.serverTo open this in a browser, ctrl-click the URL that will appear in the terminal:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...Alternatively, open up your browser and enter the following in the search bar:
localhost:8000/
To close the server, simply use ctrl-c in the terminal (or close it).
(NOTE: to run these steps, you will first need to request a last.FM api key here).
The ./src/ folder includes the pre-processing code required to generate the data. Here, you can experiment with different settings for the amount of top artists, recursion depth, amount of similar artists and galaxy shape. To run, simple run the following commands in the music_milkyway/ directory:
export LASTFM_API_KEY="your_api_key"
python src/app/app.pyNOTE: This assumes you have the required packages installed. If not, install these first by running the following in the same directory:
pip install -r requirements.txtIt is recommended that you do this in a virtual environment.
- Python 3.12
- Node2vec, scikit-learn, plotly
- last.fm API
- Wikidata + SparQL
- HTML/CSS/JavaScript
- three.js
