Education·8 min

نوشتهٔ Shamir

فایل XMLTV EPG واقعاً چگونه به نظر می رسد (با نمونه ها)

سریع ترین راه برای رفع سردرگمی در خصوص راهنماهای برنامه این است که یکی را باز کنید و آن را بخوانید. XMLTV یک XML ساده است — پرحرف، اما پیچیده نیست — و ده دقیقه با یک نمونهٔ واقعی ساعت های تخمین زنی را درباری خالی بودن راهنمایتان ذخیره خواهد کرد.

این پست یک فایل واقعی را نشان می دهد، آن را برچسب به برچسب رمزگشایی می کند، و سپس از آن درک برای توضیح رایج ترین شکست راهنایی استفاده می کند.

چارچوب صادقانه: Tuneline یک پخش کننده رسانه برای محتوایی است که شما تامین می کنید. راهنمایی را از منبع برنامه ای نشان می دهد شما تامین می کنید. بدون راهنما و بدون محتوای عرضه می شود.

ساختار در یک جملهٔ

یک فایل XMLTV دقیقاً دو نوع چیز دارد: عناصر <channel> که اعلام می کنند چه چیزی وجود دارد، و عناصر <programme> که می گویند چه چیزی و کی پخش می شود.

همینه. هر چیز دیگری جزئیات است.

یک نمونهٔ کمینه و کامل

<?xml version="1.0" encoding="UTF-8"?>
<tv generator-info-name="example-grabber">

  <channel id="example.news.us">
    <display-name>Example News</display-name>
    <icon src="http://logos.example/news.png" />
  </channel>

  <programme start="20260806180000 +0000"
             stop="20260806190000 +0000"
             channel="example.news.us">
    <title lang="en">Evening Report</title>
    <desc lang="en">The day's headlines and analysis.</desc>
    <category lang="en">News</category>
  </programme>

</tv>

این یک راهنمای معتبر و کامل است که یک منبع و یک ساعت برنامه را توصیف می کند. یک فایل واقعی همان دو شکل است که هزاران بار تکرار شده است.

رمزگشایی شده برچسب به برچسب

عنصرکاری که انجام می دهد
<tv>ریشهٔ. همهٔ چیز درون آن قرار دارد.
<channel id="…">منبعی را اعلام می کند. id قسمت مهم است — این کلید پیوند است.
<display-name>نام قابلِ خوانش توسطِ انسان که در راهنما نشان داده می شود.
<icon src="…">URL لوگو.
<programme start stop channel>یک مورد برنامه ریزی شده. channel باید با <channel id> مطابقت داشته باشد.
<title>نام برنامه.
<desc>خلاصه.
<category>ژانر. این همان چیزی است که کنترل های والدین و فیلترها بر روی آن عمل می کنند.

فرمتِ زمان برداشت همه را گیر می افتد

start="20260806180000 +0000"

به عنوان YYYYMMDDHHMMSS دنبال شده توسط یک تغییر زمانِ UTC خوانده شود. پس این 6 آگوست 2026، 18:00:00 UTC است.

تغییر زمان قسمت مهمی است. اگر یک فایل آن را حذف کند، یا یکی اعلام کند که با واقعیت مطابقت ندارد، راهنمای شما کاملاً بار می شود و همهٔ چیز را در زمانِ اشتباه نشان می دهد. این یک مشکلِ کاملاً متفاوت از راهنمایی خالی است، و در تنظیماتِ منطقهٔ زمانی شما برطرف می شود، نه با تغییرِ منابع. (اصلاحِ اوقاتِ اشتباه.)

پیوند: چرا راهنمای شما خالی است حتی اگر فایل بار شده است

این چیزی است که درکِ آن ارزشمند است، زیرا بیشترِ شکایاتِ راهنما را توضیح می دهد.

لیستِ پخشِ شما و راهنمای شما دو فایلِ جداگانه هستند که باید با هم تطابق داشته باشند. تطابق بر روی یک شناسه اتفاق می افتد.

در M3U:

#EXTINF:-1 tvg-id="example.news.us" tvg-logo="…",Example News
http://example.com/news.m3u8

در XMLTV:

<channel id="example.news.us">

tvg-id باید برابرِ channel id باشد. دقیقاً — از جملهٔ حروفِ بزرگ و علائمِ نگارشی.

