• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 21 Hlas(ů) - 2.81 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Playlist O2TV.CZ addon - verze od Pavuucek
#1
Úpravou původního addon O2TV Go od Štěpána Orta jsem připravil addon Playlist O2TV, který jsem od verze 0.0.3 upravil tak, aby běžel jako služba Kodi.

Instalace addon

Addon se zásadně instaluje na počítači, na kterém pak budete stažený a vygenerovaný playlist využívat. To je dáno koncepcí služby O2TV a principem registrace podle tzv. device id, který služba používá.

Postup instalace:
  1. Stáhnout instalační zip z konce tohoto příspěvku
  2. Umístit ho do místa, ze kterého na něj uvidí Kodi 
  3. Nezapomenout v Kodi v Nastavení > Systém > Doplňky zapnout Neznámé zdroje
  4. Spustit instalaci addon ze staženého zip souboru
Nastavení addon

Addon se nainstaluje jako služba, takže pro nastavení ho hledejte v příslušné sekci. Nastavení addon je oproti původnímu addon Stěpána Orta nebo jeho předchozím verzím rozšířené o možnost nastavení parametrů spouštění a nastavení parametrů generovaného playlistu.

Spuštění

Doplněk se spouští automaticky po startu Kodi a stahuje a generuje playlist v nastaveném čase a periodách. Předpokladem stažení a generace playlistu je, že jsou nastaveny klíčové parametry:
  • přihlašovací údaje
  • povolení automatického stahování
  • typ playlistu
Co skript generuje

Podle nastavení se generuje jeden ze tří typů playlistu:
  • IPTV Simple Client
  • Tvheadend
  • Tvheadend@ - v playlistu je místo adres streamů volání dalšího scriptu (streamer-u), který teprve spustí přehrávání příslušného streamu. Použití tohoto typu playlistu zajistí, že i při změnách adres streamů (resp. tokenů v nich), to nebude v Tvheadend identifikováno jako změna a nespustí se proces nové generace služeb a mapování k programům. 
Jaké soubory tedy skript generuje:
  • o2tv.generic.m3u8 - generický playlist, obsahující pouze jména kanálů a adresy streamů
  • o2tv.playlist.m3u8 - playlist obsahující další vložené informace podle typu playlistu a aktuálního nastavení parametrů, v případě Tvheadend@ pak obsahuje místo adres streamů volání streameru
    Pro playlist typu Tvheadend@ pak ještě: 
  • stream.sh - standardní streamer, který zajistí pro Tvheadend@ vazbu mezi o2tv.playlist.m3u8 a o2tv.generic.m3u8
  • stream.sh.sample - kopie stream.sh jako vzor, ze kterého si můžete vytvořit vlastní verzi streameru a tu použít míst generovaného. Musíte ho ale přejmenovat a nastavit pro použití vlastního streameru správně parametry
Kde generované soubory najdete:
  • všechny soubory, které addon vytváří, jsou ukládány do jeho datového adresáře
  • datový adresář addon najdete v HOME://userdata/addon_data/service.playlist.o2tv/
  • kde najdete adresář HOME vaší instalace Kodi zjistíte v Adresáře a soubory Kodi
Použití playlistu

Je to sice důležité, ale nehodlám se tomu  jak playlisty použít v tomto postu nějak zvlášť věnovat. Na to najdete odpověď v příslušných fórech. Ať už IPTV Simple Client nebo Tvheadend. Kdo neví, jak playlist použít, by měl začít tam a teprve potom se zajímat, jak si je tímto scriptem vygenerovat.

Známé chyby a omezení
  • veškeré chyby při autentizaci jsou ošetřeny generální výjimkou, které je notifikována i logována jako Neplatné přihlášení. Může zahrnovat jak špatně zadané (neplatné) user/password, tak případné problémy (a v addon nepokryté stavy) na straně autentizačního procesu O2TV. Důvodem tohoto stavu jsou nedostatečné odpovědi O2TV (rozumějte žádné odpovědi) v případě chybného procesu autentizace.
To-Do
  • v současné chvíli autentizační proces O2TV nevrací žádné chybové kódy. V případě neúspěchu prostě nepošle nic. Jakmile se to změní, bude doplněno dekódování návratových kódů a jejich prezentace v notifikaci i logu.

