„EPG nie ładuje się” to najczęstsza skarga osób, które ustawiły IPTV na Android TV, i prawie każda przyczyna wygląda z perspektywy użytkownika identycznie: lista kanałów jest w porządku, obraz idzie, ale program jest pusty. Dobra wiadomość: tryby awarii są wąskie. Jest ich około sześciu i większość wykluczysz w parę minut.
Ten przewodnik prowadzi przez każdą z nich w kolejności, w jakiej warto je sprawdzać. Jeśli wkleisz swój URL XMLTV do walidatora EPG, zanim zaczniesz, kroki 2–4 pominiesz w całości.
Identyfikatory kanałów są porównywane bajt po bajcie: jedna wielka litera wystarczy, by kanał miał pusty program.
1. Sprawdź, czy w ogóle masz URL EPG
Pierwsze, co warto zweryfikować, to czy masz w ogóle skonfigurowane źródło programu. Niektórzy dostawcy IPTV dostarczają listę kanałów (M3U) i program (XMLTV) jako dwa osobne URL-e, a sporo użytkowników konfiguruje jeden i zakłada, że drugi jakoś sam się znalazł.
Otwórz ustawienia źródeł w odtwarzaczu i poszukaj dwóch osobnych pól. URL M3U kończy się na .m3u, .m3u8 lub zawiera type=m3u_plus. URL XMLTV zwykle kończy się na .xml, .xml.gz albo zawiera xmltv.php. Jeśli wypełnione jest tylko jedno pole, to jest twój problem. Większość dostawców w stylu Xtream udostępnia XMLTV na tej samej domenie co listę; ścieżka to zwykle /xmltv.php?username=…&password=… z tymi samymi danymi.
2. Potwierdź, że URL faktycznie zwraca XMLTV
Wklej URL do przeglądarki. Powinieneś zobaczyć XML — tekst zaczynający się od <?xml lub <tv>, pełen tagów <channel> i <programme>. Jeśli zamiast tego widzisz stronę HTML, dostawca przekierował cię na ekran logowania albo portal przechwytujący, a twój odtwarzacz dostaje tę samą odpowiedź. Rozwiązanie leży po stronie dostawcy: URL potrzebuje innych danych logowania albo świeżego tokenu.
Jeśli widzisz XML, ale jest malutki — mniej niż kilka KB — dostawca zwrócił ci pusty dokument. To też jest jego problem; większość plików XMLTV dla kilku tysięcy kanałów ma 5–50 MB.
3. Sprawdź strukturę pliku
To moment, w którym walidator EPG zarabia na siebie. Wklej URL do walidatora i spójrz na cztery liczby u góry:
- Kanały. Powinno z grubsza odpowiadać liczbie kanałów w twoim M3U. Jeśli to jedna dziesiąta, plik nie jest pełnym programem od twojego dostawcy.
- Audycje. Powinno być wiele tysięcy. Program z mniej niż 100 audycjami w sumie nie wyświetli ci niczego sensownego.
- Pokrywa najbliższe 24 h. Najważniejsza liczba. Jeśli wynosi zero, twój program jest nieaktualny — plik się parsuje, ale każdy wpis w nim jest z przeszłości. Odtwarzacz nie ma czego pokazać.
- Godzin łącznie. Zdrowe EPG pokrywa 24–168 godzin do przodu. Mniej niż 24 oznacza, że program skończy się jeszcze dziś.
4. Zajrzyj do panelu problemów
Jeśli liczby wyglądają w porządku, ale program nadal jest pusty, lista problemów w walidatorze to następne miejsce do zajrzenia. Trzy problemy są częste w realnym ruchu od dostawców:
Osierocone audycje. Audycje wskazują na identyfikatory kanałów, których nie zadeklarowano jako <channel> w tym samym pliku. Surowe odtwarzacze (większość nowoczesnych na Android TV) odrzucają takie wpisy przy imporcie — audycja nie ma kanału, do którego mogłaby się podpiąć, więc znika. Jeśli twój dostawca dostarcza paręset osieroconych wpisów, to normalne i niegroźne. Jeśli dostarcza ich dziesiątki tysięcy, to właśnie dlatego całe sekcje twojego programu są puste.
Zduplikowane kanały. Ten sam identyfikator kanału pojawia się w <channel> więcej niż raz. Większość parserów zostawia pierwszą deklarację i po cichu odrzuca resztę. Jeśli odrzucona miała inną nazwę wyświetlaną, kanał pojawia się w programie, ale z błędną etykietą.
Brak pokrycia „teraz na antenie”. Główne sprawdzenie walidatora: czy jakikolwiek kanał ma teraz audycję? Jeśli odpowiedź to zero, program wyświetli się całkowicie pusto w każdym porządnym odtwarzaczu — mimo że plik XMLTV technicznie jest poprawny. Program nieaktualny. Dostawca musi go odświeżyć.
5. Zweryfikuj dopasowanie identyfikatorów kanałów
Na tym potyka się prawie każdy. Wartość <channel id="…"> w XMLTV musi dokładnie odpowiadać tvg-id="…" w twoim M3U. Z rozróżnieniem wielkości liter, bez żadnego rozmytego dopasowania. Jeśli twój M3U ma tvg-id="bbc1", a XMLTV <channel id="BBC1">, odtwarzacz nie ma jak ich połączyć — kanał pokaże pustą komórkę programu.
Żeby to sprawdzić, otwórz M3U w edytorze tekstu i spójrz na dowolną wartość tvg-id. Potem sprawdź ten sam kanał w tabeli „Top kanały” walidatora. Identyfikatory powinny być bajt w bajt takie same. Jeśli nie są, masz trzy opcje:
- Znajdź u dostawcy plik z mapowaniem tvg-id (niektórzy go publikują).
- Ręcznie edytuj M3U, by identyfikatory zgadzały się z tymi w EPG.
- Przesiądź się na odtwarzacz, który robi rozmyte dopasowanie po nazwie wyświetlanej. Klipa to robi — ale większość nie.
6. Sprawdź strefę czasową
Specyfikacja XMLTV używa znaczników czasu w formacie YYYYMMDDHHMMSS +ZZZZ. Niektórzy dostawcy obcinają przesunięcie, zostawiając gołe znaczniki czasu bez strefy. Surowe parsery traktują je jako UTC; tolerancyjne zgadują na podstawie ustawień systemu; jedno i drugie bywa błędne, a w rezultacie program jest przesunięty o kilka godzin — audycje pojawiają się w niewłaściwym slocie czasowym albo wczorajsze programy wyświetlają się jako dzisiejsze.
Jeśli wpisy w programie wyglądają dobrze, ale są przesunięte, to prawie na pewno ta przyczyna. Naprawa jest brzydka: potrzebujesz narzędzia, które przesunie każdy znacznik czasu o N godzin. Do czasu, aż udostępnimy przesuwacz stref czasowych EPG jako narzędzie, obejściem jest zgłoszenie błędu u dostawcy z prośbą, by dodał przesunięcie do swojego wyjścia.
Kiedy nic nie działa
Jeśli przeszedłeś wszystkie sześć kroków, a program i tak się nie ładuje, awaria jest po stronie samego odtwarzacza. Większość nowoczesnych odtwarzaczy IPTV agresywnie cache'uje EPG — czasem godzinami po odświeżeniu. Wyczyść cache EPG na siłę albo odinstaluj i zainstaluj aplikację ponownie, żeby wymusić czysty import.
Klipa nie cache'uje nieaktualnego EPG: domyślnie pobiera je ponownie co sześć godzin, a w ustawieniach możesz odświeżyć ręcznie. Jeśli chcesz odtwarzacz, który już z pudełka poprawnie obsługuje wszystkie sześć trybów awarii — to jest ta oferta.