وقتی آنها مطابقت داشته باشند، ورودی برنامهٔ خود را نشان می دهد. وقتی آنها مطابقت نداشته باشند، یک ورودی با راهنمایی خالی دریافت می کنید، و فایل هرگز مقصر نبود. (جنبهٔ M3U این.)

این است که چرا "من یک راهنما اضافه کردم و هیچ اتفاقی نیفتاد" معمولاً نه تقصیرِ لیستِ پخش و نه تقصیرِ راهنما است. این است که کسی آنها را بر سرِ شناسه ها متفق نساخته است. راهنمایی که منطقهٔ متفاوتی از لیستِ پخشِ شما را پوشش می دهد هزاران برنامه را بار خواهد کرد که با هیچ ورودیِ شما مطابقت ندارند.

افزودنِ منبعِ راهنما

نحوهٔ بررسیِ منبعِ راهنما قبل از اعتمادِ به آن

قبل از اینکه پخش کنندهٔ خود را متهم کنید، به فایل نگاه کنید.

1. آیا فشرده است؟ بسیاری از منابع .xml.gz را عرضه می کنند. این نرمال است — بیشترِ پخش کننده ها آن را مدیریت می کنند. اگر دستی بررسی می کنید، ابتدا فشرده سازی را باز کنید.

2. آیا واقعاً منابعِ شما را شامل می شود؟ فایل را برای یکی از مقادیرِ tvg-id شما جستجو کنید. اگر در آنجا نیست، آن راهنما لیستِ شما را پوشش نمی دهد، و هیچ تنظیمی این را تغییر نخواهد داد.

curl -s "https://example.com/guide.xml.gz" | gunzip | grep -c "<channel "
curl -s "https://example.com/guide.xml.gz" | gunzip | grep "example.news.us"

اولی به شما می گوید چند منبع اعلام می کند. دومی به شما می گوید که آیا موردِ شما یکی از آنها است یا نه.

3. آیا دامنهٔ زمانیِ مفیدی را پوشش می دهد؟ اولین و آخرینِ مقادیرِ start را بررسی کنید. برخی از راهنماهایِ رایگان فقط 24 ساعت را حمل می کنند؛ برخی دو هفته را حمل می کنند. راهنمایی که دیروز تمام شده است با یک راهنمایی شکسته یکسان به نظر می رسد.

4. اندازهٔ آن چقدر است؟ راهنماهایِ ملی کامل در بدونِ فشردگی به ده ها یا صدها مگابایت می رسند. این نرمال است، و این است که چرا بارِ اول می تواند دقایقی طول بکشد در یک جعبهٔ تلویزیون. (منابعِ XMLTV رایگان.)

بدشکلی های رایج

فایل های راهنما در دنیایِ واقعی به روش های قابلِ پیش بینی می شکنند:

  • صفحهٔ خطایِ HTML ذخیره شده به عنوانِ .xml. آن را باز کنید. اگر خطِ اول <!DOCTYPE html> است، دانلود ناموفق بود و خطا را ذخیره کرد.
  • علائمِ آمپرسندِ بدونِ فرار. یک & برهنه به جایِ &amp; در یک عنوان XML نامعتبر است و می تواند کلِ تجزیهٔ را لغو کند. یک عنوانِ بد، بدونِ راهنما.
  • ورودی های تکراریِ <channel id>. دو اعلام از شناسهٔ یکسان؛ رفتار به پخش کننده بستگی دارد.
  • برنامه هایی بدونِ کنالِ متطابق. ورودی های برنامه ای که ویژگیِ channel شان با هیچ <channel id> اعلام شده ای مطابقت ندارد. آنها بی سرِ و صدا حذف می شوند.
  • اوقاتِ گمشدهٔ stop. برخی گرفت گرها آنها را حذف می کنند و انتظار دارند که شروعِ برنامهٔ بعدی پایان را استنباط کند. برخی پخش کننده ها این را استنباط نمی کنند، شکاف هایی را رها می کنند.

آیا می توانم یکی را خود بنویسم یا ویرایش کنم؟

بله. XML است، بنابراین هر ویرایشگرِ متنی کار می کند، و برای یک راه اندازیِ کوچکِ منتخب کاملاً عملی است.