Ke stažení

Aktuální verze Playlist O2TV 0.0.5

Změny oproti předchozím verzi:
  • Změna způsobu autentizace vyvolaná změnami na straně O2TV - připravil @cromac, kterému tímto děkuji za vynikající práci.
  • Doplněno ošetření mimořádných stavů při autentizaci
  • Z parametrů ffmpeg ve vytvářeném  streamer.sh je odstraněno -re - credit @pavuucek 
  • S ohledem na nejasnou a měnící se situaci na straně O2TV ponechávám dispozici i verzi, která používala předchozí způsob autentizace v O2TV.
[attachment=4387]

Verze Playlist O2TV  0.0.3 s předchozím způsobem autentizace v O2TV:
[attachment=3924]

Upozornění!

Další práce na doplňku převzal @pavuucek, najete ho na Github https://github.com/Pavuucek/O2TVKodi. V tomto vlákně už podporu nehledejte, nebudou se zde už ani objevovat nové verze.
 
Citovat
#2
Periodický download

Rád bych znal názor potenciálních uživatelů.

Analyzoval jsem možnosti řešení automatické generace playlistu u addon, který poběží trvale jako služba, a dospěl k dále popsané variantě. Nemám zkušenosti s provozem O2TV a tak bych rád znal názor těch, kteří ji používají delší dobu.
  • Generace playlistu se bude spouštět v nastavený čas dne a pak opakovaně po uplynutí zvolené periody z množiny dělitelů 24 (prakticky bude mít asi význam 6, 8, 12 a 24). Typicky např. zvolený čas dne bude 07:00, perioda 6 hodin, takže se addon spustí v 7:00, 13:00, 19:00, 01:00.
  • Čas posledního generace se bude ukládat, po startu Kodi se ověří, zda od poslední generace uplynul delší čas než uvedená perioda. Pokud ano, tak se spustí okamžitě a případně se následující perioda spuštění vynechá.
Prosím o názory...
 
Citovat
#3
V první příspěvku, části popisující vytvoření kopie datového adresáře původního addon, jsme udělal nepříjemnou chybu, a to v důležité větě:

V adresáři .../userdata/addon_data/ si vytvoříte kopii adresáře plugin.video.o2tvgo  (to je datový adresář původního Štěpánova addon) a kopii přejmenujete na service.plylist.o2tv.

Místo názvu adresáře service.plylist.o2tv má být samozřejmě service.playlist.cz.

Omlouvám se a děkuji @ericek74.
 
Citovat
#4
Ahoj,
konečně jsem se k tomu dostal a výsledek je takový, že se mi playlist nevygeneruje, lépe řečeno prázdný. Krom známých chyb tam mám ještě tohle:

Kód:
T:1144   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                            - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                           Error Type: <class 'o2tvgo.ChannelIsNotBroadcastingError'>
                                           Traceback (most recent call last):
                                             File "C:\Users\ht-pc\AppData\Roaming\Kodi\addons\service.playlist.o2tv\addon.py", line 163, in <module>
                                               channelPlaylist()
                                             File "C:\Users\ht-pc\AppData\Roaming\Kodi\addons\service.playlist.o2tv\addon.py", line 152, in channelPlaylist
                                               lines += '%s\n' % (_toString(channel.url()))
                                             File "C:\Users\ht-pc\AppData\Roaming\Kodi\addons\service.playlist.o2tv\o2tvgo.py", line 64, in url
                                               raise ChannelIsNotBroadcastingError()
                                           ChannelIsNotBroadcastingError
                                           -->End of Python script error report<--
17:31:12.914 T:10044   ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://service.playlist.o2tv/
17:31:12.920 T:10044   ERROR: CGUIMediaWindow::GetDirectory(plugin://service.playlist.o2tv/) failed
17:31:22.280 T:10044   ERROR: Control 50 in window 10025 has been asked to focus, but it can't
17:31:22.694 T:3564   ERROR: C:\Users\ht-pc\AppData\Roaming\Kodi\addons\script.module.urllib3\lib\urllib3\connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
                                             InsecureRequestWarning)
