تقدير وقت إنهاء قائمة القراءة
يجيب مقدِّر وقت قائمة القراءة عن السؤال الذي يطرحه كل قارئ لديه تراكم من الكتب المؤجلة: متى سأنتهي فعلًا من قراءة كل هذه الكتب؟ زوِّده بقائمتك — كل كتاب مع عدد صفحاته — إضافةً إلى عدد الصفحات التي تقرؤها يوميًا واليوم الذي تبدأ فيه، فيعيد لك تاريخ إنهاء لكل كتاب، وفق ترتيب القراءة، إلى جانب مجموع الصفحات ومجموع الأيام وتاريخ اكتمال القائمة بأكملها.
شغّل الأداة مجانًا
لا حاجة إلى إنشاء حساب ولا إلى التخمين: فالحساب الحتمي نفسه يعمل مجانًا في متصفحك وكذلك عبر API، فتتحول نيتك القارئة إلى خطة زمنية واضحة يمكنك متابعتها وتعديلها متى شئت.
حوِّل التراكم الغامض إلى تواريخ محددة
تبدو قائمة القراءة سهلة التدبير حتى تسأل متى تنتهي. عشرون كتابًا، بعضها ثلاثمئة صفحة وبعضها ثمانمئة، ووتيرة تتغير مع الأسابيع — إجراء هذا الحساب ذهنيًا هو الطريق الذي تصبح به القوائم بصمت بلا نهاية. تجعل أداة تقدير الوقت اللازم لإنهاء قائمة القراءة الخطة واضحة: ترسل الكتب بالترتيب الذي تنوي قراءتها به، ووتيرتك اليومية بالصفحات، وتاريخ اليوم كنقطة بداية. يعود كل كتاب بعدد الأيام التي يحتاجها وبالتاريخ الميلادي الدقيق الذي ستُغلق فيه صفحته الأخيرة، بافتراض أنك تحافظ على الوتيرة. إن رؤية «هذه الرواية تنتهي في 12 مارس، والتالية في 2 أبريل» تحوِّل كومة من النوايا إلى جدول زمني يمكنك التفاعل معه — أن تسرّع الوتيرة، أو تحذف عنوانًا، أو ببساطة تستمتع بمعرفة أن النهاية حقيقية.
كيف يُحتسب التقدير
الحساب بسيط وصريح عن قصد. يستغرق كل كتاب عدد صفحاته مقسومًا على وتيرتك اليومية، مع التقريب إلى أعلى لأيام كاملة — فكتاب من 304 صفحات بوتيرة 30 صفحة في اليوم يحتاج إلى 11 يومًا، لأن اليوم الأخير الجزئي يُحتسب يوم قراءة كاملًا. تتراكم الأيام عبر القائمة وفق ترتيبها، فيكون تاريخ إنهاء كتاب ما هو اليوم السابق لبدء الكتاب التالي في استهلاك الصفحات. يُحتسب تاريخ البدء يومًا أول، وتُحتسب جميع التواريخ وفق التقويم الميلادي الحقيقي بما في ذلك السنوات الكبيسة، فقائمة تبدأ في فبراير تقع على تواريخ مارس الصحيحة. يجب أن تكون الوتيرة اليومية موجبة تمامًا: فالوتيرة الصفرية تعني أن القائمة لا تنتهي أبدًا، وتصرح الأداة بذلك برسالة خطأ واضحة بدلًا من لانهاية صامتة. ويجب أن تكون أعداد الصفحات أعدادًا صحيحة موجبة، وتُتحقق التواريخ بدقة صارمة، فتاريخ مكتوب خطأً مثل «2026-02-30» يُرفض بدلًا من أن يُلفّ بصمت إلى مارس.
الاستفادة المثلى من النتيجة
تعامل مع المخرجات بوصفها خطًا أساسيًا لا نبوءة. فأسابيع القراءة الحقيقية متقلبة، وأنفع عادة هي إعادة تشغيل التقدير بعد إنهاء كل كتاب بقائمتك المحدَّثة وتاريخ اليوم، فتُعاير التواريخ نفسها من جديد. ويمكنك أيضًا استخدامه لتجارب التخطيط: ارفع الوتيرة من 20 إلى 30 صفحة في اليوم وراقب تحرّك التاريخ النهائي، أو احذف كتابًا طويلًا واحدًا وانظر ما يكلفك ذلك. تعمل الأداة كليًا بحساب حتمي دون أي تخزين لقائمتك، وتكلف $0.002 لكل طلب عبر API، بينما يعمل الحساب نفسه مجانًا على هذه الصفحة. تستخدمه نوادي الكتب لتحديد مواعيد نهائية واقعية، والطلاب للتحقق مما إذا كان المنهج الدراسي يناسب الفصل، والقرّاء الأفراد ليروا أخيرًا شكل تراكمهم الخاص. ولأن كل رقم مشتق من أعداد قدّمتها أنت، يسهل الدفاع عن التقدير وتعديله: غيّر مدخلًا واحدًا فيتحوّل الجدول بأكمله تبعًا لذلك، من دون أي شيء خفيّ في المنتصف.
حالات الاستخدام
خطِّط لتراكم قراءاتك الشخصية
أدخل كومة الكتب التي تنوي قراءتها بترتيبها مع وتيرتك اليومية الصادقة لترى التاريخ الميلادي الذي سيُنهى فيه كل كتاب — والقائمة بأكملها — فعليًا.
ضع جدولًا لنادي الكتاب
تحقق من عدد الأيام التي يحتاجها كل عنوان بالوتيرة المعتادة للمجموعة، واختر مواعيد لقاءات تطابق الواقع بدلًا من التفاؤل.
وفِّق القراءات المقررة مع الفصل الدراسي
أدرج الكتب المطلوبة مع أعداد صفحاتها وتحقق مما إذا كان المنهج قابلًا للإنهاء قبل موعد الامتحان بسرعة قراءتك.
الأسئلة الشائعة
كم تبلغ التكلفة؟
$0.002 لكل طلب عبر API. كما أنها مجانية التشغيل في متصفحك على هذه الصفحة — الحساب الحتمي نفسه.
ما الوتيرة اليومية؟
عدد الصفحات التي تقرؤها يوميًا في المتوسط. يجب أن تكون موجبة تمامًا؛ فالوتيرة الصفرية أو السالبة تُرفض لأن القائمة لن تنتهي أبدًا.
هل تُقرأ الكتب بالترتيب؟
نعم. تُقرأ الكتب واحدًا تلو الآخر بالترتيب الذي تُدرجها به، ويتضمن كل تاريخ إنهاء الأيام المستغرقة في جميع الكتب السابقة.
لماذا يحتاج الكتاب إلى يوم واحد حتى لو كانت وتيرتي تغطيه كاملًا؟
تُحتسب الأيام بوحدات كاملة مع تقريب اليوم الأخير الجزئي إلى أعلى. أي كتاب يحتاج إلى يوم قراءة واحد على الأقل، والكتاب الأطول من وتيرتك يستغرق سقف حاصل قسمة الصفحات على الوتيرة.
هل يراعي السنوات الكبيسة وأطوال الشهور؟
نعم. تُحتسب التواريخ وفق التقويم الميلادي الحقيقي انطلاقًا من تاريخ البدء الذي تقدمه، فيُعالَج طول الشهور والسنوات الكبيسة بشكل صحيح.
هل تُخزَّن قائمة قراءتي؟
لا. تُعالَج القائمة في الذاكرة ثم تُهمل؛ ولا يُعاد إلا التواريخ المحسوبة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/life/reading-list-time-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"books":[{"title":"Dune","pages":412},{"title":"The Left Hand of Darkness","pages":304}],"pages_per_day":30,"start_date":"2026-07-25"}'const res = await fetch("https://api.kit.forhosting.com/life/reading-list-time-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"books": [
{
"title": "Dune",
"pages": 412
},
{
"title": "The Left Hand of Darkness",
"pages": 304
}
],
"pages_per_day": 30,
"start_date": "2026-07-25"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/reading-list-time-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"books": [
{
"title": "Dune",
"pages": 412
},
{
"title": "The Left Hand of Darkness",
"pages": 304
}
],
"pages_per_day": 30,
"start_date": "2026-07-25"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/reading-list-time-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"books":[{"title":"Dune","pages":412},{"title":"The Left Hand of Darkness","pages":304}],"pages_per_day":30,"start_date":"2026-07-25"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"books":[{"title":"Dune","pages":412},{"title":"The Left Hand of Darkness","pages":304}],"pages_per_day":30,"start_date":"2026-07-25"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/reading-list-time-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"books": [
{
"title": "Dune",
"pages": 412
},
{
"title": "The Left Hand of Darkness",
"pages": 304
}
],
"pages_per_day": 30,
"start_date": "2026-07-25"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.reading_list_time_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_items | 500 |
max_abs | 10000000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |