0% found this document useful (0 votes)
39 views9 pages

Custom Recipe Generator

The document describes a web application that generates custom recipes based on user-input ingredients using Flask and OpenAI's API. It includes HTML and JavaScript code for a user interface where users can input their ingredients and receive a recipe tutorial. The application also features functionality to copy the generated recipe to the clipboard.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views9 pages

Custom Recipe Generator

The document describes a web application that generates custom recipes based on user-input ingredients using Flask and OpenAI's API. It includes HTML and JavaScript code for a user interface where users can input their ingredients and receive a recipe tutorial. The application also features functionality to copy the generated recipe to the clipboard.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Custom Recipe Generator

Code fo the project:

<!DOCTYPE html>

<html>

<head>

<title>Infinite Project Generator</title>

<link

href="https://cdn.jsdelivr.net/npm/[email protected]
alpha1/dist/css/bootstrap.min.css"

rel="stylesheet"

/>

<script>

async function generateTutorial() {

const components =
document.querySelector("#components").value;

const output = document.querySelector("#output");

output.textContent = "Cooking a recipe for you...";

const response = await fetch("/generate", {

method: "POST",

body: new
FormData(document.querySelector("#tutorial-form")),

});

const newOutput = await response.text();

output.textContent = newOutput;

function copyToClipboard() {

const output = document.querySelector("#output");

const textarea = document.createElement("textarea");


textarea.value = output.textContent;

document.body.appendChild(textarea);

textarea.select();

document.execCommand("copy");

document.body.removeChild(textarea);

alert("Copied to clipboard");

</script>

</head>

<body>

<div class="container">

<h1 class="my-4">Custom Recipe Tutorial Generator</h1>

<form

id="tutorial-form"

onsubmit="event.preventDefault(); generateTutorial();"

class="mb-3"

>

<div class="mb-3">

<label for="components" class="form-label"

>Ingredients / Items:</label

>

<input

type="text"

class="form-control"

id="components"

name="components"
placeholder="Enter the list of Ingredients or
items you have e.g. Bread, jam, potato etc. "

required

/>

</div>

<button type="submit" class="btn btn-primary">

Share with me a tutorial

</button>

</form>

<div class="card">

<div

class="card-header d-flex justify-content-between


align-items-center"

>

Output:

<button class="btn btn-secondary btn-sm"


onclick="copyToClipboard()">

Copy

</button>

</div>

<div class="card-body">

<pre id="output" class="mb-0" style="white-space:


pre-wrap">

{{ output }}</pre

>

</div>

</div>

</div>

</body>
</html>

Final Code for the project:

# This code imports the necessary modules and libraries for a Flask web application
that will render templates using OpenAI and accept user input through HTML forms.

from boltiotai import openai

import os

from flask import Flask, render_template_string, request

# Sets the API key for the OpenAI API using the value of the 'OPENAI_API_KEY'
environment variable.

openai.api_key = os.environ['OPENAI_API_KEY']

# This code uses the OpenAI API to generate a tutorial for making a recipe using a
list of components provided as an argument.3

def generate_tutorial(components):

response = openai.chat.completions.create(

model="gpt-3.5-turbo",

messages=[{

"role": "system",

"content": "You are a helpful assistant"

}, {

"role":

"user",

"content":

f"Suggest a recipe using the items listed as available.


Make sure you have a nice name for this recipe listed at the
start. Also, include a funny version of the name of the recipe
on the following line. Then share the recipe in a step-by-step
manner. In the end, write a fun fact about the recipe or any
of the items used in the recipe. Here are the items available:
{components}, Haldi, Chilly Powder, Tomato Ketchup, Water,
Garam Masala, Oil"

}])

return response['choices'][0]['message']['content']

# Create a Flask web application object named app and define a route for the root
URL that responds to GET and POST requests

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])

# This code defines a function that generates a tutorial based on user input obtained
through a POST request.

def hello():

output = ""

if request.method == 'POST':

components = request.form['components']

output = generate_tutorial(components)

# This is a HTML template for a Custom Recipe Generator web


page. It includes a form for users to input a list of
ingredients/items they have, and two JavaScript functions for
generating a recipe based on the input and copying the output
to the clipboard. The template uses the Bootstrap CSS
framework for styling.

return render_template_string('''

<!DOCTYPE html>

<html>

<head>

<title>Infinite Project Generator</title>

<link
href="https://cdn.jsdelivr.net/npm/[email protected]
alpha1/dist/css/bootstrap.min.css"

rel="stylesheet"

/>

<script>

async function generateTutorial() {

const components =
document.querySelector("#components").value;

const output = document.querySelector("#output");

output.textContent = "Cooking a recipe for you...";

const response = await fetch("/generate", {

method: "POST",

body: new
FormData(document.querySelector("#tutorial-form")),

});

const newOutput = await response.text();

output.textContent = newOutput;

function copyToClipboard() {

const output = document.querySelector("#output");

const textarea = document.createElement("textarea");

textarea.value = output.textContent;

document.body.appendChild(textarea);

textarea.select();

document.execCommand("copy");

document.body.removeChild(textarea);

alert("Copied to clipboard");

}
</script>

</head>

<body>

<div class="container">

<h1 class="my-4">Custom Recipe Tutorial Generator</h1>

<form

id="tutorial-form"

onsubmit="event.preventDefault(); generateTutorial();"

class="mb-3"

>

<div class="mb-3">

<label for="components" class="form-label"

>Ingredients / Items:</label

>

<input

type="text"

class="form-control"

id="components"

name="components"

placeholder="Enter the list of Ingredients or


items you have e.g. Bread, jam, potato etc. "

required

/>

</div>

<button type="submit" class="btn btn-primary">

Share with me a tutorial

</button>
</form>

<div class="card">

<div

class="card-header d-flex justify-content-between


align-items-center"

>

Output:

<button class="btn btn-secondary btn-sm"


onclick="copyToClipboard()">

Copy

</button>

</div>

<div class="card-body">

<pre id="output" class="mb-0" style="white-space:


pre-wrap">

{{ output }}</pre

>

</div>

</div>

</div>

</body>

</html>

''',

output=output)

# This code defines a route for the URL "/generate" that only accepts POST
requests.

@app.route('/generate', methods=['POST'])
# This code defines a function 'generate' that takes a POST request containing a
'components' field and returns the result of calling the 'generate_tutorial' function with
the provided components as input.

def generate():

components = request.form['components']

return generate_tutorial(components)

# This code snippet starts the Flask application if the script is being run directly as
the main program, running on the IP address '0.0.0.0' and port number 8080.

if __name__ == '__main__':

app.run(host='0.0.0.0', port=8080)

You might also like