EPG: دليل يسافر على حدة
الـEPG (Electronic Program Guide، دليل البرامج الإلكتروني) هو الجدول الذي يبين ما يُعرض الآن وما سيُعرض لاحقًا على كل قناة. في البث الأرضي الرقمي (TNT)، تُنقل هذه المعلومات في الإشارة نفسها، ضمن جداول موحدة بمعيار DVB. وعلى الإنترنت الأمر مختلف: فالفيديو الخاص بقناة ودليلها يصلان عادة عبر طريقين منفصلين.

من جهة، يتلقى المشغل تدفق الفيديو من قائمة تشغيل M3U أو من اتصال Xtream Codes. ومن جهة أخرى، ينزّل ملف دليل، يكون دائمًا تقريبًا بصيغة XMLTV، يصف برامج عدة أيام لعشرات أو مئات القنوات. وعمل المشغل بعد ذلك هو مطابقة كل قناة في القائمة مع جدولها في الملف.
يفسر هذا الفصل معظم المشكلات: فقد تعمل قناة على أكمل وجه ودليلها فارغ، لأن الفيديو والدليل لا يعتمد أحدهما على الآخر.
بنية ملف XMLTV
XMLTV صيغة مفتوحة، نشأت في بداية الألفية الثالثة في مجتمع البرمجيات الحرة، وتقوم على لغة XML. يحتوي الملف على عنصر جذر <tv>، ثم نوعين من الكتل: القنوات والبرامج.
<?xml version="1.0" encoding="UTF-8"?>
<tv generator-info-name="exemple">
<channel id="exemple1.fr">
<display-name>Exemple 1</display-name>
<icon src="https://img.exemple.fr/ex1.png"/>
</channel>
<programme start="20260928204500 +0200" stop="20260928223000 +0200" channel="exemple1.fr">
<title lang="fr">Documentaire du soir</title>
<desc lang="fr">Voyage au cœur des volcans d'Auvergne.</desc>
<category lang="fr">Documentaire</category>
</programme>
</tv>
عنصر channel
يحمل كل <channel> سمة id، وهي المعرّف الفريد للقناة في هذا الملف. ويُكوَّن غالبًا كاسم نطاق (exemple1.fr)، لكن هذا مجرد عرف: أي سلسلة محارف صالحة. ويحتوي أيضًا على اسم عرض واحد أو أكثر (<display-name>) وأحيانًا شعار (<icon>).
عنصر programme
يصف كل <programme> برنامجًا: وقت البداية (start) ووقت النهاية (stop) والقناة المعنية (channel، وتستعيد id عنصر <channel>) والعنوان، وربما الملخص والفئة والحلقة والسنة والملصق أو التصنيف العمري. والبرامج مستقلة عن بعضها، مما يتيح لملف أن يغطي من بضع ساعات إلى عدة أسابيع.
المطابقة بين قائمة التشغيل والدليل: tvg-id
يعتمد الربط بين قناة قائمتك وجدولها على السمة tvg-id في سطر #EXTINF. والقاعدة بسيطة: يجب أن يكون tvg-id في القائمة مطابقًا، حرفًا بحرف، لـ id عنصر <channel> في ملف XMLTV.
#EXTINF:-1 tvg-id="exemple1.fr" group-title="Généralistes",Exemple 1 HD
https://tv.exemple.fr/live/ex1.m3u8
إذا ذكرت القائمة tvg-id="Exemple1.fr" وذكر الدليل id="exemple1.fr"، فإن المطابقة تفشل عند كثير من المشغلات، لأن المقارنة تراعي حالة الأحرف. وعند غياب tvg-id، تحاول بعض المشغلات المطابقة بالاسم (tvg-name أو الاسم المعروض) مع <display-name> في الدليل؛ وهذا أقل موثوقية، لأن «Exemple 1 HD» و«Exemple 1» ليسا متطابقين.
مع اتصال Xtream Codes، تكون المطابقة تلقائية من حيث المبدأ: يوفر الخادم لكل قناة حقل epg_channel_id الذي يؤدي دور tvg-id، ودليل XMLTV متسقًا مع هذه المعرّفات. وتفاصيل عمل هذه الواجهة في مقالنا عن اتصالات Xtream Codes، وصياغة القوائم في صيغة M3U سطرًا بسطر.
الأوقات والمناطق الزمنية والفوارق
تُكتب أوقات XMLTV بالشكل AAAAMMJJhhmmss يليها فرق عن التوقيت العالمي (UTC). فمثلًا 20260928204500 +0200 تعني 28 سبتمبر 2026 الساعة 20:45، في منطقة زمنية تسبق UTC بساعتين، أي 18:45 بتوقيت UTC.
في فرنسا القارية، التوقيت القانوني هو UTC+1 شتاءً (+0100) وUTC+2 صيفًا (+0200). وينتقل إلى التوقيت الصيفي في آخر أحد من مارس، ويعود إلى الشتوي في آخر أحد من أكتوبر. فعلى دليل صحيح لقناة فرنسية أن يغير فرقه في هذين التاريخين، أو أن يعبّر عن كل شيء بـ UTC مع +0000. (وتختلف المناطق الزمنية وقواعد تغيير الساعة من بلد إلى آخر.)
ثم يحوّل المشغل هذه الأوقات إلى المنطقة الزمنية لجهازك. ومن هنا ثلاثة مصادر محتملة للتأخر:
| العرض | السبب المحتمل | العلاج |
|---|---|---|
| الدليل كله متأخر بساعة بالضبط | يذكر الملف فرقًا ثابتًا يتجاهل تغيير الساعة، أو +0000 بينما الأوقات محلية | إعداد إزاحة الدليل في المشغل، أو السمة tvg-shift |
| فارق عدة ساعات | منطقة زمنية للجهاز مضبوطة خطأ، أو دليل مخصص لبلد آخر | التحقق من التاريخ والوقت والمنطقة الزمنية في إعدادات النظام |
| قناة واحدة فقط متأخرة | قناة تُبث من منطقة زمنية أخرى أو متأخرة عمدًا (نسخة «+1») | tvg-shift لهذه القناة وحدها |
| فارق بضع دقائق | القناة لا تحترم مواعيدها المعلنة | لا شيء: الدليل يعكس الجدول المخطط |
توضع السمة tvg-shift في سطر #EXTINF وتُعبَّر بـالساعات، وقد تكون سالبة أو عشرية: tvg-shift="-1" يُرجع الدليل ساعة واحدة لهذه القناة. وهذا مجرد ضمادة: فإذا ظهر الفارق أو اختفى عند تغيير الساعة، فالعيب الحقيقي في الملف المصدر.
وفخ أخير شائع في أجهزة البث والبوكس: تاريخ نظام خاطئ. إذا لم يزامن الجهاز ساعته (غياب الشبكة عند التشغيل، أو غياب بطارية الحفظ)، يبحث المشغل عن برامج يوم آخر ولا يعرض شيئًا. فعّل التاريخ والوقت التلقائيين في الإعدادات.
دليل فارغ: الأسباب بالترتيب
حين يبقى الدليل فارغًا بإصرار، تقدّم بمنهجية، من الأبسط إلى الأكثر تقنية.
- لم يُحمَّل الدليل بعد. قد يحتاج ملف كبير من بضع ثوانٍ إلى عدة دقائق في أول تنزيل، خصوصًا على جهاز متواضع. دع المشغل ينهي ثم أعد فتح قائمة القنوات.
- لم يُدخَل عنوان دليل. مع قائمة M3U، يلزم إما سمة
url-tvgفي الترويسة أو عنوان يُدخَل في إعدادات المشغل. - العنوان لا يستجيب. افتحه في متصفح: يجب أن تحصل على تنزيل أو على XML، لا على صفحة خطأ.
- المعرّفات غير متطابقة. ابحث عن
tvg-idلقناة في ملف XMLTV (بعد فك الضغط). إن لم يظهر فيه بالضبط فالربط مقطوع. - الدليل منتهي الصلاحية. انظر إلى تواريخ آخر عناصر
<programme>: ملف ينتهي بالأمس لا يستطيع عرض شيء اليوم. - تاريخ الجهاز خاطئ. راجع القسم السابق.
إذا كانت بضع قنوات فقط بلا دليل، فهذه الخطوة 4 في الغالب: هذه القنوات غير موجودة في الملف، أو موجودة بمعرّف آخر. ولا يستطيع أي إعداد في المشغل اختلاق جدول غير موجود في المصدر.
الحجم والضغط وتكرار التحديث
ملف XMLTV مسهب: يكرر كل برنامج وسومه وسماته وأحيانًا ملخصات طويلة. ولبضع مئات من القنوات على مدى أسبوع، قد يزن الملف عدة عشرات من الميجابايت. لذلك يُوزَّع غالبًا مضغوطًا بصيغة gzip، بالامتداد .xml.gz. ونص XML شديد التكرار يُضغط جيدًا: ويُلاحظ عادة انخفاض الحجم إلى خُمس أو عُشر.
| العنصر | الأثر على الوزن | النصيحة |
|---|---|---|
| عدد الأيام المغطاة | متناسب | يوم إلى ثلاثة أيام تكفي للبث المباشر |
| عدد القنوات | متناسب | دليل مقتصر على قنواتك أسرع |
| الملخصات والصور | مهم | مفيدة لكنها تثقل التحميل |
الضغط .gz | يقلص التنزيل كثيرًا | يُفضَّل حين يوفره المصدر |
على جهاز بث قليل الذاكرة، ليس التنزيل هو المكلف بل تحليل الملف: عشرات الآلاف من البرامج يجب قراءتها وفهرستها. ودليل مستهدف يُحمَّل أسرع بوضوح من دليل «عالمي» لا تستخدم منه إلا جزءًا.
أما من جهة التكرار، فتعيد المشغلات تنزيل الدليل على فترات منتظمة (غالبًا مرة يوميًا) أو عند الطلب. وإذا بدا جدولك جامدًا، فافرض تحديثًا من الإعدادات. وفي AICKO IPTV، تُوصف هذه العملية وإضافة مصدر دليل في صفحة دليل التلفزيون (EPG).
الخلاصة
- دليل البرامج ملف XMLTV منفصل عن الفيديو.
- يحتوي على عناصر
<channel>و<programme>مرتبطة بمعرّف. - يجب أن يكون
tvg-idفي القائمة مطابقًا تمامًا لـidفي الدليل. - تحمل الأوقات فرقًا عن UTC (
+0100أو+0200في فرنسا)؛ ويصححtvg-shiftقناة متأخرة. - دليل مضغوط بصيغة
.xml.gzومقتصر على قنواتك يُحمَّل أسرع.
الأسئلة الشائعة
لماذا أصبح دليلي متأخرًا بساعة منذ تغيير الساعة؟
يستخدم الملف المصدر فرقًا ثابتًا لا يتبع الانتقال إلى التوقيت الصيفي أو الشتوي. والعلاج الدائم مصدر مصحَّح؛ وإلى ذلك الحين، يعوّض إزاحة ساعة واحدة في إعدادات الدليل أو tvg-shift هذا العيب.
هل يمكنني استخدام دليل غير دليل خدمتي؟
نعم، إن كان مشغلك يتيح إدخال عنوان XMLTV. غير أن الدليل لن يعمل إلا إذا طابقت معرّفات قنواته قيم tvg-id في قائمتك؛ وإلا وجب تكييف هذه المعرّفات في القائمة.
هل على المشغل أن يفك ضغط ملف .gz بنفسه؟
نعم، تقبل معظم مشغلات التلفزيون ملفات .xml.gz مباشرة. ولا تحتاج إلى فك ضغطه بنفسك إلا لفحصه، مثلًا باستخدام 7-Zip في Windows.
لماذا لبعض القنوات دليل ولبعضها لا؟
القنوات التي بلا دليل غائبة عن ملف XMLTV أو موجودة فيه بمعرّف مختلف عن tvg-id الخاص بها. ولا يستطيع المشغل أن يعرض إلا ما يصفه المصدر.
