M3U أو بيانات دخول المزوّد: أيّهما ينبغي أن تستخدم فعلًا
المزوّد نفسه سيمنحك الاثنين معًا، وهما ليسا صيغتين للبيانات ذاتها. أحدهما صورة فوتوغرافية والآخر محادثة.
أرسل إليك مزوّدك بريدًا إلكترونيًا فيه اسم مستخدم وكلمة مرور ومضيف. البريد نفسه، أو صفحة حسابك لدى المزوّد، سيمنحك أيضًا عنوان URL طويلًا ينزّل ملف قائمة تشغيل. هذان ليسا 2 صيغتين للمعلومات ذاتها. ليسا البيانات نفسها مرتين، واختيار الخطأ منهما يكلّفك ميزات ستفترض لاحقًا أن التطبيق لا يملكها.
ما هو كل منهما فعلًا
تصدير M3U ملف نصي: أسماء قنوات وعناوين URL، يُولَّد لحظة طلبك له، مع بعض السمات المرفقة. إنه صورة فوتوغرافية لاشتراكك.
بيانات دخول المزوّد تُدخلك إلى واجهة المزوّد البرمجية، وهي نقطة نهاية HTTP واحدة تجيب عن أسئلة. إنها محادثة مع حسابك لدى المزوّد، والإجابات تتغير كلما تغيّر الاشتراك.
عمليًا، الواجهة نقطة نهاية واحدة لدى المزوّد تأخذ معامل action بدل مجموعة موارد، وتُرسَل بيانات الاعتماد مع كل طلب:
(no action) handshake: account status and allowance
get_live_categories the live categories
get_live_streams every live channel
get_live_streams + category_id the channels in one category
get_vod_info + vod_id details of one film
get_series_info + series_id seasons and episodes of one series
get_short_epg + stream_id the next few programmes on one channel
التصدير يعيش على خادم المزوّد نفسه، على مسار مختلف. فالتصدير وجلسة الواجهة هما 2 وجهان لـ 1 حساب، لا 2 منتجان، ولهذا يكون سؤال «أيّهما أستخدم» سؤالًا حقيقيًا.
الأشياء الثلاثة التي لا يعبّر عنها سوى الواجهة
الفئات كبيانات. يحمل التصدير سمة group-title لكل مُدخَل، وهي سلسلة نصية. أما الواجهة فلديها كائنات فئات لها معرّفات، والبثوث تشير إليها. في قائمة تشغيل صغيرة يبقى الفرق نظريًا. وفي قائمة حقيقية ليس كذلك: مصدر إنتاجي في عيّنتنا الخاصة حمل آلاف العناوين موزّعة على فئات كثيرة تتفاوت أحجامها تفاوتًا كبيرًا. وقائمة مسطّحة من آلاف العناصر مع سلسلة نصية مكررة مرفقة بها بنية بيانات مختلفة عن الفهرس، وتجربة الاستعراض تتبع أيّهما لديك.
حصة الاتصالات. تبلّغ الواجهة عن عدد الاتصالات المتزامنة التي يسمح بها اشتراكك. ولا يستطيع التصدير قول ذلك، لأن قائمة عناوين URL لا مكان فيها لوضعه.
هذا ليس رقمًا زخرفيًا. فالعرض المتعدد يقرأه ويحسب الميزانية قبل أن يعيّن أي بلاطة، وبذلك يُرفض طلب شبكة من 9 بلاطات على اشتراك يسمح بـ 2 اتصال في المنتقي بدل أن يظهر على الشبكة 7 أخطاء تشغيل متطابقة. مستحيل بلا الواجهة. حدود الاتصال لدى المزوّد يشرح طريقة العدّ.
الأرشيف. يستطيع خادم المزوّد الإبلاغ عن القنوات التي تحتفظ بنافذة قابلة للإرجاع وعن عمق تلك النافذة. هذا هو الأساس الكامل للمشاهدة اللاحقة، ومرة أخرى لا مكان في مُدخَل M3U للتعبير عنه.
وطريقة استخدام العميل له مهمة: عناوين المشاهدة اللاحقة تُبنى من قناة ووقت بداية ومدة بدل قراءتها لكل برنامج من أي مكان. يخبرنا خادم المزوّد بوجود النافذة ونبني العناوين بأنفسنا. ما هما المشاهدة اللاحقة والإزاحة الزمنية يغطي الآلية.
ما الذي ما تزال قائمة التشغيل تؤديه أفضل
ثلاثة أشياء، وهي حقيقية لا جوائز ترضية.
تعمل حين لا توجد واجهة. كثير من المصادر لا تأتي ببيانات دخول المزوّد أصلًا. قائمة يحتفظ بها مجتمع لبثوث عامة، أو ملف خاص بجهة بث محلية، أو قائمة تشغيل كتبتها بنفسك: لا واجهة لأي منها، وM3U هي الصيغة العالمية لها.
يمكن فحصها. افتحها في محرّر نصوص فترى بالضبط ما لديك. حين يختلّ شيء، تكون القدرة على قراءة المُدخَل ذات قيمة كبيرة، أما استجابة واجهة لا تراها فأصعب في التفكير فيها.
تبقى. ملف نزّلته يبقى يعمل بينما خادم المزوّد معطّل للصيانة، على الأقل حتى تنتهي صلاحية العناوين داخله.
هناك نقطة بيانات هنا يسهل الإفراط في قراءتها. في مجموعة مقيسة واحدة من 308 مُدخَلات مباشرة، انتهى 303 منها بـ .m3u8، و5 بلا امتداد، ولم ينتهِ أي منها بـ .ts. تلك المجموعة قوائم تشغيل منسّقة على طريقة الأدلة لا تصديرات مزوّدين، فهي تقول شيئًا عن طريقة كتابة قوائم التشغيل العامة ولا شيء عما يقدّمه مزوّدك. ولا نملك أي مجموعة مقيسة من عناوين البث المباشر لدى المزوّدين.
الشيء الذي لا يخبرك به أي منهما
لا التصدير ولا الواجهة يخبر العميل بالنقل الذي تستخدمه القناة فعلًا. سجلّ القناة المباشرة في فهرسنا لا يحمل حقل حاوية ولا حقل نقل ولا حقل MIME. لا مكان تعيش فيه تلك المعلومة، لأن أيًّا من المصدرين لا يوفّرها.
فلا يمكن استنتاج النقل إلا من سلسلة عنوان URL، والعميل يطلب .ts للقنوات المباشرة بلا تفريع ولا إعداد. وخادم المزوّد حرّ في إعادة توجيه ذلك إلى بيان HLS. وبعض الخوادم يفعل.
هناك عنصر تحكم تنسيق البث على مصدر ببيانات دخول المزوّد، وهو حاليًا لا يفعل شيئًا. يطبّع قيمته ويحفظها ويعيد تحميلها، وحين ذهبت أبحث عن بانِي عناوين URL أو شيفرة التشغيل التي تقرأه، لم أجد شيئًا، لأنه لا يوجد. إنه على القائمة، لا مفتاحًا تعجز عن العثور عليه. MPEG-TS أو HLS يغطي ما يفعله النقلان بشكل مختلف فعلًا ولماذا الفرق أقل أهمية مما يبدو.
ما يحمله التصدير فعلًا، قياسًا
الحجة لصالح التصدير أن السمات على كل سطر تحمل معظم ما يحتاجه الفهرس. وهذا صحيح حين تكون حاضرة، وتواتر حضورها متفاوت.
قياسًا على 2,203 مُدخَلات في مجموعتنا:
entries tvg-id group-title tvg-chno
playlist_01.m3u 308 308 (100%) 283 0
playlist_02.m3u8 1,895 1,392 (73.5%) 1,895 1,355
الملفان قائمتا تشغيل منسّقتان على طريقة الأدلة لا تصديران من مزوّد، فاقرأ هذا بوصفه عرضًا للتفاوت لا تنبؤًا بشأن مزوّدك.
ثلاثة أشياء في ذلك الجدول تلفت النظر.
عناوين المجموعات على كل مُدخَل في الملفين. التجميع هو السمة التي يضبطها المزوّدون على نحو صحيح، لأنها السمة التي تكسر منتجهم نفسه بشكل ظاهر إن أسقطوها.
أرقام القنوات غائبة كليًا عن ملف وحاضرة على 71 بالمئة من الآخر. إن كنت تهتم بظهور قنواتك بترتيب البث، فهذا فرق حقيقي بين المصادر، ويستحق التحقق قبل أن تلتزم بأحدها. أرقام القنوات في قائمة التشغيل يغطي ما تفعله السمة.
و20 مُدخَلًا في الملف الثاني تحمل سمة معرّف حاضرة وفارغة. المعرّف الفارغ ليس معرّفًا، ومعاملته كمعرّف ستربط تلك القنوات الـ20 بعضها ببعض. وهذا لا بد من معالجته صراحةً بدل أن يخرج من الشيفرة بالمصادفة.
المسلسلات والأفلام: حيث يتباعد الاثنان أكثر ما يتباعدان
القنوات المباشرة هي حيث يقترب التصدير أكثر ما يقترب من الكفاية، لأن القناة المباشرة هي فعلًا اسم وعنوان URL. أما المحتوى حسب الطلب فهو حيث تنفتح الفجوة.
الفيلم في التصدير سطر واحد: عنوان وعنوان URL. والفيلم عبر الواجهة كائن له نداء تفاصيل خاص به، وهناك تعيش القصة وطاقم التمثيل والسنة والتقييم وامتداد الحاوية.
وهذا الأخير ليس رفاهية. تبلّغ الواجهة عن امتداد حاوية الفيلم، ويبني العميل عنوان URL منه:
live https://provider.example.com/stream/{stream_id}.ts
film https://provider.example.com/movie/{vod_id}.{container_ext}
البث المباشر .ts ثابتة. والفيلم هو ما يقوله خادم المزوّد، لأن الأفلام ملفات مخزّنة بحاويات حقيقية، والعميل الذي يخمّن سيخمّن خطأ.
المسلسلات أبعد على المحور نفسه. يسطّح التصدير المسلسل إلى قائمة عناوين حلقات بأسماء تشفّر الموسم والحلقة إن كنت محظوظًا. أما الواجهة فلديها كائن مسلسل، ونداء تفاصيل لكل مسلسل، وحلقات مجمّعة حسب الموسم. ومكتبة مسلسلات تتصرف كمكتبة مسلسلات لا كمجلد ملفات تحتاج إلى أن تأتي تلك البنية من مكان ما.
ضمّ المزوّدين، وأين يجري ذلك العمل
حين يصير لديك أكثر من مصدر واحد، تكون الأمنية البديهية قائمة قنوات واحدة لا قائمتين، بحيث تظهر القناة ذاتها من مزوّدين مرة واحدة وتتحوّل احتياطيًا بينهما.
هذا مدعوم، والقاعدة وراءه تشرح خصائص الأداء. يخزّن الخادم تعريف المصدر المجمّع ولا شيء غيره: الحلّ والتجسيد يجريان دائمًا على الجهاز.
فالدمج والمطابقة والفهرسة كلها تجري على الجهاز الذي تشاهد عليه. وهذا يبقي الخدمة غير عالمة بما في قائمة تشغيلك، وهي القاعدة نفسها التي تمنعها من تحليل ملف M3U الخاص بك أصلًا. والثمن أن العمل يُنجز مرة لكل جهاز لا مرة لكل حساب، وهذا جزء من سبب كون التشغيل الأول بعد إضافة مصدر كبير أبطأ من كل تشغيل بعده.
والتحويل الاحتياطي للتشغيل عبر المصادر مبني فوق ذلك. فالقناة الموجودة في مصدرين تستطيع الانتقال إلى الآخر حين يفشل الأول.
أيّهما تختار
إن أعطاك مزوّدك مضيفًا واسم مستخدم وكلمة مرور، فاستخدمها. أضفها بوصفها بيانات دخول المزوّد. تحصل على الفهرس بفئات حقيقية، وعدد الاتصالات الذي يجعل العرض المتعدد صادقًا، والمشاهدة اللاحقة حيث يوفّرها المزوّد. أما التصدير فلا يمنحك شيئًا من ذلك ولا أي ميزة تعويضية.
إن كانت لديك قائمة تشغيل ولا شيء غيرها، فاستخدم قائمة التشغيل. هذا ما وُجدت له، ومعظم التطبيق يعمل بالطريقة نفسها.
إن كان لديك الاثنان وكنت تتتبّع خللًا، فالتصدير أداة تشخيص مفيدة حتى حين تكون الواجهة هي ما تعمل عليه. إنه الأثر الوحيد الذي تستطيع قراءته.
الشيء الوحيد الذي لا ينبغي فعله هو إضافة الاثنين كمصدرين منفصلين وتوقّع أن يستنتج التطبيق أنهما الاشتراك نفسه. إنهما 2 مصدران، كل منهما يستهلك اتصالات، وحساب الاتصالات سيكون صحيحًا بشأن وضع لم تقصده.
لإيصال أي منهما إلى جهاز ألعاب، إضافة قائمة تشغيل M3U على Xbox وتسجيل الدخول بحساب المزوّد على Xbox يغطيان القرار نفسه من جهة الإعداد. ولمعرفة معنى السمات داخل التصدير، M3U+ مقابل M3U المجردة.
ما قياس هذه المادة21 ادعاءات، كل منها مزود بالأدلة التي تقف خلفه
| المطالبة | الأدلة | عد |
|---|---|---|
| الواجهة التي تصل إليها ببيانات دخول المزوّد نقطة نهاية واحدة تأخذ معامل action، لا مجموعة موارد. خمسة عشر إجراءً تغطي الفهرس كله: الفئات والبثوث للقنوات المباشرة والفيديو والمسلسلات، إضافة إلى معلومات كل عنصر، ودليل مختصر، وجدول بيانات. | n = 15 | 31/08/2026 |
| عناوين البث يبنيها العميل من قالب بدل قراءتها من استجابة الواجهة: البث المباشر يستخدم لاحقة .ts، والفيديو حسب الطلب يستخدم امتداد حاوية تبلّغ عنه الواجهة. | n = 2 | 31/08/2026 |
| تصدير M3U يقدّمه خادم المزوّد نفسه على مسار مختلف، فالتصدير وجلسة الواجهة وجهان لحساب واحد لا منتجان. | n = 1 | 31/08/2026 |
| عنصر التحكم تنسيق البث المتاح على مصدر ببيانات دخول المزوّد يطبّع قيمته ويحفظها ويعيد تحميلها، ولا يقرأه أي بانٍ لعناوين URL ولا أي شيفرة تشغيل. | n = 1 | 23/08/2026 |
| سجلّ القناة المباشرة لا يحمل حقل حاوية ولا نقل ولا MIME، فلا يمكن استنتاج النقل إلا من عنوان URL بدل قراءته من الفهرس. | n = 1 | 23/08/2026 |
| حصة الاتصالات التي يبلّغ عنها حساب المزوّد تُستخدم لا تُعرض فقط: العرض المتعدد يحسبها قبل تعيين أي بلاطة ويتوقف عن عرض قنوات من مصدر استُنفدت حصته. | n = 1 | 15/08/2026 |
| عناوين المشاهدة اللاحقة يبنيها العميل من قناة ووقت بداية ومدة، بدل قراءتها لكل برنامج من الدليل. | n = 1 | 23/08/2026 |
| مصدر إنتاجي واحد في عيّنتنا الخاصة حمل آلاف العناوين المتمايزة موزّعة على فئات كثيرة لدى المزوّد تتفاوت أحجامها تفاوتًا كبيرًا. | n = 1 | 31/08/2026 |
| قياسًا على 2,203 مُدخَلات في مجموعة قوائم التشغيل الخاصة بنا: كانت تغطية المعرّفات 100 بالمئة في ملف و73.5 بالمئة في الآخر، وغابت أرقام القنوات كليًا عن ملف وحضرت على 1,355 مُدخَلًا في الآخر، وكانت عناوين المجموعات على كل مُدخَل في الملفين. | n = 2203 | 31/08/2026 |
| ضمّ عدة مزوّدين في قائمة قنوات واحدة عملية تجري على جانب العميل بحكم التصميم: الخادم يخزّن تعريف المصدر المجمّع ولا شيء غيره، والحلّ والتجسيد يجريان دائمًا على الجهاز. | n = 1 | 31/08/2026 |
| ثلاثة عشر نوعًا من حالة الحساب تتزامن بين الأجهزة، وقائمة التشغيل ليست واحدًا منها: ما ينتقل هو تعريف المصدر وقراراتك بشأنه. | n = 13 | 01/09/2026 |
| تفضيلات كل مصدر عائلة متزامنة مستقلة بذاتها، منفصلة عن المصدر نفسه، وهكذا يصل إعداد ضُبط في مكان ما إلى جهاز لا يوفّر له أي محرّر. | n = 1 | 01/09/2026 |
| توجد عائلتان من التجاوزات والفرق بينهما مهم: تجاوزات العرض مقيّدة بنطاق المصدر، أما تصحيحات الدليل فعلى مستوى الملف الشخصي ومستقلة عن المصدر. | n = 2 | 01/09/2026 |
| الحساب يحمل 10 قوائم تشغيل مرفوعة على الأكثر، ويُتحقق من ذلك عند بدء الرفع لا عند اكتماله. | n = 1 | 01/09/2026 |
| أيًّا كان المسار الذي تختاره، الخادم لا يحلّله: استيراد الملف يُخزَّن مشفّرًا، واستيراد عنوان URL يسجّل بيانات وصفية، والتحليل يجري على الجهاز الذي سيشغّله. | n = 1 | 01/09/2026 |
| العنوان الملصوق يُقبل حتى 2048 محرفًا، وهو ما يغطي براحة العناوين الحاملة للرموز التي يُصدرها المزوّدون. | n = 1 | 01/09/2026 |
| حصة الاتصالات التي تبلّغ عنها الواجهة يُعمل بها لا تُعرض فقط: التخطيط يحسبها قبل تعيين أي بلاطة ويتوقف عن عرض قنوات من مصدر استُنفدت حصته. | n = 1 | 15/08/2026 |
| التحويل الاحتياطي بين المصادر يكلّف اتصالًا إضافيًا واحدًا أثناء التداخل، فيرفض المخطِّط كل مرة لا يكون فيها ذلك الاتصال فائضًا على نحو يمكن إثباته ويعود إلى إعادة تشغيل عادية. | n = 1 | 01/09/2026 |
| بيانات الدليل تُضبط منفصلة عن المصدر في الحالتين، إذ يقبل الوضع العام حتى 15 عنوان URL ويحذّر وضع البلدان فوق 5 بلدان. | n = 2 | 01/09/2026 |
| ملفات الدليل تنزّلها أجهزتك لا خوادمنا، وهذا مذكور في شاشة الإعدادات بدل تركه تفصيلًا تنفيذيًا. | n = 1 | 01/09/2026 |
| في مجموعة قوائم تشغيل مقيسة واحدة، انتهى 303 من 308 مسارات مباشرة بـ .m3u8، و5 بلا امتداد، ولم ينتهِ أي منها بـ .ts. تلك المجموعة ملفات منسّقة على طريقة الأدلة لا تصديرات مزوّدين، ولا تقول شيئًا عما يقدّمه خادم المزوّد. | n = 308 | 23/08/2026 |