We were inspired by the Clarifai demonstration at the Opening Ceremony of SwampHacks, where we saw pictures being analyzed to produce recommended tags about them.
What it does
Moody Music suggests a song/ringtone based on your Facebook friends' profile pictures, allowing you to personalize your contacts.
How we built it
We used the Facebook Graph API to retrieve the user's friends and their profile pictures.
We then used the Clarifai API to get the recommended tags for their picture. We created a list of the most commonly returned tags and assigned numerical values to them that helped us determine the 'mood' of the picture to generate song recommendations.
We incorporated the Echo-Nest API and a self-created list of songs to generate a list of recommended songs for the user.
Challenges we ran into
We had trouble connecting our front-end with our back-end smoothly. None of us had used express.js before, so we weren't sure how to get it working.
We had some trouble with AJAX requests initially, but mentors were able to help us.
We ran into some hurdles with the Graph API from Facebook as well as the Clarifai API, but we figured those out with some help from the mentors.
Our initial plan was to put together a multi-platform app using the Ionic Framework, but we weren't able to set it up properly.
Accomplishments that we're proud of
We were able to get the functionality of the application working (the API calls and the final song recommendations). We also created a simple, stylish UI using Bootstrap and CSS.
What we learned
We learned how to incorporate multiple APIs within a single project to get our desired results.
We learned how to retrieve JSON objects from URLs using JQuery and parse the JSON object to get the desired results.
We learned how to customize Bootstrap, adding our own pictures and CSS to suit our purpose.
What's next for Moody Music
Our next step would be to create a multi-platform app using Ionic, making our application widely available to users, and allowing us to easily and effectively integrate our back-end with the app's user interface.