17:31:25.028 T:7136   ERROR: CCurlFile::Stat - Failed: Couldn't resolve host name(6) for http://app.o2tv.czhttp//app.o2tv.cz/contentserver/contents/1160655/categories/img/sizes/38x38/canvas/38x38/1160655.png
17:31:26.076 T:7136   ERROR: CCurlFile::Stat - Failed: Couldn't resolve host name(6) for http://app.o2tv.czhttp//app.o2tv.cz/contentserver/contents/19859583/categories/img/sizes/38x38/canvas/38x38/19859583.png
17:31:26.586 T:7136   ERROR: CCurlFile::Stat - Failed: Couldn't resolve host name(6) for http://app.o2tv.czhttp//app.o2tv.cz/contentserver/contents/1160655/categories/img/sizes/38x38/canvas/38x38/1160655.png

Jedu na Windows 10 x64 pro, kodi 17.6. Přičemž původní plugin normálně funguje a přehrává.
Případně se ptej, co bys potřeboval vědět.

Vše mám nainstalované správně, název složky mi nezmátnul :-) A k tomu generování, jakmile by mi to fungovalo, mohl bych ověřit, jak dlouho token vydrží, testnul bych to.
Případně, pokud víš, že může být chyba u mne, řekni, zkusím napravit.
 
Citovat
#5
@Mrak Jo jo, už jsem dostal podobnou informaci přes SZ. Já jsem to bohužel neměl možnost to na svých pár kanálech odchytit a tady tu kontrolu jsem podcenil. Podívám se na to.
 
Citovat
#6
Ahoj Jiro, předem děkuji za tvojí práci. Když jsem ti naposled psal tak IPTV sledovani.tv nebylo funkční. Je nyní možnost výše uvedené zprovoznit právě pro tuto IP TV? Jede se podle stejného návodu? Předem díky za odpověd.

PS: O2 tv už nemohu vyzkoušet, protože jsem službu prozatím zrušil. Uvidíme, co řekne budoucnost.
 
Citovat
#7
Nová verze addon

Do prvního příspěvku tématu Playlist O2TV addon jsem umístil novou verzi 0.0.2.
  • opravena chyba nepokrytí výjimky, při které nemá kanál přiřazen program. Díky této chybě byl vygenerovaný playlist prázdný. Nemám k dispozici takovou konfiguraci služeb O2TV, kde by byly kanály bez programů, a tak jsem mohl provést pouze simulovaný test. Prosím o otestování.
  • ostatní zůstává zatím beze změn.

@terzdek Teď toho mám docela dost. Přednost má Playlist O2TV, počítám, že ještě pár dní na něm budu dělat. Pak bych se mohl pomalu vrátit k univerzálnímu Playlist, který by měl umět Zapni a Sledování. Ale upozorňuji, že je to pouze primitivní nástroj, který na rozdíl od Plalyist O2TV:
  • stahuje playlisty z webových stránek,
  • je napsán v sh shellu a tak, že bude funguje pouze na LibreELEC/OpenELEC.
Víc ze mne už nevypadne...  11
 
Citovat
#8
Jasnacka, vubec te nechci honit a uz vubec ne na tebe tlacit.:))) Mas muj obdiv :))) Kdybys potreboval testovat. jsem tu
 
Citovat
#9
ve verzi 2 stazeni playlistu funguje
Rpi3-Libreelec 9.2.0-skin:aeonnox5-silvo  ,  Kiii pro-Coreelec 9.2.1  ,  Ugoos X3 Pro dualboot ATV/CoreElec
 
Citovat
#10
@ericek Díky za zprávu. Tak to mě potěšilo, že se to takhle "naslepo" povedlo. Můžeš mi říci, kolik kanálů se vygenerovalo, a kolik přeskočilo? Je to vidět v notifikaci Kodi na obrazovce při běhu addon, případně v logu, kde hledej záznam [service.playlist.o2tv]...

Známé chyby addon

