#!/usr/bin/env python3 from textwrap import fill import requests from bs4 import BeautifulSoup from termcolor import colored from prettytable import PrettyTable url = "https://cheeseboardcollective.coop/pizza/" def main(): content = requests.get(url) soup = BeautifulSoup(content.text, "html.parser") magic_ingredients = ["corn"] table = PrettyTable() table.field_names = ["date", "pizza"] table.align = "l" pizzas = soup.select(".pizza-list > article") for pizza in pizzas: date_color = "white" menu_color = "white" date = pizza.find(class_="date").text # the pizza is the 1st element, the 2nd is the salad, and i don't # care about the salad :) menu = pizza.select(".menu > p:nth-of-type(1)")[0].get_text(strip=True, separator="\n").split("\n") if "closed" in menu[0]: date_color = "red" if "Parbake pizza is available" in menu[0]: menu.pop(0) if "Lunch from" in menu[0]: menu.pop(0) if "No hot pizza today" in menu[0]: menu.pop(0) final_menu = "".join(menu) for ingredient in magic_ingredients: if ingredient in final_menu: menu_color = "yellow" table.add_row([colored(date, date_color), fill(colored(final_menu, menu_color), width=80)]) print(table)