IPTV kanal rehberin doğru programları ama yanlış saatleri gösteriyorsa — her program gerçekten yayınlandığı saatten bir veya iki saat sapmışsa — doğadaki en inatçı ve yaygın XMLTV hatalarından biriyle karşı karşıyasın. Çözüm genellikle tek satırlık bir URL değişikliğidir. Hangi yöne kaydırman gerektiğini teşhis etmek yaklaşık beş dakika sürer.
Bu rehber hatanın aslında nerede olduğunu, ihtiyacın olan saat farkını nasıl bulacağını ve bunu nasıl uygulayacağını anlatıyor. Bu sitedeki EPG saat dilimi kaydırıcısı asıl kaydırma işlemini yapar; bu makale onu doğru şekilde nasıl kullanacağını açıklar.
Aynı program, iki saat: EPG, kaydırıcı onu yeniden hizalayana kadar duvar saatinin iki saat gerisinde kalır.
XMLTV saat dilimi hataları neden olur
XMLTV 25 yıllık bir biçimdir. Her programın şöyle görünen bir start ve stop özniteliği vardır:
<programme start="20260507180000 +0000" stop="20260507190000 +0000" channel="bbc1">
14 rakam duvar saatidir; sondaki +0000 duvar saatinin içinde bulunduğu saat dilimi farkıdır. Yani 20260507180000 +0000 "7 Mayıs 2026, 18:00 UTC" anlamına gelir. Oynatıcı her ikisini de okur, senin yerel saat dilimine dönüştürür ve CET'deysen "20:00" gösterir.
Bu, XMLTV dosyası kendi içinde tutarlıysa çalışır. Ancak XMLTV uzun bir program zinciri tarafından oluşturulur:
- Orijinal yayıncının liste sistemi, kendi yerel saat diliminde.
- Belki bölgesel bir saat dilimine dönüştüren bölgesel bir toplayıcı.
- Muhtemelen onu tekrar yuvarlayan IPTV sağlayıcısının kazıyıcısı (scraper).
- İçindeki rakamların UTC olup olmadığına bakmaksızın sonuna bir
+0000yapıştıran sağlayıcının XMLTV dışa aktarıcısı.
Bu adımlardan herhangi biri bir saat dilimi hatasına neden olabilir ve biçim hiçbir sağlama (checksum) sunmaz. Çıktı dosyası iyi biçimlendirilmiş görünür. Oynatıcı, içindeki rakamların dışındaki saat farkı iddiasıyla eşleşmediğini algılayamaz. Sonuç, tam bir sayı kadar saatle kendinden emin bir şekilde yanlış olan bir rehberdir.
İkinci bir hata sınıfı, XMLTV dosyasının saat farkını tamamen atlamasıdır:
<programme start="20260507180000" stop="20260507190000" channel="bbc1">
Saat farkı olmadan oynatıcı tahmin etmek zorundadır. Çoğu oynatıcı "rakamlar senin yerel saatindedir" varsayımında bulunur; bazıları UTC varsayar. Sağlayıcı UTC'yi kastetmişse ve oynatıcın yerel saati varsayıyorsa, her program senin yerel saat farkın kadar sapacaktır.
Her iki durumda da, temel alınan veriler doğrudur — sayıların doğru yere gelmesi için sadece eklenmesi veya çıkarılması gerekir.
Hangi saat farkına ihtiyacın olduğunu bulmak
Çözüm "XMLTV dosyasındaki her zaman damgasına N saat ekle"dir. N'yi seçmek için:
1. Adım: Şu anda ne oynadığını bildiğin tek bir kanal seç
Oynatıcıyı aç. Gerçekte ne olduğunu bildiğin canlı içerik gösteren bir kanal bul — 18:00'de yerel haberler, saat başında BBC News, büyük bir kanalda ana haber bülteni (prime-time). Amaç bilinen bir çapaya sahip olmaktır: "bu kanal şu anda benim saatimdeki tam şu saatte X'i gösteriyor".
2. Adım: EPG'nin ne dediğine bak
Aynı kanalın oynatıcındaki "şu an oynatılan" girdisine bak. İddia ettiği başlama saatini not al. Şovun 16:00'da başladığını söylüyor ancak gerçekte 18:00'de başladıysa, EPG iki saat geridedir — her zaman damgasına 2 eklemen gerekir.
Eğer EPG şovun "iki saat içinde başlayacağını" gösteriyor ancak gerçekte şu anda yayınlanıyorsa, EPG iki saat ileridedir — 2 çıkarman gerekir.
3. Adım: Aynı saat farkını birden fazla kanalda onayla
İkinci ve üçüncü bir kanal seç ve farkın tutarlı olduğunu doğrula. A kanalı +2 ve B kanalı -3 sapmışsa, bir saat dilimi sorunun yoktur; her kanal için tutarsız verilerin vardır ve sabit bir kaydırma her ikisini de düzeltmez. (Çok kanallı tutarsızlık nadirdir ve genellikle sağlayıcının saat dilimlerini uyumlaştırmadan birden çok kaynaktan gelen yayınları birleştirdiği anlamına gelir — buradaki tek çözüm sağlayıcıdan verilerini temizlemesini istemektir.)
Vakaların %95'inden fazlasında fark tüm kanallarda tutarlıdır ve değer şunlardan biridir: ±1, ±2, ±3, bazen sağlayıcının kaynak yayınının geldiği yerden uzak saat dilimlerindeki kullanıcılar için ±5 veya ±8.
Kaydırmayı uygulamak
Farkı öğrendikten sonra, kaydırıcı aracı sana, her zaman damgası tam olarak o kadar kaydırılmış şekilde sağlayıcının XMLTV'sini sunan yeni bir URL verir. Oynatıcının EPG URL'sini yenisiyle değiştir ve rehber saatleri hizalansın.
İki pratik nokta:
- Kaydırıcı tek seferlik değil, bir aracıdır (proxy). Oynatıcın EPG'yi birkaç saatte bir yenileyecektir. Her yenileme, sağlayıcının XMLTV'sini kaydırıcı üzerinden yeniden alır ve saat farkını yeniden uygular. Bizim tarafımızda önbellekleme (caching) yoktur; kaynak verinin yetkili verisi hala geçerlidir, sadece saatleri ayarlanmıştır.
- Kimlik bilgilerin URL'ye girer. Çoğu IPTV sağlayıcısı XMLTV'yi
http://server/xmltv.php?username=...&password=...gibi bir URL'de gönderir. Kaydırıcı bu kimlik bilgilerini yalnızca kaynağı almak için istek anında okur — bunları günlüğe kaydetmez, önbelleğe almaz veya dizine eklemez. Ayrıca erişim günlüklerimiz yazılmadan önce sorgu dizesi temizlenir.
Kaydırıcının düzeltmediği şeyler
Birkaç benzer sorun saat dilimi hatası gibi görünür ancak öyle değildir:
Programlar senkronizasyondan kayıyor ve çıkıyor
EPG bazen doğru bazen yanlışsa, bir saat dilimi sorununa bakmıyorsun demektir. Olasılıklar:
- Sağlayıcının verileri eskidir. Daha eski program girişleri yavaş bir tempoda yenilenir; yenileri daha taze bir kaynaktan gelir. İki kaynak aynı XMLTV'de karışık olarak farklı saat dilimlerinde olabilir. Sağlayıcı işbirliği olmadan düzeltilmesi zordur.
- Yaz Saati Uygulaması (DST). Yerel saat dilimin yaz saatine uyuyor ancak sağlayıcının XMLTV'si uymuyorsa (veya tam tersi), saat farkı yılda iki kez bir saat değişir. Sabit fark kaydırması yalnızca yılı ayarladığın yarısı için işe yarar.
Özellikle DST sorunları için, yılın her yarısı için bir tane olmak üzere iki kaydırılmış URL tutabilir ve oynatıcının EPG kaynağını yılda iki kez değiştirebilirsin. Sinir bozucudur ama işe yarar.
Rehber yanlış değil, boş
"Bilgi yok" / boş rehber farklı bir sorundur. EPG yüklenmiyor sorununun nasıl düzeltileceğine bak — buradaki neden genellikle oynatma listesi ve XMLTV arasındaki tvg-id uyuşmazlığıdır, saat dilimi değil.
Belirli kanallar yanlış ama çoğu doğru
Diğer her şey doğruysa ve yalnızca bir veya iki kanal sapmışsa, o kanalların kaynak verileri sağlayıcı tarafında yanlıştır. Sabit kaydırma yanlış olanları düzeltmek için doğru kanalları bozacaktır. Ya sağlayıcıdan verileri düzeltmesini isteyin ya da bu belirli kanalların saatlerinin yaklaşık olacağını kabul edin.
Saat farkını neden otomatik olarak algılamıyoruz
Kaydırıcı, saat farkını çözmeye çalışmak yerine açık bir parametre olarak alır. Teoride dosyayı getirebilir, program başlangıç saatlerini "şimdi" ile karşılaştırabilir ve tahmin edebilirdik. Yapmıyoruz çünkü:
- "Doğru cevap", çapa olarak hangi kanalı kullandığına bağlıdır. Farklı kanallar aynı fikirde olmayabilir.
- Yanlış bir otomatik tahmin, sormaktan daha kötüdür. Sessizce yanlış miktarda kaydırırsak, sürekli olarak farklı bir değerle yanlış olan bir rehber elde edersin ve hata ayıklamak için zaman harcarsın.
- Kullanıcı bağlama sahiptir. Kullanıcı "18:00'deki BBC One haberleri şu anda rehberde 16:00 olarak görünüyor" diye bilir. Araç bu bilgiyi tek bir tıklamayla uygulayabilir; onu ağ gözleminden elde etmek güvenilmezdir.
Çözümden sonra
Yukarıdaki 1. Adımı bir kez daha uygulayarak doğrula: bilinen kanal, mevcut program, oynatıcının şu an oynatılan saatini kontrol et. Şimdi duvar saatiyle eşleşmelidir. Eşleşirse, çözüm kalıcıdır — oynatıcın kaydırıcı URL'si aracılığıyla yenilenmeye devam edecek ve saat farkı uygulanmış olarak kalacaktır.
Hala başka bir şey yanlışsa (kaydırılmayan kanallar, eşleşmeyen kimlikler, kapsama boşlukları), bunlar ayrı sorunlardır ve EPG doğrulayıcıya yönelmek bir sonraki adımdır. Doğrulayıcı bir XMLTV dosyasını ayrıştırır ve zamanlamadan bağımsız olarak yapısal sorunları raporlar — "saatler doğru mu" sorusu yerine "dosyanın kendisi iyi biçimlendirilmiş mi" sorusunu bilmek istediğinde kullanışlıdır.
Diğer her şey için IPTV tarafında, Xtream kimlik bilgisi denetleyicisi ve M3U oynatma listesi test edici oynatma listesi ve kimlik bilgisi uçlarını kapsar. Saat dilimi kaydırıcısıyla birlikte bu dört araç, insanların genellikle forumlarda karanlıkta yaptığı sorun giderme işlemlerinin çoğunu halleder.