| 📺 Shows Docs | 🐍 GUI Docs | 📧 Twilio Docs |
For option 3, you are going to use the Shows API to create a TV Show watchlist maker! I have created a shows module for you, located in the apis folder that will give you access to a lot of real data from The Movie Database (TMBD). All of the apis/shows.py functions have been documented here.
Your goal is to generate a show watchlist to send to your friends. To do this, you’re going to write a program that allows people to select some different entries for your watchlist: mainly genre(s) and currently airing shows(s).
Note: this is only one way of implementing this program. Feel free to do it your way!
Please implement the following required features of your watchlist maker (we encourage you to start with the show_watchlist_maker.py template):
1. Allow the user to select one or more genres of TV Shows
You will give the user the option of selecting one or more genres that can be used to as a starting point for your watchlist. To do this you will do the following:
- Present the user with a list of available genres using the
shows.get_genresfunction. - Ask the user to select one or more genres and store them in the
user_selectionsdictionary. - The user should be able to clear out or delete these selections.
- We should see these selections displayed on the main menu (like in the demo vid)
These actions must happen when the user clicks on the Select Genres button in the GUI.
2. Allow the user to select one or more currently airing shows
You will also give the user the option of selecting one or more upcoming movies:
- Provide a way for the user to search for and display either (use the
shows.get_upcomingfunction) - Provide a way for the user to select the shows they’re interested in and store them in the
user_selectionsdictionary (hint: store their ids too…) - Allow the user to either clear out / delete or append artists their selections.
- We should see these selections displayed on the main menu (like in the demo vid)
These actions must happen when the user clicks on the Select On Air Shows button in the GUI.
3. Generate and email the watchlist
Given the user’s selected genres and artists:
- Generate a watchlist using the
shows.generate_watchlistfunction. - Print the retrieved shows to the GUI Window using
shows.generate_movie_table. - Ask the user if they want to email the watchlist to someone, and if so, send an email (use the
twilio.send_emailfunction to help you) with the movies. Your email needs to be readable – you can either design a custom email or use theto_HTMLoption of thegenerate_show_tablefunction.
NOTE: The
shows.generate_watchlistfunction’s job is to get movies based on the data you give it. It has very specific requirements about what inputs it needs to work.
These actions must happen when the user clicks on the Generate Watchlist button in the GUI.
Extra Credit Options (Up to 5 Points)
[3 Points] Allow the user to select one or more shows by name
Give the user the option of selecting one or more shows to add to your watchlist. To do this, you will do the following:
- Provide a way for the user to search for and display shows
- Provide a way for the user to select the shows they’re interested in, store them in the
user_selectionsdictionary, and display on the main menu - Allow the user to either clear out or append to their shows list
- Use those shows as input to
shows.generate_watchlist
[3 Points] Allow the user to select one or more currently popular shows
Give the user the option of selecting one or more currently popular shows to add to your watchlist. To do this, you will do the following:
- Provide a way for the user to see currently popular shows
- Provide a way for the user to select the shows they’re interested in, store them in the
user_selectionsdictionary, and display on the main menu - Allow the user to either clear out or append to their shows list
- Use those shows as input to
shows.generate_watchlist
[2 Points] Allow the user to lookup where a show they’ve selected is streaming
Allow the user to pick one of their previously selected shows and display all the streaming services it’s playing on.
[2 Points] Allow the user to lookup what reviews for a show they’ve selected
Allow the user to pick one of their previously selected show and display (in a readable manner) some reviews of that show.
Rubric (40 Possible Points)
| Feature | Points | Scoring Guidelines |
|---|---|---|
| Main Program | 5 points |
|
| Genre Selection | 8 points |
|
| Upcoming Movie Selection | 12 points |
|
| Generate and email the watchlist | 11 points |
|
| Code Quality | 3 points |
|
| Video | 1 point |
|
| Extra credit | Up to 5 points |
|
Template Files
There are a lot of files you need for Project 2 so instead of having you download them one-by-one we’ve compressed them into a ZIP file for you. This means that after you download them, there’s an extra step to get them ready to be used:
Mac Users
For Mac users, the ZIP file that is downloaded will either be automatically extracted into a folder, or you can simply double click on the ZIP file to extract it (turn it into a regular folder). Then you can open any of the .py files by double clicking on the file which will cause it to open in IDLE.
Windows Users
If you’re on a Windows machine, there’s a few extra steps for both of these processes.
To extract a ZIP file, you can follow those instructions here. Note: you must extract these files first in order to use them in IDLE. Otherwise, it will say “read-only” and you will not be able to run or edit the files.
Please read through the assignment text BEFORE downloading the template files. Once you've read through, click the button below.