📺 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:

  1. Present the user with a list of available genres using the shows.get_genres function.
  2. Ask the user to select one or more genres and store them in the user_selections dictionary.
  3. The user should be able to clear out or delete these selections.
  4. 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:

  1. Provide a way for the user to search for and display either (use the shows.get_upcoming function)
  2. Provide a way for the user to select the shows they’re interested in and store them in the user_selections dictionary (hint: store their ids too…)
  3. Allow the user to either clear out / delete or append artists their selections.
  4. 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:

  1. Generate a watchlist using the shows.generate_watchlist function.
  2. Print the retrieved shows to the GUI Window using shows.generate_movie_table.
  3. Ask the user if they want to email the watchlist to someone, and if so, send an email (use the twilio.send_email function to help you) with the movies. Your email needs to be readable – you can either design a custom email or use the to_HTML option of the generate_show_table function.

NOTE: The shows.generate_watchlist function’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:

  1. Provide a way for the user to search for and display shows
  2. Provide a way for the user to select the shows they’re interested in, store them in the user_selections dictionary, and display on the main menu
  3. Allow the user to either clear out or append to their shows list
  4. Use those shows as input to shows.generate_watchlist

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:

  1. Provide a way for the user to see currently popular shows
  2. Provide a way for the user to select the shows they’re interested in, store them in the user_selections dictionary, and display on the main menu
  3. Allow the user to either clear out or append to their shows list
  4. 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
  • Handles errors (incorrect inputs) (Note: this applies anywhere you ask the user for input)
  • App prompts the user for their input
  • App honors user requests
  • App does not exit unless user asks to quit
Genre Selection 8 points
  • Displays the user's selected genre(s) if any on the Main Menu
  • Displays available genres via the GUI (either popup or textbox)
  • Allows user to select among the genres that are presented (and no others)
  • Allows user to clear out their selected genres and start over
Upcoming Movie Selection 12 points
  • Allows user to search for currently on air shows
  • Allows user to select among shows returned from the API
  • Allows user to clear out selected shows and start over
  • Displays the user's selected show names via the GUI textbox
Generate and email the watchlist 11 points
  • Correctly passes arguments of correct type into the generate_watchlist function
  • Displays watchlist to the GUI textbox (including show name and info)
  • Successfully emails the watchlist list in either a readable plain text format or in the provided HTML format
Code Quality 3 points
  • All functions, variables, and file_names have mnemonic names / are snake case (up to -2 points)
  • Code is organized and without unused or redundant code. Please remove commented out code that isn’t running (to help our graders) (up to -3 points)
Video 1 point
  • Your video clearly demonstrates the features you implemented
Extra credit Up to 5 points
  • Students completed various EC options according to the specifications above

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.

🙏 I promise I've read the instructions and am ready to download! 🙏
Project Starter Files