अब यहां-वहां सही रेसिपी खोजने में समय बर्बाद करने की जरूरत नहीं है। अपना वैयक्तिकृत रेसिपी खोजक एप्लिकेशन बनाने के लिए इस गाइड का उपयोग करें।

सैकड़ों लिंक और विज्ञापनों के साथ पूरे इंटरनेट पर व्यंजनों की बहुतायत बिखरी होने के कारण, सही नुस्खा ढूंढना चुनौतीपूर्ण हो सकता है। एक रेसिपी फ़ाइंडर ऐप बनाने से आपको सभी अप्रासंगिक परिणामों और विकर्षणों को दूर करते हुए एक अनुरूप और उपयोगकर्ता-अनुकूल अनुभव और सुसंगत डिज़ाइन मिलता है।

.इस एप्लिकेशन का निर्माण करके, आप HTTP अनुरोधों, एपीआई कुंजी प्रबंधन, छवि हेरफेर और गतिशील जीयूआई अपडेटिंग सहित ग्राफिकल यूजर इंटरफेस के निर्माण में अपने कौशल को तेज करेंगे।

टिंकर, रिक्वेस्ट, पिलो और वेबब्रोसर मॉड्यूल स्थापित करें

रेसिपी खोजक एप्लिकेशन बनाने के लिए, आपको टिंकर, रिक्वेस्ट, पीआईएल और वेबब्रोसर मॉड्यूल की आवश्यकता होती है। टिंकर आपको डेस्कटॉप एप्लिकेशन बनाने की अनुमति देता है। यह विभिन्न प्रकार के विजेट प्रदान करता है जो GUI विकसित करना आसान बनाता है। टिंकर स्थापित करने के लिए, टर्मिनल खोलें और चलाएं:

pip install tkinter

अनुरोध मॉड्यूल HTTP अनुरोध करना और एक प्रतिक्रिया ऑब्जेक्ट लौटाना आसान बनाता है जिसमें एन्कोडिंग और स्थिति जैसे डेटा शामिल होते हैं। आप इसका उपयोग कॉलर आईडी जानकारी प्राप्त करने के लिए कर सकते हैं,

instagram viewer
एक वेबसाइट स्टेटस चेकर बनाएं, मुद्रा परिवर्तक, या एक समाचार अनुप्रयोग. अनुरोध मॉड्यूल स्थापित करने के लिए, टर्मिनल खोलें और चलाएं:

pip install requests

पिलो लाइब्रेरी - पायथन इमेजिंग लाइब्रेरी (पीआईएल) का एक कांटा - छवि प्रसंस्करण क्षमताएं प्रदान करता है जो संपादन, निर्माण में मदद करता है। फ़ाइल स्वरूपों को परिवर्तित करना, और छवियाँ सहेजना। पिलो मॉड्यूल स्थापित करने के लिए, टर्मिनल खोलें और चलाएं:

pip install Pillow

वेबब्रोसर मॉड्यूल आपके डिफ़ॉल्ट ब्राउज़र में किसी भी लिंक को खोलने में आपकी मदद करता है। यह Python मानक लाइब्रेरी का एक हिस्सा है। इसलिए, आपको इसे बाहरी रूप से स्थापित करने की आवश्यकता नहीं है।

रेसिपी खोज के लिए एडमैम एपीआई कुंजी जेनरेट करें

एडमम रेसिपी सर्च एपीआई कुंजी उत्पन्न करने के लिए, निम्नलिखित चरणों का पालन करें:

  1. मिलने जाना एडमाम और पर क्लिक करें साइनअप एपीआई बटन। विवरण भरें, और अपनी योजना चुनें रेसिपी खोज एपीआई - डेवलपर.
  2. अपने खाते में लॉग इन करें, पर क्लिक करें खाते बटन, और फिर पर क्लिक करें डैशबोर्ड पर जाएँ बटन।
  3. इसके बाद पर क्लिक करें अनुप्रयोग टैब और अंत में पर क्लिक करें देखना रेसिपी सर्च एपीआई के आगे बटन।
  4. कॉपी करें आवेदन पहचान पत्र और यह आवेदन कुंजियाँ और इसे अपने एप्लिकेशन में उपयोग करने के लिए संग्रहीत करें।

