EPG generavimas xmltv – Webgrab+Plus

EPG lietuva generavimas, lietuvisku kanalu tv24.lt

Skaitymo laikas: 4 minutės

Tekstas atnaujintas: 2020-05-01

Kelios dienos, kaip tenka susidurti su programų gido generavimu, tad galvoju sudėliosiu viską į vieną tekstą.

Šie gidai reikalingi norint rodyti programų gidą, žiūrint IPTV.

Aprašysiu, kaip vyksta EPG generavimas bei, kaip įkelti gidą į Tvheadend.

EPG Tvheadend’e:

Epg generavimas bei pajungimas prie tvheadend

Prenumeruok 🤟

Gauk į paštą žinutę apie naujus įrašus 👍

Webgrab+Plus įrašymas

Asmeniškai naudoju docker konteinerį:

docker create \
  --name=webgrabplus \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/Vilnius \
  -v /kelias_iki_config_failų/:/config \
  -v /kelias_iki_epg_failo_/nėra_būtina/:/data \
  --restart unless-stopped \
  linuxserver/webgrabplus

Hub konteinerio adresas.

Naudojant konteinerį nekils bėdų dėl mono versijos.

Instrukcija, kaip įrašyti į sistemą nenaudojant docker.

Reikia turėti omeny jog mono versija gali būti senesnė sistemoje nei reikia, jeigu senesnė versija, gali nepaimti EPG iš puslapių.

Kaip atsinaujinti mono galima rasti jų puslapyje.

Konfigūravimas

Įrašius į sistemą standartiškai, jog Wg++ startuotų reikia leisti terminale:

sudo ~/.wg++/run.sh

Startuojant, nepamirštame Sudo.

Vietoje ~ galima nurodyti pilną kelią iki .sh failo.

Norint jog startuotų naudojant docker:

 docker exec -it webgrabplus /bin/bash 
s6-setuidgid abc /bin/bash /defaults/update.sh

Prieš paleidimą reiktų pakoreguoti WebGrab++.config.xml failą.

Tame faile reikia nurodyti iš kokio puslapio bus paimtas EPG.

Atsidarius failą pas mane atrodo taip:

<?xml version="1.0"?>
<settings>
   
  <filename>/data/guide.xml</filename>
  <mode></mode>
  <postprocess grab="y" run="n">mdb</postprocess>
  <user-agent>Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0</user-agent>
  <logging>on</logging>
  <retry time-out="5">4</retry>
  <timespan>1</timespan>
  <update>i</update>

<channel update="i" site="tv24.lt" site_id="tv3-2" xmltv_id="TV3">TV3</channel>

</settings>

Mėginsim paimti EPG iš tv24.lt – TV3 kanalo gidą.

Norint pridėti daugiau kanalų reikia atsidaryti tv24.lt xml failą kuris randasi:

Site.ini > Lithuania > tv24.lt.channels.xml

Ten yra surašyti kokius kanalus galima paimti.

Kaip pvz LNK:

<channel update="i" site="tv24.lt" site_id="lnk" xmltv_id="LNK">LNK</channel>

Tai šią eilutę perkeliame į pagrindinį failą prie TV3.

Kanalus dėti ten kur yra jiems skirta vieta, nemėtyti bet kur, nes dėl sintaksės vėliau nesupras ko prašoma.

Startuojant Wg++ bus prabėgama ir patikrinta ar visi reikiami ini failai yra aplankale, bei bus pradėta generuoti xmltv failas.

Kurio vietą nurodome:

<filename>/data/guide.xml</filename>

Leidžiant Wg++, terminale turime matyti, kažką panašaus, jeigu mėtomos klaidos tai dėl mono versijos arba blogos sintaksės pagrindiniame faile.

             WebGrab+Plus/w MDB & REX Postprocess -- version V2.1.9

                                Jan van Straaten
                             Francis De Paemeleere

            thanks to Paul Weterings and all the contributing users
--------------------------------------------------------------------------------

Job started at 05/03/2020 16:33:20

found: /config/siteini.pack/Lithuania/tv24.lt.ini -- Revision 07

processing /data/temp-guide.xml ...

Found existing channel (xmltv_id=TV3) in the config file
.................................................................................................................................................


      i=index  .=same  c=change  g=gab  r=replace  n=new

(  1/1 ) TV24.LT -- chan. (xmltv_id=TV3) -- mode Incremental
ii..........................................................................

   Summary for update of       TV3
     no changes, no update necessary !
     unchanged shows inspected 74
     total after update        74

Baigus Wg++ darbą bus sugeneruotas guide.xml failas kurį galima naudoti Tvheadend’e.

Tvheadend nustatymai norint paimti xml failą

Wg++ puslapyje yra instrukcija.

Bet trumpai sakant, reikia patalpinti vieną skriptą ir pakoreaguoti.

Talpinam failą /usr/bin kataloge:

sudo wget -O /usr/bin/tv_grab_wg++ http://www.webgrabplus.com/sites/default/files/tv_grab_wg.txt

Parsiuntus failą reikia pakoreguoti iš kur bus paimtas EPG failas.

sudo nano /usr/bin/tv_grab_wg++ 

Atsidarius failą galime rasti tokią eilutę: xmltv_file_location=~/.wg++/guide.xml

Reiktų pilnai nurodyti vietą kur guli guide.xml failas.

sudo chmod +x /usr/bin/tv_grab_wg++

Tikriname ar failas tinkamoje vietoje ir startuoja:

/usr/bin/tv_grab_wg++

Turime gauti tekstą apie paimtą failą.

Toliau reikia perkrauti Tvheadend.

sudo systemctl restart tvheadend

Startavus Tvheadend reikia atsidaryti:

EPG generavimas xmltv - Webgrab+Plus 1

Svarbiausiai uždėti enable varrną.

Spaudžiame Trigger jog paimtų naujus failus:

EPG generavimas xmltv - Webgrab+Plus 2

Turėtų paimti gidą ir visus duomenis permesti į:

EPG generavimas xmltv - Webgrab+Plus 3

Toliau reikia priskirti EPG prie tam tikro kanalo, daug būdų, kaip tai padaryti bet lengviausiai ir paprasčiausiai atsidaryti Channels.

EPG generavimas xmltv - Webgrab+Plus 4

Galima ir nurodyti pagal TV ID, kuris aprašomas Wg++ faile, taip automatiškai Tvheadend žinos kam priskirti tam tikrą programų gidą.

EPG generavimo papildomi nustatymai

Pagrindiniame Wg++ faile yra papildomi nustatymai kuriuos galima keisti.

Visos sintaksės aprašytos jų dokumentacijoje.

Tik neseniai sužinojau dėl REX, kuris dar sutvarko turimą guide.xml failą.

Jog REX suveiktų, reikia nustatyti taip:

<postprocess grab="yes">rex</postprocess> 

Bei nurodyti kur bus pirminis guide.xml

<filename>/data/temp-guide.xml</filename>

Tada pagrindiniame Wg++ aplankale turi būti rex aplankalas o jame rex.config.xml.

Kurį radau github’e.

O kam tas rex?

TV gidas tada sugebės rodyti serialų sezonus ir epizodus:

Kodi epg generavimas naudojant rex

Rex faile apačioje reikia sutvarkyti sintaksę:

  <title>'title'{ ('episode')}{ 'subtitle'}</title>
  <desc>{Žanras: 'category(, )'.\n}{Metai: 'productiondate'\n}'description'{\nRežisierius: 'director(, )'}{\nVaidina: 'actor(, )'}</desc>
  <sub-title></sub-title>
  <credits></credits>
  <episode-num></episode-num>
  <date></date>
  <category></category>
  <review></review>
  <rating></rating>

Bei nurodyti galutinį guide.xml failą kuris bus naudojamas.

  <filename>/data/guide.xml</filename>

Sintaksė veikia su tv24.lt.

Už rex sintaksę ačiū Discord IPTV bendruomenės nariui @slaptasBotas.


Norint jog Kodi matytų atnaujintą EPG kanalui, reikia spausti tuos trigger, tada automatiškai perduodamas gidas į Kodi.


Jeigu generuoja EPG su blogu laiku, dažniausiai +-2val, tai dėl blogo ini failo.

Atsidarius ini failą susirandame:

site {url=tv24.lt|timezone=Europe/Vilnius|maxdays=8|cultureinfo=lt-LT|charset=utf-8|titlematchfactor=90|episodesystem=onscreen|ratingsystem=IMDb}

Jeigu timezone nurodytas lygiai toks pats, tai reikia pakeisti į:

timezone=UTC

Tada generuojame vėl EPG, jog būtų sutvarkytas laikas.


Automatinis generavimas galimas naudojant crontab.

sudo crontab -e

Atsidarius failui, reikia apačioje pridėti tokią eilutę:

15 3 * * * /kelias-iki-failo/.wg++/run.sh

Išsaugome ir turėtų startuoti naktį 3val. 15min. Geriau kankinkime serverius naktį ????


Naudojant docker, crontab laiką koreguojame wg-cron faile.


Jeigu reikiamo kanalo nėra xml faile, tai darome taip.

Tvarkome, kai kanalas keičia pavadinimą.

<channel update="i" site="tv24.lt" site_id="viasat-sport-baltic" xmltv_id="Viasat Sport Baltic">Viasat Sport Baltic</channel>

Atsidarome tv24.lt ir susirandame kanalą kurio reikia.

Turime tada nuorodą:

https://www.tv24.lt/kanalas/tv3-sport-2

Keičiame viską taip:

<channel update="i" site="tv24.lt" site_id="tv3-sport-2" xmltv_id="TV3 Sport">TV3 Sport</channel>

Ar patiko įrašas?

Spausk jog įvertinti.

Vidutinis įvertinimas / 5. Įvertino:

Įvertinimų nėra, būk pirmas!

Jeigu įrašas patiko...

Pasidalink!

Jeigu įrašas nepatiko.

Padėk patobulinti įrašą!

Būtų malonu sužinoti kodėl?


Jeigu patiko įrašas, siūlau prenumeruoti, kaip tai padaryti aprašiau čia (el. paštu, telegram ir discord kanalai, facebook, twitter).

Gal patiks ir kiti įrašai