Inspiration

COVID-19 has put a stringent halt on movie theatres. When restrictions will be eventually lifted after the pandemic, many people will be interested in movies and theatres will likely surge in customers. Since seats fill up quite fast, it is important to quickly choose the next movie to watch based on general ratings and personal preferences.

What it does

This web app scrapes recent reviews from Rotten Tomatoes on both upcoming and older classic films. The source of reviews does not derive from a few critics but rather ordinary movie goers. Comments under a group of reviews are aggregated into a text block before undergoing sentimental analysis. The user first enters a keyword which triggers a webscrape for all movies with titles containing said keyword. The relevant movies are displayed on a moving carousel. When the use clicks on any movie, a score would be computed and displayed regarding the net difference between positive and negative sentiment from recent reviews. As a bonus, those more curious will find an automatic text analysis using Matlab, which highlights the most common and important words that reviewers descry the film.

How we built it

The frontend was made as a React application. The backend contains multiple application logic components, including a webscraper script (BeautifulSoup4 and Selenium) and NLP processing script for sentimental analysis in Python (NLTK and TextBlob). The frontend and backend communicates through a Flask application.

Challenges we ran into

Scraping the backend involved searching how to traverse a shadow DOM using Selenium. We have no real front end developer so Eileen taught herself React. Hosting web app on Heroku also constituted a major morass of debugging. Although not as time consuming, getting Python to execute a Matlab (.m) file after encountering multiple path errors. This is especially challenging given that some of us have never used Matlab before.

Accomplishments that we're proud of

For the backend, live retrieval of information from the web for NLP application logic in the background seems quite an accomplishment. Overall, building an app that is useful, simplistic, and has potential to integrate with APIs in the future.

What we learned

Some learning accomplishments include studying Matlab from scratch, building React applications integrated with Flask, and in general how to combine different technologies together to achieve a desired functionality.

What's next for uMovie

Prettify the UI for the web app, including more APIs, and creating more endpoints for new functional features are some of the future goals. Scalability to pull much more reviews for sentiment analysis from more movies and streaming providers (Hulu, Netflix, Rotten Tomatoes, etc.) are expected. Additionally, having the option to use only critic reviews or all general reviews will allow users to tweak the trustworthiness of reviews.

Share this project:

Updates