Už v mém první příspěvku jsme upozorňoval na chyby, které addon při svém běhu zapisuje do logu. Jsou celkem tři. Druhá a třetí souvisí s tím, že addon ještě není přepracován do podoby služby (service), ale už jsem z něj (tedy z původního Štěpánova addon) vypáral části, které měly za úkol interakci s Kodi GUI. První chyba souvisí se zabezpečením (https atp.). Zhruba vím, jak by se to mělo řešit (ostatně, v chybové hlášce je i užitečný odkaz), ale v dané chvíli je to pro mne časově náročné a dosavadní jednoduché pokusy zatím nepřinesly kýžený efekt. Dnes jsem si všiml, když jsem si pustil  původní addon O2TV Go, že se stejná chyba vypisuje i u něj:
Kód:
13:58:20.241 T:4656   ERROR: C:\Users\xxxxxxx\AppData\Roaming\Kodi\addons\script.module.urllib3\lib\urllib3\connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
                                             InsecureRequestWarning)
Nepokládám tedy vyřešení této chyby za kritické a odložím ho až na dobu, kdy plugin dokončím v předpokládaném rozsahu funkcí.
 
Citovat
#11
Tak plugin funguje, mám zaplacený základní balíček, vygenerovalo se mi 78 kanálů a jeden přeskočen.
Tím pádem Ti můžu ověřit ten token, jak dlouho vydrží, načetl jsem to do IPTV simple klienta a teď to budu sem tam zkoušet. :-)
Akorát jsem koukal na strukturu toho M3U a všiml si, že u tvg-id máš adresy pro loga stanic, což nic moc :-)) Ale to jsou detaily, které se daj řešit časem. Já bych na to taky mrknul, jen nemám moc času Undecided
Ale uvidím, co mi napadne, třeba něco jo. Případně mrknu i na tu chybu se zabezpečením, ale jak jsem už psal, python je pro mne španělská vesnice a i v té bych se možná orientoval líp :-))

//
Prozatím jsem na to mrknul a udělal tuto úpravu v generování m3u:
               
Kód:
lines += '#EXTINF:-1 tvg-id="%s" tvg-logo="%s", %s\n' % (name, logo, name)

S tím, že výsledek je např:
Kód:
#EXTINF:-1 tvg-id="ČT1 HD" tvg-logo="url_loga", ČT1 HD

Problém je, že u některých konkrétních stanic se mi před url_loga hodí adresa:
Kód:
http://app.o2tv.cz

A výsledek udělá toto:
Kód:
tvg-logo="http://app.o2tv.czhttp://app.o2tv.cz/cesta_loga.png

Tím pádem je to tam dvakrát a hned je špatná url samozřejmě. Ale to mi dělalo, i když jsem to zkoumal já, jak generovat, zatím jsem nezjistil, proč. Undecided
U mého playlistu to je u 13 kanálů.

//
Tak jsem na to přišel, v o2tvgo.py, řádek 168 cca, odebral jsem tam odkaz a nechal jen takhle:
                       
Kód:
logo =  _toString(item['logo'])

A už je to v m3u v pořádku. Ale některá loga nemaj moc hezkou kvalitu.
 
Citovat
#12
@Mrak Tak to moc díky. To mi pomůže. Každé takové zjištění je užitečné. Kvalita těch log je příšerná, to je pravda. Zatím jsem to ale neřešil. Já mám Tvheadend a tam používám loga od @marhycz, která jsou v super kvalitě. To, že to generuje ty zdvojené části URL adres jsme si všiml v logu, co jsi včera měl ve svém příspěvku. Je to tohle, co?
Kód:
17:31:25.028 T:7136   ERROR: CCurlFile::Stat - Failed: Couldn't resolve host name(6) for http://app.o2tv.czhttp//app.o2tv.cz/contentserver/contents/1160655/categories/img/sizes/38x38/canvas/38x38/1160655.png
Chtěl jsem se na to dneska podívat, tak už nemusím.

Jinak, co se týče toho obsahu řádky #EXTINF. Počítám, že plugin bude generovat tři playlisty. Lišit se budou právě obsahem #EXTINF řádku
  1. Generic - tam bude pouze název kanálu
  2. Simple Client - s parametry pro IPTV Simple Client
  3. Tvheadnd - s parametry pro Tvheadend
