• 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:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Tvheadend a placená IPTV - idea řešení
#61
@mmmm Téma jsem založil v době, kdy jsem měl sílu a chuť to vyřešit. Dostal jsme se poměrně daleko, vytvořil jsme plugin, který používám, ale ve stavu, že bych ho mohl nabídnout jako hotové řešení k instalaci ostatním, stále ještě není. Já na to bohužel teď sílu ani kapacitu nemám. Tak se omlouvám, jestli tě to téma navnadilo. Snad se k tomu ještě v dohledné době vrátím, ale nic neslibuji.
 
Citovat
#62
@mmmm: taktéž nemám finální řešení, ale vlastně jsem se ani o nic takového nesnažil.. mé finální řešení je, že "klientský" tvheadend (překlad=ten v obýváku) si vše stahuje a aktualizuje z "master" tvheadendu (překlad=ten v serverovně ve sklepě), ale ten "master" nastavuji a vše do něj připojuji ručně (DVB karty,TV provideři,"jiné" playlisty z netu :) )

-je to takové řešení napůl, vše z toho už tady bylo napsáno :)
 
Citovat
#63
dik borci.

napadlo ma ->

php skript, ktorym nebudem autorizovat http request na playlist a vracat obsah, ale ktory bude parametrizovany podla nazvov stanic a budem vracat len redirect na konkretnu URL streamu

pseudo:

GET /station.php?id=CT1

php:
1. stiahnem cely zoznam pomocou mojich credentials
2. iterujem, hladam v m3u CT1
3. vratim redirect na skutocnu URL

takto by som nasekal staticke URL len 1x a refresh tokenu by prebehol on demand

je mozne ze rozmyslam blbo ale snad by to mohlo fungovat, co vy na to?

M
 
Citovat
#64
mmmm: dle mého názoru není potřeba do toho tahat PHP, používám pipe:// na shell skript, který dělá to samé... wget a sed, znouze tail či awk :-)
 
Citovat
#65
@mobilemanic Moje řešení je podobné. Stáhnu playlist (curl) a pak ho podle nastaveného scénáře zedituji (sed) - vyházím nechtěné programy, přejmenuji, setřídím a pak složím dohromady se všemi potřebnými parametry (pipe, atd.). Nakonec celý playlist předhodím přes Automatic Network do Tvheadend. Funguje to celé v sh, nejsem programátor ani linuxák, takže je to trochu dřevní. Pojal jsme to ale poněkud velkoryseji, cílem bylo v jednom pluginu zvládnout i více OTT, takže momentálně to umí Sledovani a Zapni. Nevyřešeným problém je EPG, kvůli kterému se bohužel po nahrání nového playlistu musí restartovat PVR na všech klientech (což v současných verzích Kodi nefunguje), případně restartovat všechny klienty, což je s ohledem na univerzálnost řešení problém.
 
Citovat
#66
(09.4.2018, 21:48)mmmm Napsal(a): dik borci.

napadlo ma ->

php skript, ktorym nebudem autorizovat http request na playlist a vracat obsah, ale ktory bude parametrizovany podla nazvov stanic a budem vracat len redirect na konkretnu URL streamu

pseudo:

GET /station.php?id=CT1

php:
1. stiahnem cely zoznam pomocou mojich credentials
2. iterujem, hladam v m3u CT1
3. vratim redirect na skutocnu URL

takto by som nasekal staticke URL len 1x a refresh tokenu by prebehol on demand

je mozne ze rozmyslam blbo ale snad by to mohlo fungovat, co vy na to?

M
přesně takto to funguje :) pouzivam u TV kde se meni token. Muzes nastavit bud pres cron na pravidelny interval aby se ti aktualizoval link a nebo klidne primo do kanalu takze vzdy kdyz naladis kanal tak probehne vygenerovani linku.
 
Citovat
#67
@francis & @mmmm Jen jestli tomu rozumím (jak už jsme napsal, nejsem programátor). Odkazy url v muxu tedy nejdou přímo na url + token od providera, ale volá se tam script, který to vyhledá někde v bokem odloženém seznamu, ve kterém se tokeny aktualizují asynchronně. Při změně tokenu se tedy parametry v muxu nezmění. To tedy znamená, že se nemění služba a není tedy třeba spouštět při změně tokenu její mapování k programu? Pochopil jsme to správně? Pokud to je skutečně tak, tak by to vyřešilo problémy s aktualizací EPG po změně obsahu playlistu. Žádné by tím pádem totiž nebyly.
 
Citovat
#68
presne tak. příklad mas u sebe soubor http://loclalhost/nova_cinema.php a vse se meni v tomto souboru takze pri aktualizaci zustava parametr muxu stejny tudiz "neni" zadna zmena. Az bys editoval nova_cinema.php tak tady bys videl ze pokazde je tam jina url. Neresis vypadek EPG.
 
Citovat
#69
JiRo: no, mě se URL MUXů nemění a problém s EPG nemám.

Já mám MUXy třeba takto:
Kód:
pipe:///home/hts/ivysilani.sh 1
viz http://www.xbmc-kodi.cz/prispevek-tvhead...4#pid38224
Pro každého poskytovatele je pak jeden SH skript...

Tzn. adresa MUXu se nikdy nezmění, ten SH skript mi na STDOUT rovnou posílá TS stream, který jsem mu řekl v parametru (tady =1), tzn. tokeny a tohle vše se řeší uvnitř skriptu. Když se MUX nikdy nemění, problém s EPG nemám.

Je tam ale velké ALE: jak jsem psal, zadávám ty MUXy ručně, takže ještě nad tohle by se musel udělat jeden skript pro "Network" (něco jako máš ty teď), který by načítal seznam kanálů a z nich ten playlist sestavoval, tedy např. v případě toho iVysílání by to byl SH skript, který by musel automatizovaně sestavovat něco jako toto:
Kód:
#EXTM3U
#EXTINF:-1,CT1
pipe:///home/hts/ivysilani.sh 1
#EXTINF:-1,CT2
pipe:///home/hts/ivysilani.sh 2
#EXTINF:-1,CT24
pipe:///home/hts/ivysilani.sh 3
#EXTINF:-1,CT Sport
pipe:///home/hts/ivysilani.sh 4
#EXTINF:-1,CT Decko
pipe:///home/hts/ivysilani.sh 5
#EXTINF:-1,CT Art
pipe:///home/hts/ivysilani.sh 6

Pak by to ale bylo úplně dokonalé, díky tomu by to fungovalo už plně automaticky, Network si SH skriptem načte ze zdroje kanály a sestaví odkazy na SH skripty jednotlivých kanálů. Kanál pak bude mít stálý SH skript s parametry určující co přesně od providera pustit. A to důležité, když přibude nový kanál, nebo se změní něco důležité (číslo/kód kanálu, bitrate, a podobně) bude to hrát dál, nové kanály samy přibudou, zrušené kanály zmizí.

Takový vzdálený sen :-) Pak by se do toho jako pluginy daly přidávat skripty pro další a další OTT IPTV providery.

Offtopic: Úplně stejným způsobem by se to dalo udělat i jako doplněk pro KODI, který by dělal to samé. Jen to je asi trochu pracnější, protože na doplňky je "dobré" umět Python :)
 
Citovat
#70
@francis Díky za vysvětlení. No, to je facka. Trápil jsem se s tím jak to vyřešit dlouho a přes les neviděl stromy. Je pravda, že se tady o tom už nějakou dobu diskutovalo, tedy zadávat do url muxu odkaz na scripty, ale mě to nějak nedošlo, že to může mít i tuto výhodu. Tvrdošíjně jsem trval na podle mne jediném správném řešení, Mux v Automatic Network s odkazem na periodicky generovaný playlist s měnícími se tokeny. No, to si za rámeček tedy nedám. 10 10 10
 
Citovat
#71
OT, chlapi obdivuji Vaši šikovnost a hlavně píli s jakou se do těchto věcí pouštíte (hoďte mi tip kde na to berete čas?). Nemít doma EPG v KODI TV řešeno přes spící STB boxy (automaticky si programovou nabídku pro všechny kanály natahují  každé ráno pomocí pluginu EPG Refresh) asi by měla manželka definitivně po přehledu co v té "bedně" dávají či dávat budou . Opravdu jsem občas rád, že tu ty mašiny mám a že se mi o TV "export" via KODI dobře starají, lehce se nechá zapomenout, že vůbec existují  ... A to mívám občas kacířské myšlenky se jich zbavit  1
S905X 2/3 → CE 20 \ RPi4 → LE 19 \ HTPCLE 18 \ NAS Synology DS212J/DS220+ \ Vero 4K+ → OSMC 19
 
Citovat
#72
francis: generování v těchto php je potřeba mít webserver?Mohl bys pro nás "natvrdlé" dát návod??? 1
 
Citovat
#73
@mobilemanic Jasně, pokud se nemění obsah položky URL v Mux nebo "druhý řádek" v playlist, tak pak je to jasné.

A ano, udělat to dvoustupňové, to by šlo. To mě napadlo hned také. Nějak mě ta představa, že by si uživatel musel vyplňovat Muxy pro každý program, nenadchla. Takže playlist tak jako ho navrhuješ, to by bylo řešení určitě správné a vygenerovat to celé automaticky by zas takový problém být nemusel.

K pluginu. Můj plugin je v podstatě obálka pro takové řešení a asi by nebyl problém ho pro nové řešení upravit. Už dnes je koncipován s dílčími skripty pro každého providera, takže je na to vlastně téměř připravený. Pythonu bych se nebál. Ne proto, že ho umím, to ani náhodou. Z objektového programování mám osypky. Ale já jsem si z pár jiných addon vytáhl pythonovskou obálku, která mi umožnila vyrobit plugin, který po startu Kodi nasplánuje spuštění sh scriptu. A dokážu do něj, přes nastavení pluginu, dostat parametry (viz screenshoty). Znamená to sice, že plugin může běžet jen na Linuxu, ale my ho jinde spouštět nepotřebujeme a kvůli kompatibilitě s LibreELEC je napsaný v primitivním sh shellu.
[attachment=3697] [attachment=3698]
Pokud by měl někdo zájem, můžeme spojit síly a řešení dát dohromady společně. Já si teď vyzkouším upravit stávající plugin v duchu uvedených návrhů a pokud mi to bude fungovat, vyházím zbytečné smetí kolem EPG a restartů klientů a pak by bylo možné to zveřejnit.
 
Citovat
#74
otava5: nemusíš mít webserver, můžeš to psát i v PHP a spouštět to zase přes pipe:// (tj. pipe://php /var/www/html/skript.php). Webserver je jenom o tom, že to PHP spouští pokaždé, když v prohlížeči zadáš HTTP(s) požadavek (zjednodušeně řečeno). Nic ale nebrání to PHP pouštět přímo.

Já osobně to raději píšu v bashi, protože nerad přidávám komponenty navíc (v tomto případě PHP) :)

JiRo: kdyžtak pomůžu, můžu třeba založit GitHub účet :-D
 
Citovat
#75
@mobilemanic Ale bash není v LibreELEC a měli bychom počítat s tím, že by to mělo běžet i v něm. Já na svém GitHubu ten addon mám, ale asi by bylo lepší, vytvořit zcela nový účet. Já asi vzhledem ke své nemoci nejsem dost spolehlivý a perspektivní.
 
Citovat
#76
@mobilemanic
vše jde udělat autmaticky. Muj system je sice trosku složitější (stazeni playlistu>uprava playlistu>precteni playlistu podle paramateru>vytvoreni noveho nebo prepsani stavajiciho souboru.php) ale jde to aj jednodušeji pomoci REQUEST takze neni nutno sestavovat script pro kazdy kanal.
@otava5
navod pro natvrdlé (stazeni playlistu>uprava playlistu>precteni playlistu podle paramateru>vytvoreni noveho nebo prepsani stavajiciho souboru.php) jak napsat ten script je uz jina. na to musis prijt sam
 
Citovat
#77
Začal jsme upravovat koncepci mého řešení. Po stažení playlistu od providera a jeho úpravě, která zůstala prakticky dle původního konceptu, se volitelně automaticky (viz dále ad.1) generuje druhý playlist, který místo odkazů na streamy a jejich případnou konverzi ffmpeg obsahuje volání jednoduchého parseru s parametrem jména programu, který z prvního playlistu podle zadaného jména programu ty konkrétní streamy pro vygenerované mux-y vytahuje. Tedy žádné zvláštní scripty pro každý kanál. 1

Předpodkládám zachovat mé dvě tradiční varianty generace, které si uživatel zvolí v parametrech addon pro daného providera:
  1. převezme se celý playlist od providera - tzn. žádné dodatečné editace ani vyplňování nějakých parametrů, např. čísel programů, atd. Vše proběhne automaticky, programy budou číslovány sekvenčně tak, jak jsou řazeny v playlistu, počínaje číslem uvedených v parametrech sítě, atd.
  2. uživatel bude moci jednorázovou editací druhého playlistu doplnit do řádku $EXTINF parametry, viz http://www.xbmc-kodi.cz/prispevek-tvheadend-a-iptv?pid=31003#pid31003, které se pak přenesou do parametrů jednotlivých mux-ů.
Po prvních krocích úprav jsem otestoval popsaný základní princip, funguje to tak, jak výše kolegové popisují. 6 Díky jim za inspiraci. Vzhledem k mým schopnostem a limitům je vše stále v sh shellu. Addon počítá s instalací v LE/OE.

Oproti mému původnímu návrhu to  asi v dané chvíli na nějakou kooperaci nevidím - nestíhám totiž. Rád bych addon dokončil a zveřejnil tak, aby umožňoval využití pro providery, které mám vyřešené. Případně jsem připraven doplnit providery další, pokud mi někdo dodá nějaký playlist downloader daného providera schopný běžet na LE/OE.
 
Citovat
#78
JiRo: mohl by ses podělit o příklad toho sh shellu?
 
Citovat
#79
@otava5 Zatím jsme to zkoušel jen velmi zhruba, tedy vyhledat podle jména programu z jednoho playlist-u v druhém playlistu řádek s odkazem na stream. Ještě to vyhledávání musím doladit, aby to fungovalo 100%. Pak pošlu. Nemám s tím zkušenosti, tak občas musím řešit banality, které mají geekové v malíčku. V tomto ohledu, tedy používání grep, awk, sed, atd., jsem stále ještě lama. 1
 
Citovat
#80
JiRo: to vyhledání by mě zajímalo stačilo by mi kdyby šlo vyhledat dle výrazu řádek ve zdrojovém a zkopírovat do čísla řádku v cílovém....
Zatím to mám udělané tak že zkopíruju číslo řádku ve zdrojovém do čísla řádku v cílovém playlistu přes "sed"....
Ale když se mění/přidávají stanice ve zdrojovém playlistu dokážeš si představit co mi to udělá 1
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)