Add getmenu.py
This commit is contained in:
		
							parent
							
								
									daef6086b7
								
							
						
					
					
						commit
						e4ef7499e8
					
				
					 1 changed files with 57 additions and 0 deletions
				
			
		
							
								
								
									
										57
									
								
								getmenu.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								getmenu.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,57 @@
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import requests
 | 
				
			||||||
 | 
					from bs4 import BeautifulSoup
 | 
				
			||||||
 | 
					from datetime import datetime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# URL of the website with the menu links
 | 
				
			||||||
 | 
					url = 'https://www.SCHOOL.org/departments/food-services/menus'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Function to fetch the page and parse the links
 | 
				
			||||||
 | 
					def fetch_menu(url, target_school='Elementary', target_month='April', target_type='lunch'):
 | 
				
			||||||
 | 
					    response = requests.get(url)
 | 
				
			||||||
 | 
					    soup = BeautifulSoup(response.text, 'html.parser')
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Find all <a> tags with the data-file-name attribute
 | 
				
			||||||
 | 
					    links = soup.find_all('a', {'data-file-name': True})
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Filter the links to match the target school, month, and type (lunch or breakfast)
 | 
				
			||||||
 | 
					    for link in links:
 | 
				
			||||||
 | 
					        file_name = link['data-file-name']
 | 
				
			||||||
 | 
					        if target_school.lower() in file_name.lower() and target_month.lower() in file_name.lower() and target_type.lower() in file_name.lower():
 | 
				
			||||||
 | 
					            # Construct the full URL to the PDF
 | 
				
			||||||
 | 
					            pdf_url = 'https://www.SCHOOL.org' + link['href']
 | 
				
			||||||
 | 
					            return pdf_url, file_name
 | 
				
			||||||
 | 
					    return None, None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Function to download the PDF
 | 
				
			||||||
 | 
					def download_pdf(pdf_url, file_name, save_as='menu.pdf'):
 | 
				
			||||||
 | 
					    if not pdf_url:
 | 
				
			||||||
 | 
					        print(f"No menu found for {target_school} in {target_month}")
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    response = requests.get(pdf_url, stream=True)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if response.status_code == 200:
 | 
				
			||||||
 | 
					        with open(save_as, 'wb') as f:
 | 
				
			||||||
 | 
					            for chunk in response.iter_content(chunk_size=8192):
 | 
				
			||||||
 | 
					                f.write(chunk)
 | 
				
			||||||
 | 
					        print(f"Downloaded {file_name} as {save_as}")
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        print("Failed to download the file")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Main function to fetch and download the menu
 | 
				
			||||||
 | 
					def main():
 | 
				
			||||||
 | 
					    # Get the current month in a format like 'April', 'March', etc.
 | 
				
			||||||
 | 
					    current_month = datetime.now().strftime('%B')  # 'April' for example
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Set your target school
 | 
				
			||||||
 | 
					    target_school = 'Elementary'  # Change this to 'Middle' or 'High' for other menus
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Fetch the menu URL
 | 
				
			||||||
 | 
					    pdf_url, file_name = fetch_menu(url, target_school='Elementary', target_month=current_month, target_type='lunch')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Download the PDF
 | 
				
			||||||
 | 
					    download_pdf(pdf_url, file_name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == "__main__":
 | 
				
			||||||
 | 
					    main()
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue