29.10.2020, 12:31
(Tento příspěvek byl naposledy změněn: 14.5.2021, 17:01 uživatelem listener.
Důvod úpravy: Doplnění.
)
Rozhodl jsem se udělat z mého skriptu (o kterém jsem se tu už zmínil) plnohodnotný doplněk.
Šel jsem ale opačnou cestou, než doplněk "ČRo". Můj doplněk je primárně určen k živému poslouchání ČRo a přehrávání a stahování z archivu je spíše jako bonus.
Nový doplněk se proto jmenuje "ČRo Live" a po instalaci ho najdete pod "Doplňky - Moje doplňky - Doplňky hudby".
Hlavní účel, tedy živý poslech, je z hlediska programování víceméně bezproblémový. Stáhnout data v json formátu a konvertovat je do xml je poměrně triviální úkol. Hlavním a vlastně jediným problémem je, že potřebujeme nějakého PVR klienta. Tento klient je nutný k živému poslechu přes nabídku "Rádio" v Kodi. PVR doplňky jsou bohužel vždy binární a já nemám chuť pouštět se do jeho vývoje. Ideální by bylo, kdyby Simple Client podporoval více zdrojů dat. Bohužel ale nepodporuje. Proto existuje několik doplňků, které data z více zdrojů umí sloučit a sloučená předložit Simple Clientovi. Zkoušel jsem to a nevyhovovalo mi to.
Napadlo mě ještě jiné řešení, které se ukázalo jako zcela funkční a mně vyhovující:
"Klonoval" jsem Simple Clienta, takže v Kodi mi běží dvě jeho instance. Jedna pro televizi, druhá pro rádio. V LibreELEC je naštěstí takové klonování velice jednoduché. Stačí zduplikovat složku pvr.iptvsimple včetně obsahu (nachází se v ".kodi/addons"). Binárka je přímo v této složce. Já jsem zkopírovanou složku přejmenoval na "pvr.iptvsimple.radio" a stejně tak jsem ".radio" doplnil i do názvu binárního souboru (konkrétně u mne se jmenuje "pvr.iptvsimple.radio.so.6.3.1"). Upravit se musí také soubory "addon.xml", "settings.xml" (doplnit ".radio" do všech řetězců, které obsahují "pvr.iptvsimple"). Podobně jsem upravil i soubory "strings.po" ve složce "resources/language/" (pro češtinu a angličtinu), ale to velmi pravděpodobně nebylo třeba.
Trochu složitější je postup pro Kodi pod Linux Mint. Komplikovanější je to proto, že binárka je úplně jinde, než vlastní doplněk.
Například u mně je doplněk Simple Client ve složce "/var/lib/flatpak/app/tv.kodi.Kodi/current/active/files/share/kodi/addons/pvr.iptvsimple", zatímco příslušná binárka je ve složce "/var/lib/flatpak/app/tv.kodi.Kodi/current/active/files/lib/kodi/addons/pvr.iptvsimple". V tomto případě jsem tedy zduplikoval obě složky a přejmenoval všechny relevantní soubory uvnitř nich (do názvu přidal ".radio"). U té binárky jsem musel ještě vytvořit nové symlinky.
Jakmile jsem měl dvě nezávislé instance Simple Clienta, bylo téměř hotovo. Jediná "drobná" potíž se projevila tím, že EPG rádia a TV byly poněkud pomíchané. Řešení je naštěstí jednoduché. Jakmile jsou povoleny dva (a více) PVR doplňky, objeví se v nabídce "Nastavení - PVR a Živé vysílání - Obecné" nová položka, která se jmenuje "Priority klienta".
Tu je potřeba rozkliknout. Výchozí hodnoty jsou "0" u každého klienta. Je třeba nastavit to tak, aby priority byly rozdílné. Já jsem nastavil v prvním řádku "1" a v druhém "2".
Následně je ještě nutné vymazat data v nabídce "Nastavení - PVR a Živé vysílání - Televizní program". Data se pak znovu načtou, ale EPG už nejsou pomíchané. Ještě je třeba poznamenat, že zakážu-li dočasně Simple Clienta, položka "Priority klienta" zmizí. Po povolení se znovu objeví, ale bohužel s výchozím nastavením priorit na "0".
EDIT 26. 2. 2021:
POZOR, výše popsané řešení s klonováním doplňku pvr.iptvsimple už NEDOPORUČUJI !
Více v tomto příspěvku.
Druhá, bonusová funkce doplňku (práce s archivem prostřednictvím EPG), problematická je. Hlavní potíž je v tom, že vlastně existují dvě databáze (pro jednoduchost jim budu říkat "schedule" a "archiv"). Každý odvysílaný pořad je jednak v databázi "schedule" (jako "scheduledEpisode"), jednak v databázi "archiv" (jako "episode"). Odkazy na audio soubory jsou pouze v databázi "archiv". Bohužel, neexistuje žádná rozumná reference mezi oběma databázemi. Jedinou použitelnou referencí je název pořadu a někdy "show ID". Částečně použitelnou referencí je datum a čas vysílání. Většinou se dá použít jen datum. Jako příklad mohu uvést můj oblíbený Meteor. Plánovaný čas (v databázi "schedule") je 08:04, zatímco databáze "archiv" uvádí jako začátek 08:50, což je úplný nesmysl. Nabízí se vysvětlení, že je to čas, odkdy je pořad v databázi. Skoro to vychází jako čas skutečného začátku plus délka pořadu. Ale je to opravdu jen skoro a u mnoha jiných pořadů časy v obou databázích souhlasí. Navíc jsem si ověřil, že pořad se v archivu obvykle objevuje s různě dlouhým zpožděním po odvysílání.
Z uvedeného vyplývá, že můj doplněk není dokonalý a ani nemůže být. I tak si ale myslím, že stojí alespoň za vyzkoušení. Výhodou je pak Kodi 19, které přináší nové funkce (možná je to jen novější verzí Simple Clienta). Například v kontextové nabídce u jednotlivých pořadů jsou nové položky "Přidat časovač" anebo "Nastavit připomenutí". Zejména funkce "Přidat časovač" se mi zdá docela užitečná.
Snad jsem napsal vše důležité. Prosím o vyzkoušení a (konstruktivní) připomínky.
Šel jsem ale opačnou cestou, než doplněk "ČRo". Můj doplněk je primárně určen k živému poslouchání ČRo a přehrávání a stahování z archivu je spíše jako bonus.
Nový doplněk se proto jmenuje "ČRo Live" a po instalaci ho najdete pod "Doplňky - Moje doplňky - Doplňky hudby".
Hlavní účel, tedy živý poslech, je z hlediska programování víceméně bezproblémový. Stáhnout data v json formátu a konvertovat je do xml je poměrně triviální úkol. Hlavním a vlastně jediným problémem je, že potřebujeme nějakého PVR klienta. Tento klient je nutný k živému poslechu přes nabídku "Rádio" v Kodi. PVR doplňky jsou bohužel vždy binární a já nemám chuť pouštět se do jeho vývoje. Ideální by bylo, kdyby Simple Client podporoval více zdrojů dat. Bohužel ale nepodporuje. Proto existuje několik doplňků, které data z více zdrojů umí sloučit a sloučená předložit Simple Clientovi. Zkoušel jsem to a nevyhovovalo mi to.
Napadlo mě ještě jiné řešení, které se ukázalo jako zcela funkční a mně vyhovující:
"Klonoval" jsem Simple Clienta, takže v Kodi mi běží dvě jeho instance. Jedna pro televizi, druhá pro rádio. V LibreELEC je naštěstí takové klonování velice jednoduché. Stačí zduplikovat složku pvr.iptvsimple včetně obsahu (nachází se v ".kodi/addons"). Binárka je přímo v této složce. Já jsem zkopírovanou složku přejmenoval na "pvr.iptvsimple.radio" a stejně tak jsem ".radio" doplnil i do názvu binárního souboru (konkrétně u mne se jmenuje "pvr.iptvsimple.radio.so.6.3.1"). Upravit se musí také soubory "addon.xml", "settings.xml" (doplnit ".radio" do všech řetězců, které obsahují "pvr.iptvsimple"). Podobně jsem upravil i soubory "strings.po" ve složce "resources/language/" (pro češtinu a angličtinu), ale to velmi pravděpodobně nebylo třeba.
Trochu složitější je postup pro Kodi pod Linux Mint. Komplikovanější je to proto, že binárka je úplně jinde, než vlastní doplněk.
Například u mně je doplněk Simple Client ve složce "/var/lib/flatpak/app/tv.kodi.Kodi/current/active/files/share/kodi/addons/pvr.iptvsimple", zatímco příslušná binárka je ve složce "/var/lib/flatpak/app/tv.kodi.Kodi/current/active/files/lib/kodi/addons/pvr.iptvsimple". V tomto případě jsem tedy zduplikoval obě složky a přejmenoval všechny relevantní soubory uvnitř nich (do názvu přidal ".radio"). U té binárky jsem musel ještě vytvořit nové symlinky.
Jakmile jsem měl dvě nezávislé instance Simple Clienta, bylo téměř hotovo. Jediná "drobná" potíž se projevila tím, že EPG rádia a TV byly poněkud pomíchané. Řešení je naštěstí jednoduché. Jakmile jsou povoleny dva (a více) PVR doplňky, objeví se v nabídce "Nastavení - PVR a Živé vysílání - Obecné" nová položka, která se jmenuje "Priority klienta".
Tu je potřeba rozkliknout. Výchozí hodnoty jsou "0" u každého klienta. Je třeba nastavit to tak, aby priority byly rozdílné. Já jsem nastavil v prvním řádku "1" a v druhém "2".
Následně je ještě nutné vymazat data v nabídce "Nastavení - PVR a Živé vysílání - Televizní program". Data se pak znovu načtou, ale EPG už nejsou pomíchané. Ještě je třeba poznamenat, že zakážu-li dočasně Simple Clienta, položka "Priority klienta" zmizí. Po povolení se znovu objeví, ale bohužel s výchozím nastavením priorit na "0".
EDIT 26. 2. 2021:
POZOR, výše popsané řešení s klonováním doplňku pvr.iptvsimple už NEDOPORUČUJI !
Více v tomto příspěvku.
Druhá, bonusová funkce doplňku (práce s archivem prostřednictvím EPG), problematická je. Hlavní potíž je v tom, že vlastně existují dvě databáze (pro jednoduchost jim budu říkat "schedule" a "archiv"). Každý odvysílaný pořad je jednak v databázi "schedule" (jako "scheduledEpisode"), jednak v databázi "archiv" (jako "episode"). Odkazy na audio soubory jsou pouze v databázi "archiv". Bohužel, neexistuje žádná rozumná reference mezi oběma databázemi. Jedinou použitelnou referencí je název pořadu a někdy "show ID". Částečně použitelnou referencí je datum a čas vysílání. Většinou se dá použít jen datum. Jako příklad mohu uvést můj oblíbený Meteor. Plánovaný čas (v databázi "schedule") je 08:04, zatímco databáze "archiv" uvádí jako začátek 08:50, což je úplný nesmysl. Nabízí se vysvětlení, že je to čas, odkdy je pořad v databázi. Skoro to vychází jako čas skutečného začátku plus délka pořadu. Ale je to opravdu jen skoro a u mnoha jiných pořadů časy v obou databázích souhlasí. Navíc jsem si ověřil, že pořad se v archivu obvykle objevuje s různě dlouhým zpožděním po odvysílání.
Z uvedeného vyplývá, že můj doplněk není dokonalý a ani nemůže být. I tak si ale myslím, že stojí alespoň za vyzkoušení. Výhodou je pak Kodi 19, které přináší nové funkce (možná je to jen novější verzí Simple Clienta). Například v kontextové nabídce u jednotlivých pořadů jsou nové položky "Přidat časovač" anebo "Nastavit připomenutí". Zejména funkce "Přidat časovač" se mi zdá docela užitečná.
Snad jsem napsal vše důležité. Prosím o vyzkoušení a (konstruktivní) připomínky.