शीर्ष 5 व्यंजन प्राप्त करने के लिए कार्यक्षमता का निर्माण

आप इसमें पायथन का उपयोग करके रेसिपी खोजक एप्लिकेशन बनाने के लिए संपूर्ण स्रोत कोड पा सकते हैं गिटहब रिपॉजिटरी.

आवश्यक मॉड्यूल आयात करें. एक विधि परिभाषित करें get_top_5_recipes() जो उपयोगकर्ता द्वारा खोजे गए व्यंजन के शीर्ष पांच व्यंजनों के शीर्षक, चित्र और लिंक पुनर्प्राप्त करता है। उपयोग पाना() उपयोगकर्ता द्वारा खोजे गए व्यंजन का नाम निकालने के लिए।

यदि उपयोगकर्ता ने एक रेसिपी नाम दर्ज किया है, तो एडमैम एपीआई की रेसिपी खोज समापन बिंदु के लिए आधार यूआरएल परिभाषित करें। इधर दें ऐप_आईडी और ऐप_कुंजी आपने एपीआई अनुरोधों को प्रमाणित और अधिकृत करने के लिए पहले कॉपी किया था।

import tkinter as tk
import requests
from PIL import Image, ImageTk
import webbrowser

defget_top_5_recipes():
recipe_name = entry_recipe_name.get()
if recipe_name:
api_url = "https://api.edamam.com/search"
app_id = # Put your app id for edamam api
app_key = # Put your app key for edamam api

एक शब्दकोश बनाएं, पैरामीटर इसमें विभिन्न पैरामीटर शामिल हैं जिन्हें आपको एपीआई अनुरोध के हिस्से के रूप में पारित करना होगा। के लिए कुंजी-मान जोड़े सेट करें क्यू, ऐप_आईडी, और ऐप_कुंजी उन मूल्यों के लिए जो आपको पहले मिले थे। ठीक से और को आप जो परिणाम देखना चाहते हैं उनकी संख्या दर्शाने के लिए पैरामीटर।

एपीआई यूआरएल और को मिलाकर एडमैम एपीआई को एक जीईटी अनुरोध भेजें पैरामीटर शब्दकोष। प्रतिक्रिया को संग्रहीत करें और उसे JSON प्रारूप में निकालें। पुकारना क्लियर_रेसिपी_लिस्ट() पहले के अनुरोधों से स्क्रीन पर मौजूद व्यंजनों को हटाने के लिए।

 params = {
"q": recipe_name,
"app_id": app_id,
"app_key": app_key,
"from": 0,
"to": 5,
}

response = requests.get(api_url, params=params)
data = response.json()
clear_recipe_list()

जांचें कि क्या कुंजी, एचआईटीएस निकाले गए JSON डेटा में मौजूद है और यदि इसमें खोज परिणाम शामिल है। यदि हां, तो खोज परिणामों पर दोबारा गौर करें और एक-एक करके रेसिपी की जानकारी निकालें। छवि URL पर GET अनुरोध भेजें धारा पैरामीटर सेट किया गया है सत्य छवि डेटा की स्ट्रीमिंग की अनुमति देने के लिए।

तकिया मॉड्यूल का प्रयोग करें छवि आपको प्राप्त छवि को खोलने के लिए कक्षा। का उपयोग करके 200 पिक्सेल की ऊँचाई और चौड़ाई वाला इसका आकार बदलें लैंज़ोस उच्च गुणवत्ता वाले आकार बदलने के लिए पुन: नमूनाकरण विधि। इसे टिंकर-संगत में बदलें फोटोछवि इसे ग्राफिकल यूजर इंटरफ़ेस पर प्रदर्शित करने के लिए।

if"hits"in data and data["hits"]:
for i, hit in enumerate(data["hits"]):
recipe = hit["recipe"]
recipe_list.append(recipe)
recipe_name = recipe["label"]
recipe_link = recipe["url"]
image_url = recipe["image"]

image_response = requests.get(image_url, stream=True)
image = Image.open(image_response.raw)
image = image.resize((200, 200), Image.LANCZOS)
photo_image = ImageTk.PhotoImage(image)

एप्लिकेशन की संरचना का निर्माण

