Facebook Movie Visualization Mashup | Facebook + NYTimes Movie Reviews API

The Assignment.

For this assignment, we were tasked with creating a data visualization that uses two potentially unrelated APIs to create one cohesive “mashup” visualization. Chris Piuggi and I teamed up to make something out of the Facebook API and NYTimes Best Sellers API, but after some initial research quickly changed to the NYTimes Movie Reviews API in order to access information that would be more relevant in the context of a social network service.

The Concept.

We began to develop the idea of a Facebook Movie Recommendation Service (FMRS) that would primarily make use of the Facebook API to pull information about your favorite movies as well as those of your friends to create a sort of visual Pandora for movies. This interaction provided users a path to discover similarities between friends and movies, and begin to discover new titles they might enjoy. The envisionined application seeks to provide recommendations based on friends rather than individual preferences to show a wealth of options, as well as prompt discover between the user and data. The hope would be to grow this into a full fledged system in which users could recommend movies and find ratings, based on their friends, as well as their preferences. Integration of Netflix API could potentially create this dynamic interchange between the user and the data.

Movie Visualization Mockup

Movie Visualization Mockup

Movie Visualization Mockup

Movie Visualization Mockup

The Implementation.

As we started to work on the visualization, it became apparent that the Facebook API is a beast. We tried to grapple with several different APIs within the Facebook API structure, spending some time working with the FQL (Facebook Query Language) API only to find out that it was not going to meet our needs given our familiarity with the API’s unique quirks in the given amount of time. We then decided to use the graph API (a REST API) to access data about you and your friends and could get data reliably from our own friends, but only if we manually went into the system and extracted an authentication token every ten minutes when it expired. Wanting to make this a realistic app, we decided to tackle some javascript in order to allow the user to log in to their Facebook account on the same page and get authentication that way (since we clearly wouldn’t have users playing in the code itself).

This is where things got sticky. In order to use these login authentication features, we needed to use javascript, a language in which neither of us have much experience. We made a lot of progress and got to a point where we had data from several different sources ready to be called, but could never get all of the languages to talk to each other. The complications of passing variables between PHP, javascript and Processing.js turned out to be very tricky, and got the best of us on this go around, but with more time we hope to be able to get all of the components coexisting happily in the future.

Aside from the data being accessed but not passable between languages at our point of progress, we also created a Processing sketch that we included in a web page to perform the actual visualization. In the sketch, the user would click the wheel or hit a key to move the “carousel” either forward or backward in order to see each of their friend’s movie preferences. A video of the interaction can be viewed below.

Future Considerations.

In the future it would be great to get all the variables talking to each other and really get this visualization off the ground. We think that it would provide a unique and useful service to Facebook users once we integrate the separate movie information and reviews and got the visuals working exactly as we would like them, and hope to see a more developed version in the future now that we’ve been able to learn a little bit more about all the web language interactions going on behind the scenes.

This entry was posted in Data Mashups!, Homework. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *