Pred mesecem dni sem se ukvarjal z uvozom IPTV kanalov v pravem formatu v TVHeadEnd. Izdelal sem program, ki prebere sezname kanalov iz formatov M3U in CSV, nato pa jih pretvori v konfiguracijske datoteke, ki jih kasneje naložimo v ustrezno mapo na sistemu. Glede na to, da kdaj prižgem televizijo v upanju, da bom brez daljšega iskanja našel ustrezno oddajo, sem se odločil, da samemu prebiranju sporeda na spletu in preklapljanju kanalov naredim konec. Čeprav sem že dlje časa vedel, da TVHeadEnd podpira tudi EPG, nisem vedel kako pridobiti spored, prav tako ni bilo na voljo nobenega spletnega servisa, ki bi ponujal celoten odprt spored. Po nekaj iskanja in urejanja skript mi je uspelo zapolniti še zadnjo luknjo za popolno predvajanje IPTV kanalov na OpenELEC. Dopolnil sem IPTV Playlist Editor, ki z zadnjo izdano različico omogoča izvoz XMLTV identifikacijskih nizov, kateri so namenjeni prepoznavanju vsebine znotraj XML datoteke s sporedom.
Vodič za namestitev EPG v TVHeadEnd
Če želite pridobiti spored v obliki XMLTV, ki ga lahko kasneje uvozite v TVHeadEnd, potrebujete naslednja orodja:
- Računalnik ali (virtualni) strežnik z operacijskim sistemom temelječim na Linuxu
- Urejevalnik Python in bash kode ter nekaj programerskih spretnosti
- Program IPTV Playlist Editor in seznam kanalov IPTV z ustreznimi podatki
Celoten opisan postopek sem izvajal na operacijskih sistemih Ubuntu 13.10 in Ubuntu Server 12.04 LTS. Večina stvari iz vodiča verjetno deluje tudi na operacijskem sistemu Windows, le da je tam postopek nekoliko drugačen. Za kakršnekoli nastale težave ne odgovarjam, saj postopek izvajate na lastno odgovornost, pred nadaljevanjem pa vam priporočam, da naredite varnostno kopijo datotek, ki jih potrebujete. Sam sem EPG uspešno in brez težav namestil, zato spodnji postopek smatram kot delujoč.
1. Najprej na računalnik ali strežnik potrebujemo prenesti program, ki podpira pridobivanje podatkov za spored iz različnih spletnih strani. WebGrab+ Plus nam ravno to omogoča, saj lahko iz različnih spletnih strani izdelamo datoteko v kateri se nahaja celoten spored za določeno število dni. Najprej prenesemo temeljno različico iz tukaj, nato pa še posodobitev iz tukaj. V kolikor postopek izvajate na strežniku brez grafičnega načina, potem si lahko pomagate z ukazom wget:
$ sudo apt-get install wget $ wget http://webgrabplus.com/sites/default/files/download/SW/V1.1.1/WebGrabPlusV1.1.1LINUX.rar $ wget http://webgrabplus.com/sites/default/files/download/sw/V1.1.1/upgrade/patchexe_52.zip
Ko paketa prejmemo iz spleta, sledi ustvarjanje mape imenovane wg++ in razširitev obeh paketov iz katerih skopiramo določene datoteke.
$ mkdir wg++ $ sudo apt-get install unzip unrar $ unrar WebGrabPlusV1.1.1LINUX.rar $ unzip patchexe_52.zip $ cp patchexe_52/WebGrab+Plus.exe wg++/ $ cp WebGrab+PlusV1.1.1LINUX/WebGrab++.config.xml wg++/ $ cp -r WebGrab+PlusV1.1.1LINUX/MDB/ wg++/mdb $ cp -r WebGrab+PlusV1.1.1LINUX/REX/ wg++/rex
Na podstrani programa WebGrab+ Plus si sedaj ogledamo imena spletnih strani iz katerih lahko prenašamo podatke za EPG. Ko se odločite za določenega ponudnika, se z miškinim kazalcem premaknite nad ikono, ki prikazuje prenos datoteke in počakajte, da se vam izpiše katere datoteke vsebuje. Če je datum izgradnje datotek izbranega ponudnika mlajši od avgusta 2012, potem skopirajte naslov do strani in prenesite paket ter ga razpakirajte po zgoraj opisanem postopku. V kolikor je datum starejši od avgusta 2012, potem lahko skopirate datoteko iz prejšnjega paketa, vendar z držanjem miškinega kazalca nad ikono preverite ime konfiguracijske datoteke izbrane spletne strani. Datoteko prekopiramo v prej ustvarjeno mapo wg++ (* nadomestite z imenom konfiguracijske datoteke):
$ cp WebGrab+PlusV1.1.1LINUX/*.ini wg++/
Osnova je sedaj pripravljena, namestiti pa potrebujemo še orodje Mono, ki omogoča zagon programa WebGrab+ Plus. V kolikor uporabljate Ubuntu, morate v sistem dodati še repozitorij, ki vključuje zadnjo različico projekta Mono. Postopek namestitve najdete v prejšnjem prispevku.
2. Po namestitvi orodja Mono lahko nadaljujemo z ustvarjanjem nove konfiguracijske datoteke za WebGrab+ Plus. Pripravil sem skripto, ki samodejno prebere kanale iz spletne strani in izdela konfiguracijsko datoteko. Celoten paket vseh skript prenesemo in ga razpakiramo:
$ wget https://github.com/jodlajodla/IPTV_EPG_Scripts/archive/master.zip $ unzip master.zip
Od vseh štirih skript, potrebujemo le dve, zato ju skopiramo v mapo wg++ in namestimo zahtevano knjižnico.
$ cp IPTV_EPG_Scripts-master/generate_config.py wg++/ $ cp IPTV_EPG_Scripts-master/parse.sh wg++/ $ sudo apt-get install python-beautifulsoup
Najprej uredimo skripto generate_config.py, kateri moramo podati naslov spletne strani iz kjer prenašamo podatke ter vnesti regularen izraz za pridobitev vseh imen ter identifikacijskih nizov kanalov. Nato uredimo še datoteko parse.sh, v katero moramo vnesti pravilno pot do mape, kjer se nahaja program WebGrab+ Plus. Za urejanje priporočam program nano. Ko sta datoteki uspešno urejeni ju zaporedoma zaženemo. Prva je datoteka generate_config.py, kateri lahko podamo dodatne argumente (te si lahko ogledate s stikalom -h), druga pa datoteka parse.sh, ki zažene WebGrab+ Plus. Ta se lahko izvaja dlje časa, odvisno od nastavitev, ki ste jih podali v konfiguracijsko datoteko in števila kanalov za katere prenašate spored.
$ python wg++/generate_config.py $ bash wg++/parse.sh
Po uspešno pridobljenem sporedu lahko nadaljujete. V kolikor uporabljate strežnik in je ta dostopen v vašem omrežju, vam priporočam, da nekaj prostora namenite sporedu in ga postavite v mapo, ki je dostopna preko spleta. Tako boste v omrežju lahko iz vseh naprav dostopali do sporeda preko spleta. V nasprotnem primeru, če uporabljate računalnik, pa boste datoteko na nek način morali prenesti do naprave na kateri je nameščen OpenELEC.
3. Da ne bomo po nepotrebnem izgubljali časa in vsak dan znova zaganjali omenjeni skripti, ju dodamo v sistem cron. Ta nam omogoča poganjanje ukazov ob določenem času ali intervalu, vendar ima nekoliko zapletenejšo zgradbo ukaza s katerim to dosežemo. Tabelo cron ukazov uredimo z ukazom:
$ crontab -e
V primeru, da še nikoli niste urejali datoteke izberite vam najljubši urejevalnik kode ter na konec datoteke prilepite ukaza, katera uredite po svojih željah (user obvezno zamenjajte z vašim uporabniškim imenom):
0 0 */15 * * python /home/user/wg++/generate_config.py 5 0 */2 * * bash /home/user/wg++/parse.sh >/dev/null 2>&1
Prvi ukaz se izvaja na 15 dni ob 00:00, drugi ukaz pa vsak drugi dan ob 00:05. Ta dva ukaza prilagodite glede na konfiguracijsko datoteko programa WebGrab+ Plus in vašim potrebam. S tem zaključujemo konfiguriranje računalnika ali strežnika za pridobivanje podatkov sporeda za kanale in nadaljujemo z urejanjem identifikacijskih nizov kanalov in nastavitvijo OpenELEC.
4. Na računalnik s katerim ste delali ali upravljali strežnik prenesite prej omenjene skripte. Odpakirajte jih in uredite datoteko update_playlist.py, ki zahteva enake podatke za pridobitev naslovov kanalov in identifikacijskih nizov, kot v prejšnjem koraku generate_config.py. Za posodobitev seznama kanalov morate imeti že pripravljeno datoteko M3U ali CSV v katerih se nahajajo podatki o kanalih. To nato podamo v argument in ustvarimo novo izhodno datoteko s kanali, ki ima posodobljene identifikacijske nize.
$ python update_playlist.py seznam-kanalov.m3u -o posodobljeni-kanali.m3u
Sedaj zaženemo program IPTV Playlist Editor, ki mora biti različice vsaj 1.1, ter uvozimo ravnokar ustvarjen seznam posodobljeni-kanali.m3u. Za izvoz kanalov s programom IPTV Playlist Editor in uvoz v TVHeadEnd, sledite temu vodiču. Poleg nalaganja vseh izvoženih map v mapo TVHeadEnd na OpenELEC, potrebujemo še datoteko tv_grab_sl, ki smo jo prejeli v paketu skript. To morate urediti glede na to, kje se datoteka nahaja – na spletu ali na disku. Ko to dokončate, jo je potrebno naložiti v /storage/.xbmc/addons/service.multimedia.tvheadend/bin/. Predlagam da sedaj ponovno zaženete napravo na kateri je OpenELEC, saj se zna zgoditi, da vam zaradi preobremenjenosti uvoza podatkov v TVHeadEnd vse skupaj zamrzne.
5. Čaka nas le še uvoz sporeda v TVHeadEnd. Na računalniku odpremo spletni vmesnik TVHeadEnd, ki se nahaja na naslovu http://IP-naslov:9981 in odidemo v Configuration (Konfiguracija) – Channel/EPG (Kanal/EPG) – EPG Grabber (EPG pobiralnik). V nastavitvah izberemo modul XMLTV: Slovenia, interval pobiranja pa nastavite glede na nastavitev konfiguracijske datoteke za WebGrab+ Plus. Kliknemo le še na gumb Save configuration (Shrani konfiguracijo) in ponovno zaženemo TVHeadEnd.
$ cd /usr/bin/ $ tvheadend.stop $ tvheadend.start
Sedaj bi EPG moral pričeti delovati, predlagam pa, da si ogledate vse kanale v Configuration – Channel/EPG – Channels (Kanali) in jim po možnosti ustrezno nastavite izvor EPG prejema oziroma XMLTV identifikacijski niz (to velja v primeru, da kakšen kanal nima nastavljenega niza ali pa ga želite spremeniti).
S postopkom smo uspešno zaključili. Z EPG smo vključili še eno odlično funkcijo, ki omogoča snemanje programov glede na spored ali pa poljubno nastavimo od kdaj do kdaj želimo, da TVHeadEnd snema video pretok. Upam, da vam je uspelo urediti EPG po vaših željah, verjamem pa, da je ta vodič nekoliko zahtevnejši, zato me v primeru težav lahko karkoli vprašate pod komentarji. Sedaj pa čimbolje izkoristite EPG, hkrati pa vam želim prijeten ogled IPTV kanalov!
10 Responses to IPTV in EPG na OpenELEC