Even superheroes need to Netflix and chill sometimes. But can't decide what to watch on Netflix? No problem. NetflixRemote helps you battle the paradox of choice by selecting your movie for you and automatically opening it on your computer.
All you have to do is press a button on the "remote" corresponding to your genre of choice.
What it does
NetflixRemote is a very simple remote that connects to your Wi-Fi and computer through Google's Firebase real-time database. It has only 4 buttons, corresponding to comedy, crime, horror, and sci-fi. Just press the button corresponding to what type of movie/show you want to watch, and magically see a movie/tv-show start playing on your computer.
How I built it
The ESP32 is connected to Firebase through Wi-Fi and updates the database every time a button is pressed. The buttons are connected via a resistor ladder to one analog input pin. Once a button is pressed, the ESP32 uploads a code to the Firebase database. A python code running on the computer is continuously listening for updates to the database. Once the Python programs receive the code: The program opens a headless chrome instance to link and automatically fills out the form uses the website to find a movie of the selected genre. The program looks for the Netflix URL of the movie found. Once this is found, the headless Chrome instance is closed The Netflix URL is opened with the default browser of the computer.
Challenges I ran into
We wanted to create a proper remote using IR. However, we pivoted to using Wi-Fi as we could not have the hardware available in time. It was our first time using Firebase and application backends, and that had a learning curve for both of us. The Python library we used to integrate Firebase(Pyrebase) had very poor documentation and we had to figure out how to create a real-time database stream ourselves. Authentication methods for Firebase are different for the Arduino/ESP32 and Python are different. Hence, it became a bit difficult for us to connect both the computer and the remote separately. We had trouble figuring out how to connect our remote to Wi-Fi. Navigating through the Reelgood site was very difficult using Python, as they use too many div tags with the same CSS classes. It was difficult creating a methodology to find exactly what we were looking for in the webpage.
Accomplishments that I'm proud of
We ran into hardware issues towards the start of our hackathon. Hence, we decided to pivot and use Wi-Fi instead of IR to accomplish what we wanted to. Harvesting the Netflix URL from the Reelgood site was a big challenge, and we are really happy that we were able to get the web-scraping aspect working. Connecting the ESP32/Arduino to WiFi and Firebase.
What I learned
How to use Firebase Web scraping with Python Our first foray into IoT(ESP32)
What's next for NetflixRemote
The Reelgood site also has possibilities to sort by IMDb rating and reelgood rating, which we plan to introduce on the remote in the future.