Source code for recipebox_pkg.fetch_recipe

import pandas as pd
import requests
import os
import json


[docs] def search_recipes(api_key, query, r_diet = None, r_excludeIngredients = None, r_intolerances = None, r_number = 10): """ Search for recipes based on a specified query and additional parameters using the Spoonacular API. Parameters: - api_key (str): The API key for accessing the Spoonacular API. - query (str): The search query for recipes. - r_diet (str): The diet type to filter recipes (e.g., 'vegetarian', 'vegan'). - r_excludeIngredients (str): Ingredients to exclude from the recipes. - r_intolerances (str): Intolerances to consider when searching for recipes. - r_number (int): The maximum number of recipes to retrieve (default is 10). Returns: - dict or None: A dictionary containing recipe information or None if an error occurs. """ url = 'https://spoonacular-recipe-food-nutrition-v1.p.rapidapi.com/recipes/search' params = {'query': query, 'diet': r_diet, 'excludeIngredients': r_excludeIngredients, 'intolerances': r_intolerances, 'number': r_number } headers = { 'x-rapidapi-host': 'spoonacular-recipe-food-nutrition-v1.p.rapidapi.com', 'x-rapidapi-key': api_key } try: response = requests.get(url, params=params, headers=headers) response.raise_for_status() recipe_response = response.json() return recipe_response except Exception as e: print(f"An error occurred: {e}") return None
[docs] def convert_recipes(response): """ Convert recipe information from Spoonacular API response to a styled DataFrame. Parameters: - response (dict): The response from the Spoonacular API containing recipe information. Returns: - pd.io.formats.style.Styler: A styled DataFrame with selected columns and formatted 'sourceUrl' column. """ result = response['results'] df = pd.DataFrame(result) df = df.set_index(['id'], inplace=False) new_order = ['title', 'servings', 'readyInMinutes', 'sourceUrl'] new_df = df[new_order] styled_df = new_df.style styled_df = styled_df.format({'sourceUrl': lambda x: f'<a href="{x}" target="_blank">{x}</a>'}) return styled_df