09.9.2022, 18:16
Scripty pro Tvheadend a pár nápadů...
Už poměrně dlouho se věnují problematice příjmu IPTV a OTT v Tvheadend. Z celé řady důvodů používám zásadně řešení postavení na sh scriptech, pomocí kterých získávám data a adresy, které umožňují tyto služby využívat uvedeným způsobem. Dá se říci, že až na pár výjimek jsem dokázal do Tvheadend dostat téměř všechny typy služeb, které jsou na našem (a částečně i slovenském) trhu k dispozici. Sám v současné chvíli využívám tři z nich. Má řešení jsou opřená o existenci několika scriptů, které řeší vždy jen jednu či dvě konkrétní funkce. Bez ohledu na typ služby tak mám pro každou z nich více či méně stabilní sadu, obsahující:
Nastavení cesty k aktuálnímu adresáři
Tohle je triviální, ale funkční. Nechtěl jsem používat ukládání cesty a přepnutí do daného adresáře, vše řeším explicitními odkazy na adresář, odkud je daný script spuštěn. Adresář ukládám vždy do proměnné path jednoduchou kombinací dvou příkazů:
Nastavení proměnných s parametry nebo "živými" daty
Používám k tomu přiřazení do proměnných, které vždy na začátku scriptu, před jejich prvním použitím, načtu. Může to vypadat například takto:
Path je cesta z předchozího příkladu. Config.ini používám pro soubor s parametry, který pak edituji např. pomocí NotePad++, které mi text pěkně, čitelně a barevně formátuje:
Access.ini používám pro uložení živých dat:
Uložení proměnných do souboru
Poslední ukázkou je pak to, jak si proměnné do souborů ukládám. Tady už jednoduchá metoda neexistuje, abych si to maximálně zjednodušil, používám krátký kus tohoto kódu s for, do kterého napíší seznam proměnných, jejichž obsah chci do souboru uložit (zde uložení do access.ini):
Už poměrně dlouho se věnují problematice příjmu IPTV a OTT v Tvheadend. Z celé řady důvodů používám zásadně řešení postavení na sh scriptech, pomocí kterých získávám data a adresy, které umožňují tyto služby využívat uvedeným způsobem. Dá se říci, že až na pár výjimek jsem dokázal do Tvheadend dostat téměř všechny typy služeb, které jsou na našem (a částečně i slovenském) trhu k dispozici. Sám v současné chvíli využívám tři z nich. Má řešení jsou opřená o existenci několika scriptů, které řeší vždy jen jednu či dvě konkrétní funkce. Bez ohledu na typ služby tak mám pro každou z nich více či méně stabilní sadu, obsahující:
- login.sh
- register.sh
- playlist.sh
- epg.sh
- streamer.sh
- refresh.sh
Nastavení cesty k aktuálnímu adresáři
Tohle je triviální, ale funkční. Nechtěl jsem používat ukládání cesty a přepnutí do daného adresáře, vše řeším explicitními odkazy na adresář, odkud je daný script spuštěn. Adresář ukládám vždy do proměnné path jednoduchou kombinací dvou příkazů:
Kód:
path=$(dirname $(realpath $0))/
Nastavení proměnných s parametry nebo "živými" daty
Používám k tomu přiřazení do proměnných, které vždy na začátku scriptu, před jejich prvním použitím, načtu. Může to vypadat například takto:
Kód:
. ${path}config.ini
. ${path}access.ini
Path je cesta z předchozího příkladu. Config.ini používám pro soubor s parametry, který pak edituji např. pomocí NotePad++, které mi text pěkně, čitelně a barevně formátuje:
Kód:
# Username and password
username=UZIVATEL
password=HESLO
# Type and name of registered device
device_type=TYP_ZARIZENI
device_name=NAZEV_ZARIZENI
# Service provider identification (in Kodi)
provider="TV GO"
# Country (country=cz for T-Mobile GO, country=sk for Magio GO)
country=cz
# Local Kodi notification
notify=1
channel=1
# Parameters of implementation
# - prof=p0 ... max 1280x720, prof=p5 ... 1920x1080
prof=p5
# - manifest parsing number line - reverse count from end of manifest (last =1, penultimate=2, ...)
parse=1
# - ffmpeg path
ffmpeg=/storage/.kodi/addons/tools.ffmpeg-tools/bin/
# Debugging and logging
logger=1
error=1
debug=1
Access.ini používám pro uložení živých dat:
Kód:
logged=2022-08-25_19:05:12
refreshed=2022-09-09_13:58:30
access_token=sImVuZFVzZXJJZCI6ODg2NTkyLCJjbGllbnRJZCI6MTI2NzM0NSwicGFja2FnZXMiOls3NywxNDYsMTQ3LDEwMDAwMDFdLCJhY2NvdW50SWQiOjEzMTc0MjUsImtpZCI6NDUxMzQsInN1IjpmYWxzZSwicGh2IjoiNDk2MmFhZDMwMTkyZDA4YzQ2NjdiOWM5OTZhM2M5MmJiNzliOTU4YzI2NDlkZDdjM2QxNzNjOGZlMjg0MTliZiIsInBsYXRmb3JtcyI6WyJHTyJdfQ.kHSlDUKVPGWqTosfgtVe3X60la7_XYO6dDx3u8H_9JJxa6xxYhBFM2DOpLPXcy2RBJ6qgcPk41-0UjzI7kZdELN6HysIiGPaJhmSWMemE8q0UueyTOoEhlv6ZDkbkwEtttXFsxui5fHGCzEXwa5WhOa2j7q4nR2MHeg1K7DGsJKRFoU0fGjQeyJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJBUFBfTUNPUkUiLCJpYXQiOjE2NjI3MjQ3MTAsImV4cCI6MTY2MjczMDExMCwiZGV2aWNlSWQiOjI1MTA1NDYwLCJkZXZpY2VUeXBlIjoiT1RUX1RWX1dFQk9TIiwiZGV2aWNlUGxhdGZvcm0iOiJHTyIsImxhbmciOiJDWiI5GH0KbXeNmj9iSKqMDZAcEl-GCRCcnSKfjjD7mQudYIMNWGZhbaJMuSpbZydbyYn-z-4amIx95_Q5MpfbofpwT6CV9wS6ig-Nt0fvp-4LFFQvTnM_zbTa4znEoriZkIBZQy8amYJ2mLlGsVkC5K52MvaHF6_bZeNW-
refresh_token=sInN1IjpmYWxzZSwicGh2IjAtY0UueyTOoEhlv6ZDkbkwEtttXFs
expires_in=5399
expires_at=1662730110
expires_date=2022-09-09_15:28:30
Uložení proměnných do souboru
Poslední ukázkou je pak to, jak si proměnné do souborů ukládám. Tady už jednoduchá metoda neexistuje, abych si to maximálně zjednodušil, používám krátký kus tohoto kódu s for, do kterého napíší seznam proměnných, jejichž obsah chci do souboru uložit (zde uložení do access.ini):
Kód:
rm -f ${path}access.ini
for var in logged refreshed access_token refresh_token expires_in expires_at expires_date ; do
echo ${var}=$(eval echo \$${var}) >> ${path}access.ini
done