لا مزيد من إضاعة الوقت في البحث هنا وهناك عن الوصفة المثالية. استخدم هذا الدليل لإنشاء تطبيق البحث عن الوصفات المخصص.
مع وفرة الوصفات المنتشرة في جميع أنحاء الإنترنت مع مئات الروابط والإعلانات ، قد يكون العثور على الوصفة المثالية أمرًا صعبًا. يوفر لك إنشاء تطبيق الباحث عن الوصفات تجربة مخصصة وسهلة الاستخدام ، وتصميمًا متسقًا ، مما يلغي جميع النتائج غير ذات الصلة والمشتتات
من خلال إنشاء هذا التطبيق ، ستصقل مهاراتك في طلبات HTTP وإدارة مفاتيح واجهة برمجة التطبيقات ومعالجة الصور وإنشاء واجهات مستخدم رسومية بما في ذلك التحديث الديناميكي لواجهة المستخدم الرسومية.
قم بتثبيت وحدة Tkinter والطلبات والوسادة ومستعرض الويب
لإنشاء تطبيق الباحث عن الوصفات ، فإنك تحتاج إلى Tkinter ، وطلبات ، و PIL ، ووحدة Webbrowser. يسمح لك Tkinter بإنشاء تطبيقات سطح المكتب. يقدم مجموعة متنوعة من الأدوات التي تسهل تطوير واجهات المستخدم الرسومية. لتثبيت Tkinter ، افتح Terminal وقم بتشغيل:
pip install tkinter
تسهل وحدة الطلبات إجراء طلبات HTTP وإرجاع كائن استجابة يحتوي على بيانات مثل الترميز والحالة. يمكنك استخدامه لجلب معلومات معرف المتصل ،
إنشاء مدقق حالة موقع الويبأو محول العملات أو تطبيق إخباري. لتثبيت وحدة الطلبات ، افتح الجهاز وقم بتشغيل:pip install requests
توفر مكتبة الوسادة - شوكة مكتبة Python Imaging Library (PIL) - إمكانات معالجة الصور التي تساعد في التحرير ، والإنشاء ، تحويل صيغ الملفات، وحفظ الصور. لتثبيت وحدة الوسادة ، افتح الجهاز وقم بتشغيل:
pip install Pillow
تساعدك وحدة Webbrowser على فتح أي رابط في متصفحك الافتراضي. إنه جزء من مكتبة Python القياسية. لذلك ، لا تحتاج إلى تثبيته خارجيًا.
إنشاء مفتاح Edamam API للبحث عن الوصفة
لإنشاء مفتاح Edamam Recipe Search API ، اتبع الخطوات التالية:
- يزور ادامام وانقر على تسجيل API زر. املأ التفاصيل ، واختر خطتك باسم وصفة البحث API - المطور.
- تسجيل الدخول إلى حسابك ، انقر فوق الحسابات ، ثم انقر فوق الذهاب إلى لوحة القيادة زر.
- بعد ذلك ، انقر فوق التطبيقات انقر فوق علامة التبويب وأخيراً انقر فوق منظر بجانب Recipe Search API.
- انسخ ال رقم الاستمارة و ال مفاتيح التطبيق وتخزينها لاستخدامها في التطبيق الخاص بك.
بناء الوظائف للحصول على أفضل 5 وصفات
يمكنك العثور على الكود المصدري بالكامل لبناء تطبيق مكتشف وصفة باستخدام Python في هذا مستودع جيثب.
استيراد الوحدات المطلوبة. حدد طريقة get_top_5_recipes () يسترد عناوين وصفات وصفات وروابط أفضل خمس وصفات للطبق الذي يبحث عنه المستخدم. يستخدم يحصل() لاستخراج اسم الطبق الذي بحث عنه المستخدم.
إذا أدخل المستخدم اسم وصفة ، فحدد عنوان URL الأساسي لنقطة نهاية البحث عن وصفة Edamam API. مرر ال معرف التطبيق و app_key نسختها مسبقًا لمصادقة طلبات واجهة برمجة التطبيقات وتفويضها.
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
إنشاء قاموس ، بارامز الذي يحتوي على المعلمات المختلفة التي يجب عليك تمريرها كجزء من طلب واجهة برمجة التطبيقات. قم بتعيين أزواج المفتاح والقيمة لـ ف, معرف التطبيق، و app_key للقيم التي حصلت عليها سابقًا. تعيين من و ل معلمات لتعكس عدد النتائج التي تريد رؤيتها.
أرسل طلب GET إلى Edamam API بدمج عنوان URL لـ API و بارامز قاموس. قم بتخزين الاستجابة واستخراجها بتنسيق JSON. يتصل clear_recipe_list () لمسح الوصفات الموجودة على الشاشة من الطلبات السابقة.
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 المستخرجة وإذا كانت تحتوي على نتيجة البحث. إذا كانت الإجابة بنعم ، كرر نتائج البحث واستخرج معلومات الوصفة واحدة تلو الأخرى. أرسل طلب GET إلى عنوان URL للصورة باستخدام ملف تدفق تم تعيين المعلمة على حقيقي للسماح بتدفق بيانات الصورة.
استخدم وسادة صورة فئة لفتح الصورة التي تلقيتها. قم بتغيير حجمه ليصبح ارتفاعه وعرضه 200 بكسل باستخدام امتداد لانكوز طريقة إعادة التشكيل لتغيير الحجم عالي الجودة. قم بتحويل هذا إلى متوافق مع Tkinter صورة فوتوغرافية لعرضه على واجهة المستخدم الرسومية.
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)
تحديد طريقة ، clear_recipe_list () لمسح محتوى الشاشة بالكامل الناتج عن الطلب السابق. امسح محتويات قائمة الوصفات وكرر كل ملصق في ملف وصفه_تصنيف قائمة.
استدعاء pack_forget () طريقة لإزالة الملصق من الشاشة مع الحفاظ على عنصر عنصر واجهة المستخدم كما هو.
نظف ال وصفات_وصفة قائمة البيانات الجديدة. كرر هذه العملية للصور والروابط أيضًا. تحديد طريقة ، افتح الرابط() لفتح رابط الوصفة في متصفح الويب الافتراضي الخاص بك.
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)
تهيئة نافذة الجذر Tkinter. عيّن العنوان والأبعاد ولون الخلفية للتطبيق. حدد عنصر واجهة مستخدم للإطار وقم بتعيين العنصر الأصل الخاص به مع لون الخلفية. قم بإنشاء تسمية وإدخال وزر بحث. قم بتنظيم جميع الأدوات باستخدام ملف علية الطريقة وإضافة الحشو حسب الضرورة.
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)
قم بإنشاء لوحة قماشية بخلفية بيضاء لعرض الأدوات التي تحتوي على معلومات الوصفة. قم بتنظيمه على الجانب الأيسر من النافذة ، مع أخذ كل المساحة الموجودة في الإطار في كلا الاتجاهين وتوسيعها عند تغيير الحجم.
قم بإنشاء شريط تمرير عمودي للوحة القماشية وضعه على جانبه الأيمن. اربط ملف scrollbar.set طريقة ل قماش بحيث يؤدي تمرير شريط التمرير إلى تمرير محتوى اللوحة القماشية.
قم بإنشاء إطار داخل اللوحة القماشية ليكون بمثابة حاوية لعناصر الوصفة ، مثبتًا في الجزء العلوي الأيسر من النافذة. ربط بحيث يضمن أن الصندوق يمكنه التمرير بشكل صحيح عند تغيير محتوياته أو تغيير حجمها.
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"))
)
حدد قائمة الوصفات والتسميات والصور والروابط. ال mainloop () تخبر الوظيفة Python بتشغيل حلقة حدث Tkinter والاستماع إلى الأحداث حتى تغلق النافذة.
recipe_list = []
recipe_labels = []
recipe_images = []
recipe_links = []
root.mainloop()
ضع كل ذلك معًا واكتشف المأكولات بنقرة زر واحدة.
مخرجات تطبيق Recipe Finder
عند تشغيل البرنامج وإدخال الطبق كـ تشيكن برجر ، تحصل على أفضل خمس نتائج. يحتوي على العنوان والصورة ورابط وصفة الطبق الذي أدخلته. عند النقر على الرابط ، يفتح متصفح الويب الافتراضي رابط الوصفة. عند التمرير لأسفل ، يظل حجم المحتوى كما هو ويعرض النتائج المتنوعة التي يتم توسيطها أفقيًا.
تحسين تطبيق Recipe Finder
لتحسين تطبيق الباحث عن الوصفات ، يمكنك تنفيذ التصفية والفرز وفقًا لتفضيلات مختلفة. يمكنك تصفية الطبق حسب تفضيلات النظام الغذائي ، ووقت الطهي ، والمطبخ ، وفرزها بأي ترتيب.
قم بإنشاء ميزة لوضع إشارة مرجعية على وصفاتك المفضلة لعرضها لاحقًا وخيارًا لمشاركتها على وسائل التواصل الاجتماعي. يمكنك إنشاء فئة لاكتشاف الأطباق الأكثر بحثًا والأكثر ارتباطًا وما إلى ذلك.
من خلال الجمع بين مهارات البرمجة الخاصة بك والميزات القوية لواجهات برمجة التطبيقات ، يمكنك تحويل هذا التطبيق الأساسي إلى تطبيق كامل.