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:
- Identyfikator:
tvg-idkanału w playliście równa sięidkanału w XMLTV. Wielkość liter nie ma znaczenia. - Nazwa: nazwa kanału z playlisty równa się nazwie z przewodnika, bez rozróżniania wielkości liter.
- 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
- Otwórz playlistę w edytorze tekstu i spójrz na kilka linii
#EXTINF. Czy jesttvg-id? Jaką ma postać - „TVP1.pl", „tvp1", „12345"? - 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. - 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".
- 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-idalbo 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.
