More and more video streaming services have been created since the advent of Netflix - from Amazon Prime Video and Hulu to the upcoming Disney+ service.
Lots of the content on these platforms intersects - it's common for users to be recommended content they've already seen on another platform, which can make it pretty hard to find something new to watch. Or maybe you want to watch something with a friend but you can't figure out something new and exciting for the both of you.
VueStream was created to address these drawbacks in an innovative way.
What it does
VueStream scrapes your streaming profiles and aggregates your viewing history to generate unique recommendations of movies and TV shows that you've never seen before - on any streaming platform. Further, VueStream will show you everywhere you can stream the content - so you never overpay.
You can even use VueStream to find movies that you and your friends have never seen - perfect for a fun movie night.
How we built it
Our backend is written in Python, and runs on a Flask server. We use Selenium to web scrape your viewing history by logging into your accounts automatically. The scraped data is stored in a CSV format and is cleaned using Pandas.
We then use the TMDb API to generate metadata for the entries (including genre information), which is later used to generate recommendations. When a user selects a title, we use the JustWatch API to find the cheapest place to stream it.
Our frontend was created in Vue. Using Axios (REST requests) we interface with the backend to query data and send login credentials.
Challenges we ran into
- Connecting our frontend and backend on the local network was problematic because of how eduroam is configured, but we were able to find a workaround
- Scraping Amazon Prime Video began asking for OTP codes (because we requested too many times)
- Minimizing load times to get a good user experience
Accomplishments that we're proud of
- It works!
- It's sexy ( ͡° ͜ʖ ͡°)
- Figuring out we could use the JustWatch API (which isn't meant to be open to the public) to grab data (without having to do much work ourselves)
What we learned
- Using Vue with a Python-based backend
- How to use APIs that aren't supposed to be open to the public (hint hint.. JustWatch)
What's next for VueStream
- Support more streaming platforms - Hulu, Vudu, HBO Now, Google Play, YouTube, etc.