توثيق الموقع الرئيس ‫“‬IslamHouse.com‫”‬

مقدمة‫:‬

يعد الموقع الرئيس لدار الإسلام IslamHouse.com البوابة الأم والرئيسة لجميع البوابات والخدمات؛ إذ أن هناك بوابات متفرعة بطابع مستقل مثل: ( مصاحف - بلاغ - رمضان ) وهذه البوابات الفرعية جميع محتوياتها متوفرة أيضًا في البوابة الأم .. ولكن لتميز بعض محتويات الموقع قمنا بإضفاء خدمات خاصة في تلك البوابات الفرعية.
وفيما يلي سرد لبعض أهم ملامح طريقة عرض البيانات في الموقع الرئيس:

تعريب العناوين‫:‬

جميع المواد المنشورة في IslamHouse.com متوفرة عناوينها بواجهتين تعريفية على الأقل وهي:
- الأولى: واجهة تعريفية بلغة محتوى المادة - ويُشار لهذه الواجهة بالواجهة المصدرية؛ لأنها تتفق مع لغة محتوى المادة -.
- الثانية: واجهة تعريفية باللغة العربية للمادة - ويُشار لهذه الواجهة بالواجهة التعريبية؛ لأنها واجهة مُترجمة من الواجهة المصدرية إلى واجهة تعريفية أخرى باللغة العربية -.
وقد يتوفر أحيانًا في بعض المواد واجهات تعريفية أخرى مع الواجهتين السابقتين.
وفائدة خدمة التعريب لعناوين مواد الموقع: تعريف من يتحدث اللغة العربية بمحتويات المواد المنشورة بلغات موقع IslamHouse.com والتي تجاوزت أكثر من 110 لغة ! .. وبالتالي تعم الفائدة، ويصل النفع بطريقة غير مباشرة للمستفيدين بتلك اللغات، عن طريق مساعدة من يتحدثون اللغة العربية لغيرهم في اللغات الأخرى؛ سواء بطباعة بعض هذه المواد، أو إرسالها عبر البريد الإلكتروني إليهم، أو عبر المواقع الإجتماعية، أو غير ذلك من وسائل التواصل.

مكونات البنية التحتية للموقع الرئيس‫:‬


في غالب الحالات جميع الروابط الخاصة بالبنية التحتية تبدأ بالرابط:

http://api.islamhouse.com/v1/XXXXXXXXXX/main

حيث تقوم باستبدال المتغير XXXXXXXXXX بمفتاح الاتصال الخاص بك الذي قمت بإنشائه من قبل .. ويمكنك مراجعة الرابط التالي لمعرفة كيفية الحصول على “مفتاح اتصال” خاص بك: https://alfsonnahapi.rasoulallah.net/ar/how-to-use?%D8%A7%D8%B6%D8%BA%D8%B7%20%D9%87%D9%86%D8%A7

ثم يأتي بعد ذلك اسم الخدمة المطلوبة، فمثلاً:
لجلب الصفحة الرئيسة للغات المتاحة والإحصائيات العامة الخاصة بالموقع يتم طلب الرابط التالي:

http://api.islamhouse.com/v1/XXXXXXXXXX/main/home/json

ناتج الرابط السابق سوف يكون كالتالي - مع ملاحظة أنه تم اختصار عدد اللغات المعروضة في هذا المثال لتقليل حجم هذه الصفحة -
{
statistics: {
  total_languages_items: 50674,
  languages_count: 114,
  total_languages_files: 130572
},
data: [
  {
      id: 395643,
      title: "Afrikaans",
      add_date: 1149738115,
      total_items: 2,
      total_files: 2,
      active: false,
      available: true,
      facebook: "",
      twitter: "",
      youtube: "",
      instagram: "",
      rss: "http://islamhouse.com/RSS/IslamHouse-all-AF-AF.xml",
      torrent: "http://torrent.islamhouse.com/download.php?id=05937e2a3479b66a81ba19fed124bb478f28c06b&f=Afrikanns-IslamHouse-com-2014-05-05.torrent",
      language_code: "af",
      site_contents: "http://api.islamhouse.com/v1/XXXXXXXXXX/main/sitecontent/af/af/json/"
  },
  {
      id: 10368,
      title: "Македонски",
      add_date: 1142457081,
      total_items: 6,
      total_files: 8,
      active: false,
      available: true,
      facebook: "",
      twitter: "",
      youtube: "",
      instagram: "",
      rss: "http://islamhouse.com/RSS/IslamHouse-all-MK-MK.xml",
      torrent: "http://torrent.islamhouse.com/download.php?id=af0bf17c1c7ffa399a507030c52c3a57093e9fc4&f=Macedonian_IslamHouse.com_2015-01-01.torrent",
      language_code: "mk",
      site_contents: "http://api.islamhouse.com/v1/XXXXXXXXXX/main/sitecontent/mk/mk/json/"
  },
  {
      id: 9814,
      title: "ဗမာစာ",
      add_date: 1142457081,
      total_items: 4,
      total_files: 5,
      active: false,
      available: true,
      facebook: "",
      twitter: "",
      youtube: "",
      instagram: "",
      rss: "http://islamhouse.com/RSS/IslamHouse-all-MY-MY.xml",
      torrent: "http://torrent.islamhouse.com/download.php?id=0ef1401aa0dab4eec32b25e7200ebb35764a1e2f&f=Burmese-IslamHouse-com-2014-05-05.torrent",
      language_code: "my",
      site_contents: "http://api.islamhouse.com/v1/XXXXXXXXXX/main/sitecontent/my/my/json/"
  }
]
}


يحتوي الناتج في المثال أعلاه على الآتي:
- الإحصاءات العامة للموقع: (إجمالي عدد عناوين المواد - إجمالي عدد لغات الموقع - إجمالي عدد الملفات المرفقة في جميع العناوين).
- اللغات المتاحة، وإحصائيات كل لغة، مع ملاحظة أن اسم كل لغة يتم ذكره باللغة الأصلية؛ فعلى سبيل المثال: اللغة العربية تكتب “ العربية”، واللغة الإنجليزية تُكتب “English”، والفرنسية تُكتب “français” وهكذا.

تصفح مواد الموقع بلغة معينة‫:‬

كما قلنا سابقًا أنه هناك مصطلحين هامين يتم استخدامهم ألا وهما:
- واجهة بلغة مصدرية.
- واجهة بلغة عربية - غير مصدرية -.
ولإيضاح ذلك .. فمثلًا: لتصفح مواد الموقع التي لغتها المصدرية هي العربية وأيضًا هي بواجهة عربية فيتم طلب الرابط هكذا:

http://api.islamhouse.com/v1/XXXXXXXXXX/main/sitecontent/ar/ar/json

والتكوين البرمجي للرابط هو:

main/sitecontent/{flang}/{slang}/{format}

والناتج الخاص بالرابط هو:


{
    block_name: "showall",
    type: "section",
    items_count: 8418,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/showall/ar/ar/1/25/json/"
  },
  {
    block_name: "books",
    type: "section",
    items_count: 3167,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/books/ar/ar/1/25/json/"
  },
  {
    block_name: "audios",
    type: "section",
    items_count: 2700,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/audios/ar/ar/1/25/json/"
  },
  {
    block_name: "poster",
    type: "section",
    items_count: 487,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/poster/ar/ar/1/25/json/"
  },
  {
    block_name: "articles",
    type: "section",
    items_count: 973,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/articles/ar/ar/1/25/json/"
  },
  {
    block_name: "fatwa",
    type: "section",
    items_count: 177,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/fatwa/ar/ar/1/25/json/"
  },
  {
    block_name: "quran",
    type: "section",
    items_count: 165,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/quran/ar/ar/1/25/json/"
  },
  {
    block_name: "programsv",
    type: "section",
    items_count: 24,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/programsv/ar/ar/1/25/json/"
  },
  {
    block_name: "videos",
    type: "section",
    items_count: 844,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/videos/ar/ar/1/25/json/"
  },
  {
    block_name: "news",
    type: "section",
    items_count: 41,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/news/ar/ar/1/25/json/"
  },
  {
    block_name: "apps",
    type: "section",
    items_count: 29,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/apps/ar/ar/1/25/json/"
  },
  {
    block_name: "favorites",
    type: "section",
    items_count: 12,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/favorites/ar/ar/1/25/json/"
  },
  {
    block_name: "cards",
    type: "section",
    items_count: 5,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/cards/ar/ar/1/25/json/"
}
]

ففي المثال السابق تم عرض الأقسام الرئيسة للموقع بلغته العربية وبواجهته العربية، مع إحصاءات عدد المواد المتوفرة في كل قسم.
يمكنك تجربة المثال السابق بعرض الأقسام الرئيسة للموقع بلغته الإنجليزية ولكن بواجهته العربية !.