रेसिपी का शीर्षक, छवि और रेसिपी का लिंक प्रदर्शित करने के लिए तीन लेबल परिभाषित करें। वह मूल विंडो सेट करें जिसमें आप उसे रखना चाहते हैं, वह टेक्स्ट जिसे आप प्रदर्शित करना चाहते हैं, और वह फ़ॉन्ट शैली जो उसमें होनी चाहिए। छवि प्रदर्शित करने के लिए, सेट करें छवि विशेषता फोटो_इमेज. ठीक कर्सर लिंक लेबल में विकल्प हाथ2 इसे क्लिक करने योग्य बनाने के लिए.

लिंक को बाइंड करें और कॉल करने के लिए बाईं माउस क्लिक करें खुला लिंक() समारोह। का उपयोग करके सभी विजेट व्यवस्थित करें सामान बाँधना विधि, उन्हें क्षैतिज रूप से केन्द्रित करें, और आवश्यकतानुसार पैडिंग जोड़ें। शीर्षक, चित्र और लिंक को तीन अलग-अलग सूचियों में जोड़ें।

 recipe_title_label = tk.Label(
canvas_frame,
text=f"{i+1}. {recipe_name}",
font=("Helvetica", 12, "bold"),
)
recipe_title_label.pack(pady=(5, 0), anchor=tk.CENTER)

image_response = requests.get(image_url, stream=True)
image = Image.open(image_response.raw)
image = image.resize((200, 200), Image.LANCZOS)
photo_image = ImageTk.PhotoImage(image)
image_label = tk.Label(canvas_frame, image=photo_image)
image_label.image = photo_image
image_label.pack(pady=(0, 5), anchor=tk.CENTER)

link_label = tk.Label(
canvas_frame, text=recipe_link, fg="blue", cursor="hand2"
)
link_label.pack(pady=(0, 10), anchor=tk.CENTER)
link_label.bind(
"", lambda event, link=recipe_link: open_link(link)
)

recipe_labels.append(recipe_title_label)
recipe_images.append(photo_image)
recipe_links.append(link_label)

एक विधि परिभाषित करें, क्लियर_रेसिपी_लिस्ट() पिछले अनुरोध द्वारा उत्पन्न संपूर्ण स्क्रीन सामग्री को साफ़ करने के लिए। रेसिपी सूची की सामग्री साफ़ करें और प्रत्येक लेबल पर पुनरावृति करें रेसिपी_लेबल सूची।

को कॉल कर रहा हूँ पैक_भूल जाओ() डिस्प्ले से लेबल हटाने लेकिन विजेट ऑब्जेक्ट को बरकरार रखने की विधि।

इसे क्लियर करें रेसिपी_लेबल नए डेटा के लिए सूची. छवियों और लिंक के लिए भी इस प्रक्रिया को दोहराएं। एक विधि परिभाषित करें, खुला लिंक() अपने डिफ़ॉल्ट वेब ब्राउज़र में रेसिपी लिंक खोलने के लिए।

defclear_recipe_list():
recipe_list.clear()
for label in recipe_labels:
label.pack_forget()
recipe_labels.clear()
for image_label in recipe_images:
image_label.pack_forget()
recipe_images.clear()
for link_label in recipe_links:
link_label.pack_forget()
recipe_links.clear()

defopen_link(link):
webbrowser.open(link)

टिंकर रूट विंडो को प्रारंभ करें। एप्लिकेशन का शीर्षक, आयाम और पृष्ठभूमि रंग सेट करें। एक फ़्रेम विजेट को परिभाषित करें और उसके मूल तत्व को उसके पृष्ठभूमि रंग के साथ सेट करें। एक लेबल, एक प्रविष्टि और एक खोज बटन बनाएं। का उपयोग करके सभी विजेट व्यवस्थित करें सामान बाँधना विधि और आवश्यकतानुसार पैडिंग जोड़ें।

root = tk.Tk()
root.title("Recipe Finder")
root.geometry("600x600")
root.configure(bg="#F1F1F1")

frame = tk.Frame(root, bg="#F1F1F1")
frame.pack(fill=tk.BOTH, expand=tk.YES, padx=20, pady=20)

label_recipe_name = tk.Label(
frame, text="Enter Recipe Name:", font=("Helvetica", 14, "bold"), bg="#F1F1F1"
)
label_recipe_name.pack()

entry_recipe_name = tk.Entry(frame, font=("Helvetica", 12))
entry_recipe_name.pack(pady=5)

search_button = tk.Button(
frame,
text="Search Recipes",
font=("Helvetica", 12, "bold"),
command=get_top_5_recipes,
)
search_button.pack(pady=10)

रेसिपी की जानकारी रखने वाले विजेट प्रदर्शित करने के लिए सफेद पृष्ठभूमि वाला एक कैनवास बनाएं। इसे विंडो के बाईं ओर व्यवस्थित करें, फ़्रेम में सभी जगह को दोनों दिशाओं में लें और आकार बदलने पर इसका विस्तार करें।

कैनवास के लिए एक ऊर्ध्वाधर स्क्रॉलबार बनाएं और इसे उसके दाईं ओर रखें। लिंक करें स्क्रॉलबार.सेट करने की विधि कैनवास.वाईव्यू विधि ताकि स्क्रॉलबार को स्क्रॉल करने से कैनवास सामग्री स्क्रॉल हो जाएगी।

रेसिपी आइटम के लिए एक कंटेनर के रूप में कार्य करने के लिए कैनवास के अंदर एक फ्रेम बनाएं, जो विंडो के ऊपर बाईं ओर स्थित हो। बाँधो घटना ऐसी है कि यह सुनिश्चित करती है कि जब इसकी सामग्री बदलती है या आकार बदलती है तो बॉक्स सही ढंग से स्क्रॉल कर सकता है।

canvas = tk.Canvas(frame, bg="white")
canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=tk.YES)

scrollbar = tk.Scrollbar(frame, orient=tk.VERTICAL, command=canvas.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
canvas.configure(yscrollcommand=scrollbar.set)

canvas_frame = tk.Frame(canvas, bg="white")
canvas.create_window((0, 0), window=canvas_frame, anchor=tk.NW)
canvas_frame.bind(
"", lambda event: canvas.configure(scrollregion=canvas.bbox("all"))
)

व्यंजनों, लेबल, छवियों और लिंक के लिए सूची परिभाषित करें। मुख्य घेरा() फ़ंक्शन पायथन को टिंकर ईवेंट लूप चलाने और विंडो बंद करने तक ईवेंट सुनने के लिए कहता है।

recipe_list = []
recipe_labels = []
recipe_images = []
recipe_links = []

root.mainloop()

यह सब एक साथ रखें और एक बटन के एक क्लिक पर व्यंजनों की खोज करें।

रेसिपी खोजक एप्लिकेशन का आउटपुट

प्रोग्राम चलाने और डिश को चिकन बर्गर के रूप में दर्ज करने पर, आपको शीर्ष पांच परिणाम मिलते हैं। इसमें आपके द्वारा दर्ज किए गए व्यंजन का शीर्षक, छवि और रेसिपी लिंक शामिल है। लिंक पर क्लिक करने पर डिफ़ॉल्ट वेब ब्राउज़र रेसिपी लिंक खोलता है। नीचे स्क्रॉल करने पर, सामग्री का आकार समान रहता है और क्षैतिज रूप से केंद्रित विभिन्न परिणाम प्रदर्शित करता है।

रेसिपी खोजक एप्लिकेशन को उन्नत करना

अपने रेसिपी खोजक एप्लिकेशन को बेहतर बनाने के लिए, आप विभिन्न प्राथमिकताओं के अनुसार फ़िल्टरिंग और सॉर्टिंग लागू कर सकते हैं। आप किसी व्यंजन को आहार संबंधी प्राथमिकता, खाना पकाने के समय और व्यंजन के अनुसार फ़िल्टर कर सकते हैं और उन्हें किसी भी क्रम में क्रमबद्ध कर सकते हैं।

अपने पसंदीदा व्यंजनों को बाद में देखने के लिए बुकमार्क करने की सुविधा और उन्हें सोशल मीडिया पर साझा करने का विकल्प बनाएं। आप सर्वाधिक खोजे गए व्यंजन, सर्वाधिक बुकमार्क किए गए इत्यादि खोजने के लिए एक श्रेणी बना सकते हैं।

अपने प्रोग्रामिंग कौशल और एपीआई की शक्तिशाली विशेषताओं को मिलाकर, आप इस बुनियादी एप्लिकेशन को एक पूर्ण एप्लिकेशन में बदल सकते हैं।