Xtream Codes: برنامج صار بروتوكولًا
كان Xtream Codes في الأصل اسم برنامج تجاري لإدارة خوادم بث الفيديو: يتيح للمشغّل إدارة التدفقات وحسابات العملاء والفئات والإحصاءات من لوحة إدارة. توقف توزيع البرنامج عام 2019، لكن الواجهة البرمجية (API) التي كان يتيحها للمشغّلات بقيت. وقد اعتمدتها برمجيات خوادم كثيرة كما هي كي تبقى متوافقة مع التطبيقات القائمة.

واليوم تدل عبارة «Xtream Codes» أساسًا على طريقة موحّدة للاتصال: فالمشغّل الذي «يتكلم» هذه الواجهة يستطيع الاتصال بأي خادم ينفذها. وهي ليست خدمة ولا مزوّدًا ولا محتوى. وكما في قائمة M3U، تتوقف القانونية كليًا على الخدمة التي تتصل بها: فالمشغّل الذي يملك حقوق البث يستطيع تمامًا استخدام هذه الواجهة، بينما تبقى الخدمة التي تعيد بث القنوات دون إذن غير قانونية، أيًّا كانت التقنية المستخدمة.
معلومات الاتصال الثلاث
تزوّد الخدمة المتوافقة عميلها بثلاثة عناصر:
- عنوان الخادم، ويصحبه غالبًا منفذ، مثل
http://serveur.exemple.fr:8080؛ - اسم مستخدم (username)؛
- كلمة مرور (password).
والمنفذ هو رقم «الباب» الذي يستمع عليه الخادم. وبلا تحديد يستخدم http المنفذ 80 ويستخدم https المنفذ 443؛ وكثير من الخوادم من هذا النوع تستخدم منافذ أخرى مثل 8080 أو 25461. والخطأ الشائع نسيان المنفذ أو لصق مسار زائد بعد العنوان (/get.php أو /c/…): فالتطبيق يبني المسارات بنفسه وينتظر عنوان الجذر وحده.
| ما تدخله | النتيجة |
|---|---|
http://serveur.exemple.fr:8080 | صحيح |
serveur.exemple.fr:8080 | تقبله معظم المشغّلات، فتضيف http:// |
http://serveur.exemple.fr (نُسي المنفذ) | فشل إذا كان الخادم لا يستمع على المنفذ 80 |
http://serveur.exemple.fr:8080/player_api.php | فشل شائع: المسار أُضيف مرتين |
https:// بدل http:// | فشل إذا كان الخادم لا يوفر التشفير على هذا المنفذ |
واسم المستخدم وكلمة المرور حساسان لحالة الأحرف عادةً: فـ «Martin» و«martin» حسابان مختلفان. كما تكفي مسافة نُسخت خطأ في نهاية حقل لإفشال الاتصال.
ما يحدث عند الاتصال: player_api.php
حين تؤكد معلوماتك، يرسل المشغّل طلب HTTP أولًا إلى سكربت player_api.php في الخادم، مع بياناتك كوسائط:
http://serveur.exemple.fr:8080/player_api.php?username=IDENTIFIANT&password=MOTDEPASSE
يرد الخادم بوثيقة JSON (صيغة بيانات نصية مهيكلة) من كتلتين. إليك رداً مبسطًا:
{
"user_info": {
"auth": 1,
"status": "Active",
"exp_date": "1798761600",
"is_trial": "0",
"active_cons": "0",
"max_connections": "1",
"allowed_output_formats": ["m3u8", "ts"]
},
"server_info": {
"url": "serveur.exemple.fr",
"port": "8080",
"https_port": "8443",
"server_protocol": "http",
"timezone": "Europe/Paris"
}
}
تصف الكتلة user_info حسابك، وتصف الكتلة server_info الخادم. فإذا كانت قيمة auth تساوي 0 رُفضت البيانات وعرض المشغّل خطأ اتصال. وإذا لم يرد الخادم إطلاقًا، أو أعاد صفحة HTML بدل JSON، فالمشكلة قبل المصادقة: عنوان خاطئ، أو منفذ مغلق، أو خادم متوقف، أو شبكة تحجب الاتصال.
الإجراءات الرئيسية في الواجهة
بعد المصادقة يحمّل المشغّل الكتالوج بإضافة وسيط action إلى العنوان نفسه. ويعيد كل إجراء قائمة JSON. وأكثرها استخدامًا ما يلي.
| الإجراء | ما يعيده |
|---|---|
get_live_categories | فئات القنوات المباشرة (المعرّف والاسم) |
get_live_streams | القنوات، مع إمكانية التصفية بـ &category_id=، بالاسم والشعار ومعرّف EPG |
get_vod_categories | فئات الفيديو عند الطلب |
get_vod_streams | الأفلام المتاحة، مع الملصق والتقييم وتاريخ الإضافة وامتداد الملف |
get_vod_info | البطاقة التفصيلية لفيلم (&vod_id=): الملخص والمدة والمسارات |
get_series_categories | فئات المسلسلات |
get_series | قائمة المسلسلات |
get_series_info | مواسم المسلسل وحلقاته (&series_id=) |
get_short_epg | البرامج القادمة لقناة (&stream_id=) |
أما الدليل الكامل للبرامج فيتوفر بصيغة XMLTV عبر السكربت xmltv.php، بالبيانات نفسها. وهذه إحدى مزايا الواجهة: لا يحتاج المشغّل إلى عنوان دليل منفصل. وتفصّل مقالتنا عن EPG وXMLTV طريقة عمل هذا الدليل.
كيف تُشغَّل الفيديوهات بعد ذلك
لا تحتوي قوائم JSON على الفيديوهات، بل معرّفات فقط. وللبدء بالتشغيل يبني المشغّل عنوانًا وفق قالب ثابت:
http://serveur:port/live/IDENTIFIANT/MOTDEPASSE/12345.ts
http://serveur:port/movie/IDENTIFIANT/MOTDEPASSE/67890.mkv
http://serveur:port/series/IDENTIFIANT/MOTDEPASSE/24680.mp4
في البث المباشر، يجب أن يكون الامتداد المختار (.ts لتدفق MPEG-TS متواصل، و.m3u8 لـ HLS) مدرجًا في القائمة allowed_output_formats للحساب. وفي الأفلام والحلقات يطابق الامتداد الملف المخزَّن فعلًا على الخادم. وتُعرض هذه الصيغ في HLS وMPEG-TS وDASH.
الحالة والانتهاء والاتصالات المتزامنة
تحتوي الكتلة user_info على عدة حقول مفيدة لفهم رفض أو انقطاع.
الحالة
تكون قيمة الحقل status عادةً Active. وقيم أخرى مثل Expired أو Banned أو Disabled تدل على أن الحساب لم يعد قادرًا على تشغيل أي محتوى، حتى لو نجح الاتصال نفسه. ويشير الحقل is_trial إلى حساب تجريبي.
تاريخ الانتهاء
الحقل exp_date ليس تاريخًا مقروءًا بل ختم زمني Unix: عدد الثواني المنقضية منذ 1 يناير 1970 عند منتصف الليل بالتوقيت العالمي UTC. وفي المثال أعلاه يوافق 1798761600 يوم 1 يناير 2027 الساعة 0 بتوقيت UTC. وتحوّله المشغّلات إلى تاريخ لعرضه. وتعني القيمة الفارغة أو null عادةً حسابًا بلا تاريخ نهاية.
الاتصالات المتزامنة
يبيّن max_connections كم تدفقًا يمكن تشغيله في الوقت نفسه بالحساب ذاته، ويبيّن active_cons كم منها يعمل حاليًا. فإذا كان الحد 1 وكان جهاز آخر في المنزل يشاهد قناة، فشل التشغيل الجديد أو قطع السابق. وانتبه إلى فخ شائع: حين تغيّر القناة، يستغرق إغلاق الاتصال القديم أحيانًا بضع ثوانٍ في جهة الخادم. فالتنقل السريع جدًا قد يثير مؤقتًا رفضًا بسبب «اتصالات كثيرة»، يزول من تلقاء نفسه.
Xtream Codes أم قائمة M3U: الفروق
تقدم معظم الخدمات المتوافقة أيضًا قائمة M3U مولَّدة من الحساب نفسه. تتيح الطريقتان الكتالوج نفسه، لكن ليس بالأسلوب نفسه.
| المعيار | اتصال Xtream Codes | قائمة M3U |
|---|---|---|
| التحميل | بحسب الفئة وعند الطلب | ملف واحد، ضخم أحيانًا |
| الأفلام والمسلسلات | بطاقات وملصقات ومواسم وحلقات منظمة | قائمة مسطحة، غالبًا بلا مواسم |
| دليل البرامج | يُوفَّر تلقائيًا | يجب إدخال العنوان url-tvg |
| معلومات الحساب | الانتهاء والاتصالات ظاهران | لا شيء |
| الخوادم المقبولة | فقط التي تنفذ الواجهة | أي مصدر، بما فيه ملفاتك |
خلاصة القول: الواجهة أريح حين توفرها الخدمة، خصوصًا لكتالوجات الأفلام والمسلسلات؛ وقائمة M3U أعم. وتُشرح صياغة القوائم في صيغة M3U سطرًا بسطر، وإدخال نوعي الحسابين في AICKO IPTV في صفحة Xtream Codes وM3U.
الأمان والتشخيص
ميزة في هذه الواجهة تستحق أن تُعرف: يمر اسم المستخدم وكلمة المرور داخل عنوان كل طلب وكل تدفق. وفي خادم http عادي ينتقلان إذن مكشوفين عبر الشبكة. وبعض النتائج العملية:
- لا تستخدم أبدًا لهذا الحساب كلمة مرور تستعملها في مكان آخر (البريد أو البنك)؛
- لا تنشر لقطة شاشة أو سجل أخطاء يحتوي على عنوان تدفق كامل: فهو يكشف بياناتك؛
- فضّل
httpsحين توفره الخدمة (ويشير إليه الحقلhttps_port).
ولتشخيص فشل، فإن أنجع طريقة فتح العنوان player_api.php?username=…&password=… في متصفح، على الشبكة نفسها:
- لا رد أو انتهاء المهلة: عنوان أو منفذ خاطئ، أو خادم متوقف، أو شبكة تحجب هذا المنفذ.
- رد يحمل
"auth":0: اسم المستخدم أو كلمة المرور غير صحيحين. - رد بحالة غير
Active: حساب منتهٍ أو معلَّق، يُراجَع مع الخدمة. - رد صحيح: الاتصال يعمل؛ وإذا فشل التشغيل مع ذلك فابحث في صيغة التدفق أو الشبكة أو فك الترميز في الجهاز.
الخلاصة
- Xtream Codes هو اليوم واجهة اتصال اعتمدتها خوادم كثيرة، لا خدمة.
- يقوم الاتصال على عنوان مع منفذ واسم مستخدم وكلمة مرور حساسين لحالة الأحرف.
- يعيد السكربت
player_api.phpحالة الحساب، ثم الكتالوج عبر إجراءات مثلget_live_streamsأوget_series. - الحقل
exp_dateختم زمني Unix، وmax_connectionsيحدّ التشغيل المتزامن. - تنتقل بيانات الدخول ضمن العناوين: استخدم كلمة مرور فريدة.
الأسئلة الشائعة
هل Xtream Codes قانوني؟
التقنية محايدة: إنها واجهة اتصال بين مشغّل وخادم. والمهم هو الخدمة التي تتصل بها. يجب أن تملك الحقوق على البرامج التي تشاهدها؛ والخدمة التي تعيد بث قنوات مدفوعة دون إذن تبقى غير قانونية.
لماذا يعمل اتصالي على جهاز ولا يعمل على آخر؟
تحقق أولًا من خطأ في الكتابة، خصوصًا حالة الأحرف أو مسافة أخيرة. وإذا تطابقت المدخلات، فقد يكون حد الاتصالات المتزامنة قد بُلغ، أو أن الجهاز الثاني على شبكة تحجب المنفذ الذي يستخدمه الخادم.
كيف أعرف تاريخ انتهاء حسابي؟
تعرضه معظم المشغّلات في معلومات الملف الشخصي. وإلا ففي رد player_api.php الحقل exp_date، وهو ختم زمني Unix يحوّله أي محوّل عبر الإنترنت إلى تاريخ مقروء.
هل يجب إدخال عنوان دليل تلفزيوني مع اتصال Xtream Codes؟
عادةً لا: فالمشغّل يجلب الدليل من الخادم نفسه. ولا يفيد عنوان دليل خارجي إلا إذا كان دليل الخدمة فارغًا أو ناقصًا.