ویرایش های مفید:

  • <channel id> را تغییر دهید تا با tvg-id مطابقت داشته باشد که لیستِ پخشِ شما قبلاً استفاده می کند — اغلب آسان تر از ویرایشِ صدها خطِ لیستِ پخش.
  • آن را کوتاه کنید. عناصرِ <channel> و <programme> را که نیازی ندارید حذف کنید. یک فایلِ کوچک تر بسیار سریع تر بر روی دستگاه های محدود بار می شود.
  • تغییرِ زمان را اصلاح کنید اگر هر بار یکنواخت اشتباه است.

دو قانون: به عنوانِ UTF-8 ذخیره کنید، و آن را خوش شکل نگه دارید — یک & بدونِ فرار می تواند کلِ راهنما را برایتان هزینه کند.

سوالاتِ متداول

فایلِ EPG چگونه به نظر می رسد؟

XML سادهٔ با دو نوعِ عنصر: <channel> اعلام کنندهٔ هر منبع، و <programme> دادنِ زمانِ شروع، زمانِ توقف و عنوان برای هر موردِ برنامه ای.

فرمتِ XMLTV چیست؟

XML، معمولاً به عنوانِ .xml یا .xml.gz فشرده شدهٔ gzip ارائه می شود. مهرِ زمانی ها YYYYMMDDHHMMSS به اضافهٔ یک تغییرِ زمانِ UTC هستند.

چرا راهنمایِ من بار می شود اما هیچ چیز نشان نمی دهد؟

تقریباً همیشه زیرا مقادیرِ tvg-id لیستِ پخشِ شما با مقادیرِ <channel id> راهنما مطابقت ندارند. فایل خوب بار شد؛ هیچ چیزی برای پیوندِ دادن به آن نبود.

نحوهٔ بررسیِ اینکه آیا راهنما منابعِ من را پوشش می دهد؟

آن را دانلود کنید، در صورتِ نیاز فشرده سازی را باز کنید، و برای یکی از رشته های tvg-id شما جستجو کنید. اگر در فایل نیست، آن راهنما لیستِ شما را توصیف نمی کند.

چرا فایلِ راهنمایِ من بسیار بزرگ است؟

یک راهنمایِ ملی با دو هفتهٔ برنامه برای صدها منبع واقعاً ده ها یا صدها مگابایت است. این انتظار می رود، و این است که چرا بارِ اول کند است.

آیا می توانم فایلِ XMLTV را ویرایش کنم؟

بله، در هر ویرایشگرِ متنی. به عنوانِ UTF-8 ذخیره کنید و XML را خوشِ شکل نگه دارید — یک & بدونِ فرار می تواند کلِ تجزیه را بشکند.

خلاصهٔ نهایی

  • XMLTV دقیقاً دو چیز را نگه دارد: اعلان های <channel> و ورودی های <programme>.
  • مهرِ زمانی ها YYYYMMDDHHMMSS + تغییرِ زمانِ UTC هستند — یک تغییرِ زمانِ اشتباه به معنایِ داده های درست، اوقاتِ اشتباه است.
  • راهنما به لیستِ پخشِ شما بر روی tvg-id = channel id پیوند می خورد، دقیقاً. عدمِ تطابق دلیلِ اصلی راهنمایی خالی است.
  • قبلِ از متهمِ کردن بررسی کنید: فشرده سازی را باز کنید، برای شناسهٔ شما grep کنید، دامنهٔ تاریخ را بررسی کنید.
  • یک & بدونِ فرار می تواند کلِ فایلِ راهنما را باطل کند.

آیا لیستِ پخش و URL راهنما دارید؟ دانلود Tuneline — هر دو را اضافه کنید و شبکهٔ پر می شود. رایگان و بدونِ تبلیغات.

— Shamir

اشتراک‌گذاری مقاله

The fast fix

Get Tuneline free

A clean, no-account media player for macOS, Windows, Linux, Android, TV, and iOS. Bring your own playlist.

Download free

The cross-platform media player behind these answers — new platforms, sync updates, the honest build story. No spam, unsubscribe anytime.

این مقاله را به زبان دیگری بخوانید

Tuneline یک برنامهٔ پخش‌کنندهٔ رسانه است. هیچ محتوایی را ارائه، میزبانی یا توزیع نمی‌کند. لیست پخش خود را شما می‌آورید، دقیقاً مانند VLC.