حساب سعرات الوصفة الإجمالية ولكل حصة
تحوّل حاسبة سعرات الوصفات هذه قائمة المكونات إلى رقمين عمليين: سعرات الوصفة كاملة وسعرات كل حصة.
شغّل الأداة مجانًا
أدخلوا كمية كل مكوّن، وعدد السعرات الموجودة في وحدة مطابقة لتلك الكمية، وعدد الحصص التي تنتجها الوصفة. تضرب الأداة كل كمية في سعرات وحدتها، ثم تجمع النتائج وتقسم المجموع على عدد الحصص. كما تعرض تفصيلاً لكل مكوّن، حتى تتمكنوا من مراجعة العملية الحسابية بدلاً من الاعتماد على تقدير لا يوضح أساسه.
جهّزوا قيماً متوافقة للمكونات
ابدؤوا بالمعلومات الغذائية لكل مكوّن، وتأكدوا من أن وحدتها تطابق الكمية التي ستدخلونها. إذا أوضح الملصق أن ملعقة طعام واحدة تحتوي على 95 سعرة، فإن إدخال الكمية اثنتين يعني ملعقتين ويسهم بمقدار 190 سعرة. وإذا كانت الوصفة تستخدم الغرامات بينما يذكر المصدر السعرات لكل 100 غرام، فأدخلوا الكمية بوصفها عدد وحدات من 100 غرام، أو حوّلوا القيمة أولاً إلى سعرات لكل غرام. لا تخمّن الحاسبة الوحدات أو أحجام الحصص أو الجزء الصالح للأكل أو كثافة المكوّن، لأن هذه الافتراضات تختلف كثيراً بين الأطعمة وطرق الطهو. يحتاج كل صف إلى اسم واضح وكمية تساوي صفراً أو تزيد عليه وقيمة غير سالبة للسعرات لكل وحدة. يمكن أن يمثل الصفر مكوّناً بلا طاقة أو مكوّناً غير مستخدم حالياً، أما القيم السالبة فمرفوضة. إن مطابقة وحدة المصدر بوحدة الإدخال هي أهم خطوة للحصول على مجموع ذي معنى. وعندما تكون الدقة مهمة، راجعوا العبوة أو قاعدة بيانات غذائية موثوقة أو ورقة التركيبة الخاصة بكم.
افهموا طريقة الحساب والنتيجة
تضرب الحاسبة في كل صف كمية المكوّن في سعراته لكل وحدة. ثم تجمع مساهمات جميع المكونات للحصول على السعرات الإجمالية للوصفة، وتقسم ذلك المجموع على عدد الحصص. فمثلاً، يسهم مكوّن كميته 1.5 وتبلغ سعراته 80 لكل وحدة بمقدار 120 سعرة. يحتفظ التفصيل بالاسم المنسق والكمية والقيمة لكل وحدة والسعرات المحسوبة لكل مكوّن، مما يسهّل اكتشاف أخطاء النقل. تُقرّب النتائج إلى ست منازل عشرية لضمان مخرجات مستقرة قابلة للتكرار، بينما يُجمع المجموع قبل التقريب النهائي. يمكن أن يكون عدد الحصص عدداً صحيحاً أو عشرياً موجباً، ولذلك تقبل الأداة نواتج مثل 2.5 حصة، لكنه لا يجوز أن يكون صفراً أو سالباً لأن القسمة حينئذ لا تكون ذات معنى. ويعرض الناتج أيضاً عدد المكونات وعدد الحصص، وبذلك يستطيع مسار آلي التأكد من معالجة الوصفة المقصودة دون الاعتماد على ترتيب العرض أو افتراضات خفية.
استخدموا التقدير بمسؤولية
تعاملوا مع النتيجة بوصفها تقديراً حسابياً تعتمد جودته على القيم التي تقدمونها. تستخدم الملصقات الغذائية قواعد للتقريب، وتتفاوت المكونات الطبيعية، وقد يغيّر الطهو محتوى الماء من دون أن يغيّر بالضرورة طاقة الدفعة. يمكن للزيت المتبقي في المقلاة، أو التتبيلة المتروكة، أو الأجزاء المستبعدة، أو التبخر، أو عدم تساوي الحصص أن يجعل السعرات المستهلكة مختلفة عن القيمة المحسوبة. عند تخطيط الوجبات، استخدموا الناتج الذي توزعونه فعلياً: إذا كان المتوقع ست حصص لكنكم ملأتم خمس حاويات، فأدخلوا خمساً. ولتحسين الاتساق، زنوا الطبق النهائي، وعرّفوا الحصة بالوزن، ثم احسبوا عدد الحصص الموجودة في الدفعة. تنفذ API الحساب الحتمي نفسه الذي تنفذه نسخة المتصفح، ولا تبحث عبر الشبكة ولا تستبدل البيانات الغذائية الناقصة بصمت. لذلك تناسب جداول الوصفات وأدوات تطوير القوائم وأنظمة إعداد الوجبات والاختبارات القابلة للتكرار. وهي ليست نصيحة طبية ولا تغني عن مختص مؤهل في التغذية السريرية أو الحساسية أو العلاج.
حالات الاستخدام
تخطيط حصص الوجبات المعدّة مسبقاً
احسبوا مجموع الدفعة وقسّموه على العدد الفعلي للحاويات التي تجهزونها.
مقارنة بدائل الوصفة
غيّروا كمية مكوّن أو قيمته الحرارية وشاهدوا أثر ذلك في الوصفة كاملة وفي كل حصة.
إضافة التقديرات إلى نظام وصفات
استخدموا نتائج حتمية وتفصيلاً قابلاً للمراجعة في القوائم أو الجداول أو تطبيقات الطهو.
الأسئلة الشائعة
ما تكلفة العملية عبر API؟
تكلف كل عملية عبر API مبلغ $0.002. أما حاسبة المتصفح فتعمل محلياً مجاناً.
ما المقصود بالسعرات لكل وحدة؟
هي سعرات وحدة واحدة تطابق الكمية، مثل غرام واحد أو ملعقة أو كوب أو عبوة.
هل يمكن أن يكون عدد الحصص عشرياً؟
نعم. يُقبل كل عدد موجب ومحدود، مما يدعم النواتج الجزئية أو الحصص المحددة بالوزن.
لماذا يُرفض الصفر والقيم السالبة؟
يتطلب حساب السعرات لكل حصة القسمة على كمية ذات معنى مادي، ولذلك يجب أن تكون أكبر من الصفر.
هل تبحث الأداة عن المعلومات الغذائية؟
لا. تجري حساباً حتمياً على الكميات والسعرات التي تقدمونها، ولا ترسل أي طلبات عبر الشبكة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/cook/calorie-count-recipe \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ingredients":[{"name":"Rolled oats","quantity":2,"calories_per_unit":150},{"name":"Banana","quantity":1.5,"calories_per_unit":105},{"name":"Peanut butter","quantity":2,"calories_per_unit":95}],"servings":5}'const res = await fetch("https://api.kit.forhosting.com/cook/calorie-count-recipe", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ingredients": [
{
"name": "Rolled oats",
"quantity": 2,
"calories_per_unit": 150
},
{
"name": "Banana",
"quantity": 1.5,
"calories_per_unit": 105
},
{
"name": "Peanut butter",
"quantity": 2,
"calories_per_unit": 95
}
],
"servings": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/calorie-count-recipe",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ingredients": [
{
"name": "Rolled oats",
"quantity": 2,
"calories_per_unit": 150
},
{
"name": "Banana",
"quantity": 1.5,
"calories_per_unit": 105
},
{
"name": "Peanut butter",
"quantity": 2,
"calories_per_unit": 95
}
],
"servings": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/calorie-count-recipe", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ingredients":[{"name":"Rolled oats","quantity":2,"calories_per_unit":150},{"name":"Banana","quantity":1.5,"calories_per_unit":105},{"name":"Peanut butter","quantity":2,"calories_per_unit":95}],"servings":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ingredients":[{"name":"Rolled oats","quantity":2,"calories_per_unit":150},{"name":"Banana","quantity":1.5,"calories_per_unit":105},{"name":"Peanut butter","quantity":2,"calories_per_unit":95}],"servings":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/calorie-count-recipe", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"ingredients": [
{
"name": "Rolled oats",
"quantity": 2,
"calories_per_unit": 150
},
{
"name": "Banana",
"quantity": 1.5,
"calories_per_unit": 105
},
{
"name": "Peanut butter",
"quantity": 2,
"calories_per_unit": 95
}
],
"servings": 5
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.calorie_count_recipe",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |