Create playlists while being recommended songs that you will love!
The world of music is constantly growing. Year by year, it is harder to keep up with trends and new songs that keep popping up. Luckily, there are enough people listening to music that finding new songs in playlists from people with similar tastes might not be so difficult after all. This project aims to serve as a recommendation engine for people searching for new songs they will enjoy based on the songs they currently listen to.
The Spotify playlist dataset contains 5 million song playlists from different users. Each playlist contains a list of music tracks. The data model sample is given below:
show dataset sample
{ "name": "musical", "collaborative": "false", "pid": 5, "modified_at": 1493424000, "num_albums": 7, "num_tracks": 12, "num_followers": 1, "num_edits": 2, "duration_ms": 2657366, "num_artists": 6, "tracks": [ { "pos": 0, "artist_name": "Degiheugi", "track_uri": "spotify:track:7vqa3sDmtEaVJ2gcvxtRID", "artist_uri": "spotify:artist:3V2paBXEoZIAhfZRJmo2jL", "track_name": "Finalement", "album_uri": "spotify:album:2KrRMJ9z7Xjoz1Az4O6UML", "duration_ms": 166264, "album_name": "Dancing Chords and Fireflies" }, // 10 tracks omitted { "pos": 11, "artist_name": "Mo' Horizons", "track_uri": "spotify:track:7iwx00eBzeSSSy6xfESyWN", "artist_uri": "spotify:artist:3tuX54dqgS8LsGUvNzgrpP", "track_name": "Fever 99\u00b0", "album_uri": "spotify:album:2Fg1t2tyOSGWkVYHlFfXVf", "duration_ms": 364320, "album_name": "Come Touch The Sun" } ], }
- Generate song recommendations - similar_tracks.py
- Find a similar playlist - similar_playlists.py
- Discover trendy songs - trendy_tracks.py
- Download and install Docker
- Clone this repository, or download the files with GitHub.
- Download the complete Spotify
dataset
and place the
.json
files in the directory/producer/data
(the first file is already there, you can just replace it).
- Run these commands in your favorite terminal/cmd:
docker-compose build
docker-compose up
- Open the app on the address localhost:80.
Thanks goes to these wonderful people (emoji key):
Jure Bajic |
Mislav Vuletic |
Dominik Tomicevic |
This project follows the all-contributors specification. Contributions of any kind welcome!