IPappTV

Rozwiązywanie problemów

Przewodnik pobrany, a kanały bez programu

Dlaczego plik XMLTV może mieć sto tysięcy audycji i żadna nie trafi do Twoich kanałów - i jak to naprawić po stronie listy

Objaw: nagłówek listy kanałów pokazuje „EPG: 0 audycji" albo bardzo małą liczbę przy dużej liście, a pod nazwami kanałów nie ma bieżącej audycji. Pobieranie zakończyło się bez błędu. Najkrótsza droga: przewodnik od tego samego dostawcy, co lista - wtedy identyfikatory kanałów w obu plikach są spójne.

1. Dwa pliki, które muszą do siebie pasować

Playlista M3U i przewodnik XMLTV to dwa osobne pliki. Żeby audycja trafiła pod właściwy kanał, coś musi je połączyć. Aplikacja próbuje trzech reguł, po kolei, i wystarczy jedno trafienie:

  1. Identyfikator: tvg-id kanału w playliście równa się id kanału w XMLTV. Wielkość liter nie ma znaczenia.
  2. Nazwa: nazwa kanału z playlisty równa się nazwie z przewodnika, bez rozróżniania wielkości liter.
  3. Nazwa uproszczona: z obu nazw usuwane są HD, FHD, UHD, SD, 4K, PL oraz wszystkie znaki poza literami i cyframi. „TVP 1 HD" i „tvp1" to wtedy to samo.

Gdy żadna reguła nie trafia, kanał zostaje bez programu - nawet jeśli w pliku XMLTV jego ramówka jest. Aplikacja nie zgaduje dalej po podobieństwie nazw - błędne dopasowanie (program jednej stacji pod drugą) jest gorsze niż brak.

2. Co aplikacja importuje, a co pomija

Pliki XMLTV od dużych dostawców mają tysiące kanałów, z których w Twojej liście jest kilkaset. Aplikacja zapisuje w bazie tylko audycje kanałów, które dopasowała do playlisty. Reszta pliku jest pomijana. Dzięki temu import trwa sekundy, a nie minuty, i baza nie rośnie do setek megabajtów na przystawce z 4 GB pamięci.

Skutek uboczny: liczba „EPG: N audycji" w nagłówku mówi o dopasowaniu, nie o pliku. Zero przy dużym pliku znaczy „nie dopasowano nic", a nie „plik jest pusty".

3. Zabezpieczenie przed skasowaniem historii

Przewodnik gromadzi historię z dnia na dzień (do archiwum). Przy każdym imporcie aplikacja sprząta z bazy kanały, których nie ma już w playliście. Gdyby dopasowanie zawiodło na jednym odświeżeniu - bo dostawca chwilowo zmienił identyfikatory albo podał inny plik - sprzątanie skasowałoby całą zebraną historię.

Dlatego sprzątanie jest wstrzymywane, gdy dopasowano mniej niż połowę kanałów już obecnych w bazie. Aplikacja uznaje, że tak duży ubytek to błąd dopasowania, nie realna zmiana listy. Historia zostaje; przy następnym udanym imporcie wszystko wraca do normy. Ten próg został dodany po zgłoszeniu, w którym jedno odświeżenie dopasowało 1 kanał z 300 i skasowało resztę - i ratunkiem był tylko ręczny reset przewodnika.

4. Jak sprawdzić, co nie pasuje

  1. Otwórz playlistę w edytorze tekstu i spójrz na kilka linii #EXTINF. Czy jest tvg-id? Jaką ma postać - „TVP1.pl", „tvp1", „12345"?
  2. Otwórz plik XMLTV (po rozpakowaniu .gz) i znajdź wpisy <channel id="…">. Czy identyfikatory są w tej samej konwencji? Jeśli w liście jest „TVP1.pl", a w przewodniku „tvp1.tvp.pl" - nic nie trafi.
  3. Porównaj nazwy. Jeśli identyfikatorów nie ma, dopasowanie idzie po nazwie. „TVP 1 HD" trafi w „TVP1", ale „TVP1 (backup)" już nie - nawias zostaje po usunięciu znaków jako „backup".
  4. Przewodnik od dostawcy listy. Panele generujące playlistę generują też XMLTV z tymi samymi identyfikatorami. Jeśli używasz przewodnika z innego miejsca, to najczęstsza przyczyna zerowego dopasowania.

5. Kilka źródeł przewodnika

Wpis url-tvg w nagłówku listy może zawierać kilka adresów rozdzielonych przecinkiem. Aplikacja bierze tylko pierwszy. Jeśli Twoje kanały są opisane dopiero w drugim pliku, wpisz jego adres ręcznie w polu EPG przy liście - ma pierwszeństwo przed nagłówkiem.

6. Gdy dopasowanie było, a zniknęło

  • Dostawca zmienił identyfikatory. Odśwież listę i EPG ręcznie (menu listy kanałów). Jeśli po odświeżeniu jest dobrze, to była chwilowa niespójność między plikami.
  • Program jest, ale nie ten. Dwa kanały w liście mają ten sam tvg-id albo tę samą nazwę po uproszczeniu (np. „Polsat" i „Polsat HD" to po uproszczeniu to samo - i to jest zamierzone; „TVN" i „TVN 7" nie). Popraw identyfikatory w liście u źródła.
  • Baza wygląda na uszkodzoną - Ustawienia → „Zresetuj program". Kasuje zebraną historię; buduje się od nowa po jednym dniu.

7. Gdy nie pomaga

Napisz na kontakt@ipapptv.com z dwoma fragmentami: dwiema-trzema liniami #EXTINF z playlisty i dwoma-trzema wpisami <channel> z XMLTV dla tych samych stacji. Bez adresów z loginem i hasłem. Z tego widać od razu, która reguła powinna była zadziałać.

Jeśli masz dostęp do komputera z ADB, log adb logcat -s IPappTV-EPG przy odświeżeniu przewodnika pokazuje liczbę kluczy z playlisty, liczbę kanałów w bazie i informację, czy sprzątanie zostało wstrzymane.