Obsah řádku #EXTINF bude volitelný v nastavení. Jedna z voleb by právě byl zdroj pro loga. Buď se použije odkaz z O2 nebo odkaz na zdroj log od @marhycz. Taky ještě plánuji v nastavení výběr ze dvou kvalit streamů.
 
Citovat
#13
Jo, loga od Marhycz jsou pěkná, přemýšlím, že je stáhnu taky. :-)
Jo jo, přesně tohle mi to dělalo. Já upravil teda ten script, ale už jsem nekoumal, jestli to nemá vliv na něco jiného třeba. Sice by nemělo, týká se to jen těch log, ale co by kdyby.. Ale v logu není nic navíc, krom chyb EPG, že se mi nenačetl, což samozřejmě dává smysl, když nemám epg generované pro O2 zatím vůbec, ještě jsem se nepustil do grabování.

Jo, kvalita streamu se může hodit na mobilní zařízení, ačkoliv já to beztak mám jen na HTPC u TV, takže nejvyšší=nejlepší. :-)

Určitě budu ještě zkoumat, co všechno tam zle či nelze, ale to nejdřív musím pochopit celej ten addon pořádně.
 
Citovat
#14
Plugin funguje, vygenerováno 111 programů. Dokonalá práce, díky mistře :-)
 
Citovat
#15
Tak Ti koukám po té chybě s ověřováním a jestli jsem dobře pochopil, Kodi používá spíš starší verzi pythonu a tím pádem se mi to nepodařilo vyřešit. Dle stránek, co ta chyba radí, to nešlo. Ale našel jsem takovej hezkej příkaz, jak to alespoň vypnout. :-))
Do addon.py stačilo přidat:

Kód:
import urllib3
urllib3.disable_warnings()

13

A po asi třistapadesátém generování playlistu se většina ikon zaktualizovala na docela hezké a přijatelné, jen sem tam je to mizérie.
 
Citovat
#16
@Mrak Díky. To použiji. Zatím, jako workaround. Addon-u plánuji věnovat se jeden den o víkendu. Tedy pokud bude ošklivo. Kdybys měl ještě nějaké nápady, sem s nimi.

BTW To zaktualizování ikon proběhlo potom, cos změnil ten kód "logo =  _toString(item['logo'])", že jo? Ty starý obrázky byly v cache a tak to chvíli trvá, než se začnou zobrazovat ty nový.
 
Citovat
#17
tokeny funkcni 24h. a jinak jestli si pamatuju tak 111kanalu nacteno/1 preskoceno
Rpi3-Libreelec 9.2.0-skin:aeonnox5-silvo  ,  Kiii pro-Coreelec 9.2.1  ,  Ugoos X3 Pro dualboot ATV/CoreElec
 
Citovat
#18
@JiRo: Jo jo, po změně a nějakém x-tém nahrání se ikony aktualizovaly. A fakt až na pár to docela ujde. 
Co mi napadne, dám vědět. Token zatím nevím, dnes jsem doma dřív, než včera. Uvidím večer, ale jak psal @ericek74, tomu bych taky určo věřil, že mají na každý den nový token.
Dneska asi zkusím zpracovat konfig pro webgrab právě pro kanály O2 (alespoň pro můj základní balíček), přeci jen nemají jednoduché id kanálů, aby se dalo použít skoro všeobecnej konfig. A určo pak dám k dispozici. A budu vycházet z konfigu a ini od uživatele @xsavo zde: http://www.xbmc-kodi.cz/prispevek-epg-gr...odi?page=5
 
Citovat
#19
@Mrak Můžu ti poslat i můj config. Není jen pro O2TV, je to taková směska, používám ji i pro jiné systémy, takže je tam plno duplicit, ale mám tam toho docela dost. Pošlu ti do SZ odkaz na můj google drive a stáhni si to tam.

@ericek74 Díky za info. A kvůli tomu jednomu kanálu ta verze 0.0.1 padala. Tedy ona padala kvůli mé blbosti, takže je vlastně dobře, že se na to přišlo hned takhle brzo. Přemýšlím přidat do logu výpis přeskočených kanálů, aby se vědělo, které to byly.
 
Citovat
#20
Potvrzuji životnost playlistu 24 hod.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)