Welcome to Flow, a service designed to curate a playlist based on your current mood and Spotify history. Simply capture a selfie showing how you feel, and we’ll do the work for you!
We love music and are avid Spotify users, however, we wanted a more personalized experience and we thought this was the perfect opportunity to gain firsthand experience in machine learning as well! Flow is inspired by our passion for creating innovative and exciting software projects- specifically our desire to learn new concepts, frameworks, libraries, and tools used in the present tech industry.
Flow utilizes Azure Cognitive Services to detect the user’s dominant mood and Spotify Developer's Web API to collect the user’s Spotify history such as their favourite songs, recently played, relevant albums/artists and more. Once all the necessary information is collected, the data is passed to a machine learning algorithm we implemented, known as K-means, to find clusters of songs relevant to the user’s mood and Spotify history.
Certain optimizations made to K-means include using K-means++ to ensure better initialization of the centroids, as well as implementing the silhouette method to find the optimal value of k (number of clusters).
- Express
- Azure Cognitive Servces
- Spotify for Developers
- Express-session
- memorystore
- Mocha
- Chai
- Bootstrap
- JQuery
- Chart.js
To get a local copy up and running follow these simple example steps.
- npm
npm install npm@latest -g
- Spotify Developer Account
Follow the steps at https://developer.spotify.com/documentation/web-api/quick-start/
- Spotify User Account
Register here https://www.spotify.com/
- Azure Cognitive Services Face API
Create an Azure subscription and head to https://portal.azure.com/#create/Microsoft.CognitiveServicesFace in the Azure Portal to get your key and endpoint
- Clone the repo
git clone https://github.com/ericrkuo/Flow.git
- Install NPM packages
npm install
- Copy
sample.env
and rename to.env
in the root directory of the code. Then fill out the respective environment variables.
This section is currently unavailable! Check back soon!
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.
Lily Du - @LinkedIn - lilyyduu@gmail.com
Eric Kuo - @LinkedIn - ericrkuo@gmail.com
Project Link: https://github.com/ericrkuo/Flow