ملاحظة‫:‬

في المثال السابق تم جلب جميع المواد العربية وبواجهة عربية، واذا أردنا جلب جميع المواد أيًا كانت لغتها المصدرية فسنستخدم “showall” مع الواجهة العربية فيكون الرابط على النحو التالي:
http://api.islamhouse.com/v1/XXXXXXXXXX/main/sitecontent/ar/showall/json/

ليكون الناتج:


{
    block_name: "showall",
    type: "section",
    items_count: 50515,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/showall/ar/showall/1/25/json/"
  },
  {
    block_name: "books",
    type: "section",
    items_count: 9731,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/books/ar/showall/1/25/json/"
  },
  {
    block_name: "articles",
    type: "section",
    items_count: 10852,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/articles/ar/showall/1/25/json/"
  },
  {
    block_name: "audios",
    type: "section",
    items_count: 11791,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/audios/ar/showall/1/25/json/"
  },
  {
    block_name: "fatwa",
    type: "section",
    items_count: 7192,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/fatwa/ar/showall/1/25/json/"
  },
  {
    block_name: "videos",
    type: "section",
    items_count: 9818,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/videos/ar/showall/1/25/json/"
  },
  {
    block_name: "poster",
    type: "section",
    items_count: 752,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/poster/ar/showall/1/25/json/"
  },
  {
    block_name: "quran",
    type: "section",
    items_count: 165,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/quran/ar/showall/1/25/json/"
  },
  {
    block_name: "favorites",
    type: "section",
    items_count: 201,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/favorites/ar/showall/1/25/json/"
  },
  {
    block_name: "programsv",
    type: "section",
    items_count: 43,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/programsv/ar/showall/1/25/json/"
  },
  {
    block_name: "cards",
    type: "section",
    items_count: 46,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/cards/ar/showall/1/25/json/"
  },
  {
    block_name: "news",
    type: "section",
    items_count: 116,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/news/ar/showall/1/25/json/"
  },
  {
    block_name: "apps",
    type: "section",
    items_count: 89,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/apps/ar/showall/1/25/json/"
}
]

عرض محتويات قسم معين‫:‬

لعرض محتويات قسم معين كقسم الكتب أو المقالات أو الصوتيات .. الخ فيتم تحديد القسم المطلوب عرض محتوياته مع تحديد لغة الواجهة وكذلك لغة المصدر، فعلى سبيل المثال: لعرض محتويات قسم الكتب العربية من الموقع العربي وبواجهة عربية فيتم طلب الرابط التالي:

http://api.islamhouse.com/v1/XXXXXXXXX/main/books/ar/ar/1/25/json/

والتكوين البرمجي للرابط هو:

/main/{type}/{flang}/{slang}/{pageNum}/{limit}/{format}

ويكون الناتج كالتالي: - ملاحظة: تم اختصار النتيجة المعروضة في المثال لتقليل حجم الصفحة -

{
links: {
    next: "http://api.islamhouse.com/v1/XXXXXXXXX/main/books/ar/ar/2/25/json/",
    prev: "",
    first: "http://api.islamhouse.com/v1/XXXXXXXXX/main/books/ar/ar/1/25/json/",
    last: "http://api.islamhouse.com/v1/XXXXXXXXX/main/books/ar/ar/127/25/json/",
    current_page: 1,
    pages_number: 127,
    total_items: 3167
},
data: [
{
    id: 2769744,
    source_id: 2769744,
    title: "كتب الصف الأول الابتدائي المقررة بالمدارس السعودية [ طبعة 1435هـ ]",
    type: "books",
    add_date: 1439908810,
    description: "نسخة PDF من كتب الصف الأول الابتدائي المقررة بالمدارس السعودية.",
    full_description: "",
    source_language: "ar",
    translated_language: "ar",
    image: null,
    api_url: "http://api.islamhouse.com/v1/XXXXXXXXX/main/get-item/2769744/ar/json/",
  prepared_by: null,
  attachments: [
  {
    order: 1,
    size: "24.5 MB",
    extension_type: "PDF",
    description: "كتاب التوحيد للصف الأول الابتدائي - الفصل الدراسي الأول - طبعة 1435هـ",
    url: "http://d1.islamhouse.com/data/ar/ih_books/chain/almnahj_aldrasiah_in_saoudiah/01_First grade/ar_01_altouhid_First grade.pdf"
  },
  {
    order: 2,
    size: "24.9 MB",
    extension_type: "PDF",
    description: "كتاب التوحيد للصف الأول الابتدائي - الفصل الدراسي الثاني - طبعة 1435هـ",
    url: "http://d1.islamhouse.com/data/ar/ih_books/chain/almnahj_aldrasiah_in_saoudiah/01_First grade/ar_02_altouhid_First grade.pdf"
  }

],
locales: [
    "ar"
]
}

ونظرًا لأن البنية التحتية تدعم مفهوم “تعدد الصفحات” ففي بداية كل صفحة يتم توضيح بعض الإحصاءات الخاصة بالصفحة الحالية، وعدد الصفحات المتاحة، وإجمالي عدد العناصر، ثم يأتي بعد ذلك تفاصيل المواد نفسها، والقائمون على إعدادها (مؤلفون - مترجمون - مراجعون - ناشرون - الخ ..)، وكذلك الواجهات التعريفية باللغات المتوفرة لكل مادة على غرار مفهوم التعريب في اللغة العربية.

عرض عنصر منفرد‫:‬

لكي يمكنك عرض محتويات مادة واحدة بتفاصيلها فيتم ذلك من خلال تحديد رقم المعرف الخاص بالمادة المطلوب عرضها، وكذلك لغة الواجهة المطلوب العرض بها؛ على سبيل المثال لعرض كتاب “فن إدارة الوقت” وهو يحمل رقم 886781 باللغة العربية يتم طلب الرابط التالي:
http://api.islamhouse.com/v1/XXXXXXXXX/main/get-item/886781/ar/json/

والتكوين البرمجي للرابط هو:

/main/get-item/{id}/{flang}/{format}

ويكون الناتج هو:

{
    id: 886781,
    source_id: 886781,
    title: "فن إدارة الوقت",
    description: "يوجه المؤلف رسالة للذين يحسون أن الوقت المتاح لا يكفي لتحقيق طموحاتهم ومشاريعهم، وأهدافهم النبيلة، وهم أصحاب الطموح والمشاريع الكبيرة، أصحاب الإبداع والابتكار. فيقول: عندما نتأمل المشكلة نجد أنها ليست في الوقت نفسه بل في أحيان كثيرة تكون في كيفية الاستفادة من الوقت.",
    full_description: "",
    type: "books",
    add_date: 1431169403,
    orginal_item: "yes",
    translation_language: "ar",
    source_language: "ar",
  image: null,
  prepared_by: [
  {
    id: 265563,
    source_id: 265563,
    title: "موقع الكتيبات الإسلامية www.ktibat.com",
    type: "source",
    kind: "source",
    description: "موقع الكتيبات الإسلامية: موقع إسلامي دعوي ينتهج منهج أهل السنة والجماعة، يهدف إلى: - نشر الكتيبات التي تم طبعها ونشرها من قبل الجهات ودور النشر المعروفة، مثل دار القاسم ودار الوطن ودار ابن خزيمة وغيرهم. - يتم طباعة الكتيب الإسلامي وعرضه في الموقع كما هو موجود في أصل الكتيب تماماً بدون تعديل أو زيادة أو نقص، مع مراعاة الأخطاء الإملائية. - الحرص على نشر الكتب أو الكتيبات الإسلامية والتي لم تنشر على شبكة الإنترنت. - الحرص على نشر بعض الكتب النادرة والتي يصعب الحصول عليها في المكتبات فضلاً عن شبكة الإنترنت."
  }
  ],
  attachments: [
  {
    order: 1,
    size: "800.3 KB",
    extension_type: "PDF",
    description: "فن إدارة الوقت",
    url: "http://d1.islamhouse.com/data/ar/ih_books/single9/ar_fn_adart_Al_Wqt.pdf"
    },
    {
    order: 2,
    size: "3 MB",
    extension_type: "DOC",
    description: "فن إدارة الوقت",
    url: "http://d1.islamhouse.com/data/ar/ih_books/single9/ar_fn_adart_Al_Wqt.doc"
  }
  ],
  locales: [
    "ar"
  ],
  locales-types: [
  {
    locale: "ar",
    type: "books"
}
]
}

ملاحظة هامة‫:‬

يلاحظ أنه هناك رقمين لكل مادة: (id) وَ (source_id) حيث أن المتغير (id) يُعبِّر عن الرقم الفريد للمادة المرتبط بلغة واجهة تعريفية من واجهات المادة والتي ربما قد تكون المادة بأكثر من لغة واجهة؛ ككتاب فرنسي ولكن لديه واجهات تعريفية بالفرنسية أولًا ثم بالعربية والإنجليزية والألمانية والإسبانية .. الخ، أما (source_id) فهو رقم المادة التي تكون لغة واجهتها التعريفية تتفق مع لغة محتوى المادة. فعلى سبيل المثال:
لعرض جميع الكتب الموجودة بالموقع أيًا كان لغتها ولكن بالواجهة العربية فيتم طلب الرابط التالي:

http://api.islamhouse.com/v1/XXXXXXXXX/main/books/ar/showall/1/25/json/

ولو أخذنا أحد النتائج المعروضة على سبيل المثال ككتاب “ما هو الإسلام“ سنجد أن رقم (id) الخاص به هو 2769226 ، ورقم الـ (source_id) الخاص به هو 2769225 وهما هنا غير متساويان ! .. وهذا معناه أن لغة العرض هذه ليست لغة الكتاب الأصلية؛ حيث أن لغة الكتاب الأصلية هنا هي الإنجليزية ولكننا نتصفح الواجهة التعريفية لهذا الكتاب باللغة العربية، والتي تحتوي على العنوان ونبذة مختصرة عن الكتاب.

للحصول على تفاصيل هذا الكتاب الإنجليزي ولكن بواجهة عربية فيتم تحديد رقم (source_id) أولًا .. ثم اللغة العربية ‪/‬ar‪/‬ كما يلي:

http://api.islamhouse.com/v1/XXXXXXXXX/main/get-item/2769225/ar/json/

ولعرض الكتاب الإنجليزي بواجهته الإنجليزية فيتم طلبه هكذا:
http://api.islamhouse.com/v1/XXXXXXXXX/main/get-item/2769225/en/json/

لاحظ أنه في الواجهة الإنجليزية ستجد أن المتغير (id) وَ (source_id) متساويان ! .. وهذا يعني أن اللغة الأصلية للكتاب هي الإنجليزية، وتم ترجمة بطاقة الكتاب الإنجليزية باللغة العربية، فأصبح لدينا واجهة إنجليزية وواجهة عربية لكتاب محتواه إنجليزي.

ملاحظة أخرى‫:‬

لمعرفة لغات الواجهات المتاحة لترجمة بطاقة أي مادة سوف تجد متغير إسمه (locales) يوضح لك ترجمات بطاقة المادة بعدة واجهات أخرى، ويمكن من خلاله طلب الترجمات المختلفة لبطاقة المادة.

روابط إضافية هامة

لجلب آخر المواد المضافة أيًا كان نوعها وأيًا كانت لغتها ولكن بواجهة عربية فاطلبه هكذا‫:‬

http://api.islamhouse.com/v1/XXXXXXXXXX/main/latestupdated/showall/ar/showall/25/json


لجلب آخر المواد العربية أيًا كان نوعها ولكن لغة واجهتها عربية فاطلبه هكذا‫:‬

http://api.islamhouse.com/v1/XXXXXXXXXX/main/latestupdated/showall/ar/ar/25/json


لجلب آخر الكتب العربية المضافة حديثًا وبواجهة عربية أيضًا فاطلبه هكذا‫:‬

http://api.islamhouse.com/v1/XXXXXXXXXX/main/latestupdated/books/ar/ar/25/json


لجلب آخر الكتب الإنجليزية المضافة حديثًا ولكن بواجهة عربية فاطلبه هكذا‫:‬

http://api.islamhouse.com/v1/XXXXXXXXXX/main/latestupdated/books/ar/en/25/json

ملاحظة أخرى‫:‬

أقصى عدد متاح لجلب آخر المواد هو ٢٥ عنصرًا في المرة الواحدة، ويمكن لك تقليبه، فمثلًا ‫..‬ لجلب آخر 5 فيديوهات عربية أضيفت للموقع اطلبه هكذا:

http://api.islamhouse.com/v1/XXXXXXXXXX/main/latestupdated/videos/ar/ar/5/json

والتكوين البرمجي للرابط السابق هو:

/main/latestupdated/{type}/{flang}/{slang}/{limit}/{format}