• 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:
  • 10 Hlas(ů) - 2.6 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Estuary Easy
RSS Informační řádek

Před časem jsem byl požádán jedním nejmenovaným subjektem, zda bych nechtěl navrhnout řešení Kodi instalace, jejíž základem by bylo pár pokročilých funkcí Kodi, včetně vybraného skinu, s cílem vytvořit demo, sloužící k ukázce různých pokročilých možností využití Kodi. Těch funckí byla pěkná řádka a já zprvu odmítl, ale když dotyční přešli na "vyšší level" 1 přesvědčování, neodolal jsem. Z práce na zadání mi odpadlo pár drobků, které se určitě hodí i k všeobecnému použití a já určitě pár z nich využiji. RSS informační řádek je jedním z nich.
   
V zadání byl požadavek moci do místa, kam kodi zobrazuje obsah RSS čtečky, zobrazit vybrané informace podobného charakteru. Typicky například přehled posledních novinek přidaných do knihovny. Protože šlo o demo, tak nebylo nutné vytvářet nějaké robustní a univerzální řešení. Abych z toho měl i nějaký další užitek, nezvolil jsem pro ukázku takové funkce knihovnu, ale addon Stream Cinema Comunity (SCC),  protože něco takového se vždycky hodí. Výsledek je vidět na dalším screenshotu.
   
Obsahem RSS informačního řádku je v tomto případě zvolený počet (v ukázce je nastaveno 5 pro každý seznam) novinek SCC pro filmy i seriály. Řešení je univerzální a je možné si typ seznamu (-ů), které se v informačním rádku zobrazí, vybrat. Zatím jen v rámci úpravy kódu definičních souborů, protože na rozšíření nastavení pro tyto volby ještě pracuji. V konečném řešení samozřejmě nebude volba seznamů omezena pouze na SCC, ale bude ji možné použít i v jiných případech (original SC, knihovna, ...). Jednou z variant je řešení,  kdy bude možné si obsah RSS informačního řádku sestavit i z více addons.
   
Aby bylo možné si seznamy střídat jednoduše i na uživatelské úrovni, doplnil jsem systémové menu Kodi o položku RSS, kde bude možné si vybrat z předdefinovaných seznamů bez nutnosti použít funkci Nastavení skinu. Ještě je ve hře varianta, že se seznamy budou moci měnit i automaticky ve zvolené periodě, ale to už je pouze jen drobná modifikace.
 
Citovat
To, že je zájem o RSS informační řádek pro Stream Cinema Community (SCC) i pro Stream Cinema ukazuje, že ne všichni jsou s funkcemi SCC ještě spokojeni a stále používají originální addon od @BBaron. Jen jsem uživatelům, kteří skin Estuary Easy používají, tuto funkci ukázal, hned by ji chtěli používat a překvapivě dost z nich mělo podmínku "ale musí to fungovat s addon Stream Cinema!"

Kdybych měl oba doplňky hodnotit já a z pohledu skinnera, dostane ode mne originální Stream Cinema stále ještě rozhodně více bodů než jeho, v některých ohledech zatím nepříliš podvedený, klon. Co je škoda, že ty nepovedené funkce nejsou důsledek nějakých chyb nebo složitosti řešení a napravilo by to jediné, začít se konečně držtet pravidel a zásad Kodi. Ale to je zřejmě pro autory něco, co je v jejich To Do až někde úplně na konci a čemu nerozumím. Škoda.
           
Tak alespoň žánrové obrázky drobného vylepšení funkcí, které mají původ až v Media Portalu. Kdo ho používal, pamatuje si, že v RSS řádku se zobrazovalo logo zdroje, teď to bude podobné i v Kodi. Buď tedy logo zdroje RSS čtečky nebo logo zdroje filmových a seriálových novinek.

A na úplný závěr této seance  kolem RSS Informačního řádku ukázka výběru zdroje. Vybírá se (zatím) mezi těmito zdroji:
  • RSS Čtečka Kodi - je-li vybrána,  nabídne se v příslušného menu možnost spustit editor RSS editor
  • Novinky z addon Stream Cinema
  • Novinky z addon Stream Cinema Community
K výběru se používá volba RSS v systémovém menu:
   
Další volby jsou pak dostupné v okně RSS Infromační řádek:
           
Přidání dalšího zdroje je už rutina.

Pozn.
Periodické "cyklování" zdrojů zatím řešit nebudu. Může to být řešeno scriptem definovaným v rámci skinu, což je věc trochu "obsolete", případně v rámci "Helper addon", jehož použití se zatím usilovně bráním... 1

Takže suma sumárum je šance, že ze specifické funkce pro SCC může nakonec vzniknout nová a možná i užitečná funkce RSS Info Line Extended...
 
Citovat
Jak pokročilé funkce skinu využívají HW?

Řada uživatelů má obavy z toho, že jim pokročilé funkce skinu i celého Kodi zatíží HW tak, že Kodi nebude příliš použitelné. Ta obava je namístě a často se na to, že kromě výkonu GPU (pro HW dekódování videí  další výkonově náročené operace) potřebujeme i výkon CPU (a také disku/karty) na to, abychom měli z Kodi ten správný zážitek.

Skiny postavené na základě Estuary Stream-Cinema byly od počátku koncipované tak, aby CPU a diskové operace  využívaly co možná nejméně. Byl to důsledek toho, že z počátku běhaly (y byly vyvíjeny) na *ELEC provozovaných na RPi2. V tomto ohledy tedy byly méně náročenější, než sofistikované skiny typu Titan, Aeon Nox Silvo, Estuary mod V2, a jim podobné. Nyní se situace trochu obrací, protože například Estuary Easy (následovních Estuary Stream-Cinema) je dnes ve stavu kdy je, z pohledu zátěže HW, na tom podobně. Důvod ale není v tom, že by funkce, které skin nabízí, byly stále náročnější, ale proto, že je jich tolik jak počtem, tak rozsahem. Vždyť který skin dokáže nabídnou tolik současně zobrazených widgetů, funkcí on-line monitorování a nebo nově, rozšíření funkcí RSS o průběžnou infromaci o nově přidaných Filmech a Seriálech.

Počet funkcí skinu postupně narostl tak, že se objevil požadavek vybrat z Estuary Easy (Estuary Stream-Cinema) jen "to  nejlepší" a shrnout to v novém skinu, který bude mít pouze jednu jedinou funkci - prezentovat co nejlépe a co nejjednodušeji funkce addon Stream Cinema. Cílem je mít k dispozici řešení Kodi + addon + skin, které vytvoří kompaktní a logický celek, vhodný pro jednoduchou a rychlou instalaci i následné používání uživatelům z kategorie našich babiček a dědečků, rodičů, dětských pokojičků či prostě uživatelů, kteří nechtějí přemýšlet a chtějí, aby vše bylo intuitivní. Poslední verze Estuary Easy k takovému úkolu směřuje, nicméně objevil se požadavek, vytvořit takové řešení explicitně v jednoduchém a kompaktním tvaru. Ten požadavek má komerční charakter, proto jeho výsledky nemohu zatím prezentovat, ale jakmile obě strany splní své závazky, tak to (za dohodnutých podmínek) udělám.

Samozřejmě, že stejně jako se v nově vytvářeném skinu (či spíše zatím jen "demo skinu", který jsme pracovně nazvali Estuary Cinema) využívají funkce z Estuary Stream-Cinema i Estuary Easy, platí to i obráceně. Vývoj nového demo skinu má celou řadu side efektů, které se následně zúročí v i v jeho předchůdcích. Díky tomu jsem například optimalizoval spouštění skinu v Estuary Easy s použitím celé řady postupů, které byly původně použity ve zmiňovaném "demu" - odložení spuštění skinu až po startu PVR managera, přednačítání containerů pro funkce RSS Infořádek a celé řady dalších. A to jsou jen dva příklady. Vše zatím řešíme bez použití jakýchkoliv pomocných addon (skin "helperů"), ale doba, kdy po takovém řešení sáhneme se už blíží...

V ukázce je vidět restart Kodi v LibreELEC. Je to naše hlavní obývákové Kodi, na kterém mám nainstalovaný master skin Estuary Easy. Zdá se to možná nelogické, ladit něco na Kodi v obýváku, ale nikdy neodladíte funkce skinu lépe, než při jeho každodenním používání. Proto je také skin"dozelena", aby bylo všem jasné, že jde o tetsovací prostředí. Snímání videa jde přes Tiger VPN klienta ve Windows, restart jsem provedl přes systémovou funkci systemctl, kdy to někdy trvá déle, než by si člověk přál. Nicméně po  náběhu Kodi jsou vidět zmiňovaná vylepšení - první, ještě před skinem, se načítá PVR manager, je také vidět poměrně rychlé zobrazení RSS Infořádku s informacemi o posledních deseti novinkách Filmů a seriálů v databázi Stream Cinema Community. Jsme před výměnou HW, takže výkon už není není takový, jaký bych si přál, ale to se snad brzy změní. Na druhou stranu, toto Kodi jen málokdy restartujeme, většinou se uspává, takže tyto operace (kdy CPU jede skutečně po restartu Kodi na doraz) jsou spíše vyjímkou.
 
Citovat
Jak přepínat zdroje pro RSS čtečku?

Upřímně řečeno, až do nedávné doby, kdy jsem se začal zabývat zadáním na nový skin, jsem o této funkci (i když RSS čtečku v Kodi používám velmi dlouho) nepřemýšlel. Vždy jsem předpokládal, že pro přepínání zdrojů bude stačit použít funkci RSS editoru, ale když jsem se v souvislosti s novými funkcemi o to začal zajímat, zjistil jsem, že to tak úplně, jak jsem předpokládal, nefunguje. Aniž jsme se snažil přijít věci na kloub, zvolil jsem raději cestu, že jsem funkci přepínání zdrojů do skinu doplnil do dkinu po svém. Je to takový polotovar a bude, pro rozumnou funkci ještě třeba doplnit vlastní parametrizaci skinu, ve které se zajistí správná vazba mezi parametrizací skinu a parametrizací v souboru RSSFeeds.xml. Zatím jsme to všechno nechal na prosté editaci definičnéch souborů skinu, konkrétně v Home.xml, případně v některém z Includes.

Původní část definující zobrazení rss obsahu jsem nahradil voláním includes. Každé z těchto volání definuje parametry pro zobrazení jednoho "set-u" ze souboru RSSFeeds.xml. Kdo neví, tak tento soubor je uložen v userdata adresáři. Zatím to vyplňuji ručně, v dalším kroku bych to měl zabudovat do nastavení skinu. Vlastní includes RSSInfoLine definující obrazení rss obsahu je ideální umístit do Includes_Home.xml, kam logicky patří (ale můžete ho dát samozřejmě kamkoliv 6). Vypadá nějak takto:
Kód:
<include name="RSSInfoLine">
<param name="visible">true</param>
<param name="urlset">1</param>
<param name="banner"></param>
<definition>
<control type="group">
<visible>$PARAM[visible]</visible>
<control type="rss">
<animation effect="slide" end="0,90" time="300" tween="sine" easing="inout" condition="$EXP[infodialog_active]">conditional</animation>
<left>165</left>
<bottom>0</bottom>
<height>39</height>
<width>100%</width>
<font>font12</font>
<urlset>$PARAM[urlset]</urlset>
<hitrect x="-100" y="0" w="1" h="1" />
<titlecolor>button_focus</titlecolor>
<textcolor>button_focus</textcolor>
<shadowcolor>text_shadow</shadowcolor>
<headlinecolor>FFC0C0C0</headlinecolor>
<animation effect="fade" time="300">VisibleChange</animation>
</control>
<control type="image">
<left>0</left>
<bottom>0</bottom>
<width>160</width>
<height>40</height>
<animation effect="fade" time="300">VisibleChange</animation>
<aspectratio>keep</aspectratio>
<texture>$PARAM[banner]</texture>
</control>
</control>
</definition>
</include>
A jeho volání, kterým nahradíte původní definici rss v home.xml pak nějak takto:
Kód:
<include content="RSSInfoLine" condition="true">
<param name="visible">!Skin.HasSetting(RSSInfo_NoReader) + Skin.HasSetting(RSSInfo_News2)</param>
<param name="urlset">2</param>
<param name="banner">special://skin/extras/banners/rss/denikn.png</param>
Parametr banner je odkaz na soubor s bannerem daného zdroj. Měl by to být ideálně obrázek png s poměrem stran  4:1. Umístění libovolné, v rámci special protokolu Kodi, skin na něj musí samozřejmě vidět a mít práva ke jeho čtení. při další doplnění parametrizace skinu budou samozřejmě tyto parametry předmětem globálního nastavení funkce RSS Info řádku.

Parametry ve "visible"
Kód:
!Skin.HasSetting(RSSInfo_NoReader) + Skin.HasSetting(RSSInfo_News2)
jsou výsledkem nastavení volby zobrazení v RSS infromačním řádku. Já to řeším extra dialog oknem, které zobrazuji přes systémové menu. Jeho definice může vypadat nějak takto:
Kód:
<?xml version="1.0" encoding="UTF-8"?>
<window type="dialog" id="1154"> <!-- EASY+ RSS -->
<defaultcontrol  always="true">11000</defaultcontrol>
<include>Animation_DialogPopupOpenClose</include>
<controls>
<control type="group">
<centerleft>50%</centerleft>
<width>600</width>
<centertop>50%</centertop>
<height>700</height>
<include content="DialogBackgroundCommons">
<param name="width" value="700" />
<param name="height" value="80" />
<param name="header_label" value="RSS Informační řádek" />
<param name="header_id" value="2" />
</include>
<control type="group" id="11000">
<left>0</left>
<top>80</top>
<control type="grouplist" id="11100">
<width>700</width>
<height>497</height>
<itemgap>0</itemgap>
<onup>11100</onup>
<ondown>11100</ondown>
<orientation>vertical</orientation>
<control type="radiobutton" id="11101">
<include>DialogSettingButton</include>
<label>Zobrazit</label>
<selected>!Skin.HasSetting(RSSNoInfo)</selected>
<onclick>Skin.ToggleSetting(RSSNoInfo)</onclick>
</control>
<control type="image" id="11102">
<height>3</height>
<texture>dialogs/separator-grey.png</texture>
</control>
<control type="radiobutton" id="11103">
<include>DialogSettingButton</include>
<label>RSS Čtečka</label>
<selected>!Skin.HasSetting(RSSInfo_NoReader)</selected>
<onclick>Skin.ToggleSetting(RSSInfo_NoReader)</onclick>
</control>
<control type="button" id="11104">
<include>DialogSettingButton</include>
<label>Načíst RSS</label>
<onclick>RefreshRSS</onclick>
<enable>!Skin.HasSetting(RSSInfo_NoReader)</enable>
</control>
<control type="button" id="11105">
<include>DialogSettingButton</include>
<label>RSS Editor</label>
<onclick>RunAddon(script.rss.editor)</onclick>
<enable>!Skin.HasSetting(RSSInfo_NoReader)</enable>
</control>
<control type="image" id="11106">
<height>3</height>
<texture>dialogs/separator-grey.png</texture>
</control>
<control type="radiobutton" id="11107">
<include>DialogSettingButton</include>
<label>RSS Aktuálně</label>
<selected>Skin.HasSetting(RSSInfo_News1)</selected>
<onclick>Skin.SetBool(RSSInfo_News1)</onclick>
<onclick>Skin.Reset(RSSInfo_News2)</onclick>
<onclick>RefreshRSS</onclick>
<enable>!Skin.HasSetting(RSSInfo_NoReader)</enable>
</control>
<control type="radiobutton" id="11108">
<include>DialogSettingButton</include>
<label>RSS DeníkN</label>
<selected>Skin.HasSetting(RSSInfo_News2)</selected>
<onclick>Skin.SetBool(RSSInfo_News2)</onclick>
<onclick>Skin.Reset(RSSInfo_News1)</onclick>
<onclick>RefreshRSS</onclick>
<enable>!Skin.HasSetting(RSSInfo_NoReader)</enable>
</control>
<control type="image" id="11110">
<height>3</height>
<texture>dialogs/separator-grey.png</texture>
</control>
<control type="radiobutton" id="11111">
<include>DialogSettingButton</include>
<label>Novinky SC</label>
<selected>Skin.HasSetting(RSSInfo_NewsSC)</selected>
<onclick>Skin.SetBool(RSSInfo_NewsSC)</onclick>
<onclick>Skin.Reset(RSSInfo_NewsSCC)</onclick>
<enable>Skin.HasSetting(RSSInfo_NoReader)</enable>
</control>
<control type="radiobutton" id="11112">
<include>DialogSettingButton</include>
<label>Novinky SCC</label>
<selected>Skin.HasSetting(RSSInfo_NewsSCC)</selected>
<onclick>Skin.SetBool(RSSInfo_NewsSCC)</onclick>
<onclick>Skin.Reset(RSSInfo_NewsSC)</onclick>
<enable>Skin.HasSetting(RSSInfo_NoReader)</enable>
</control>
</control>
</control>
</control>
</controls>
</window>
Uvedený příklad ukazuje na možnosti skinu a jeho interakce s addons i nativními funkcemi samotného Kodi. Ukazuje také, že ne vždy je třeba se držet zavedených řešení, někdy je stačí jen mírně poupravit a dostanete uživatelsky celkem výživnou funkci. posuďte sami:
   
Uvedený postup má i své mušky. Funkce samotné čtečky RSS může zatěžovat některé CPU více, než je zdrávo. V tomto mém řešení, pokud se rozhodnete přepínat mezi více zdroji RSS, vlastně musíte spustit současně více čteček, což může mít na CPU zdrcující dopad. Naštěstá je právě vždy jen jedna ve stavu <visible>, takže by to vlastně ani tak  zásadní problém být neměl.

Pozn. Tedy já si to alespon myslím z toho, jak se Kodi a funkce rss čtečky chová. Je to specifická funkce, takže její přesné chování ještě nemám osahané, takže to budu chvíli pozorovat a snad se mi z toho podaří udělat nějaký jasný závěr. Momentálně mám současně aktivní zdroje 2, chystám se ještě dva další přidat, a to už by mělo jasně napovědět, jestli to pro Kodi a CPU bude problém či nikoliv.

A komu by to i přesto vadilo, může na to jít přes přepínání volání samotného include RSSInfoLine. Je to naznačeno použitím condition, které je ale ve volání nyní nastaveno na true.
Kód:
<include content="RSSInfoLine" condition="true">
V tomto místě (tedy místo "true") se pak samozřejmě může objevit parametr z nastavení skinu, ve kterém se dá zdroj povolit či zakázat absolutně. Pak ale samozřejmě přijdete o rychlé on-line přepínání.

Kdyby měl ještě někdo nějaký nápad, jak funkci RSS Infořádku v Kodi vylepšit, napište. Rád se nechám inspirovat.
 
Citovat
RSS Info řádek - periodické přepínání zdroje

Je to jako v populárním seriálu TBBT, když se v laboratoři zastaví plukovník Williams a pronese"Chci to!!. Podobně to dopadlo, když jsem v jednom z předchozích příspěvků napsal, že by se zdroje pro RSS Info řádek mohly přepínat automaticky. To automaticky je myšleno peridodicky, kdy jednotlivé obsahy řádky s obsahem cyklují podle zadaných parametrů. Hned se ozvalo pár hlasů, že by tu funkci také chtěly. Jedna věc jsou ony parametry a jejich zadání - tedy co všechno umožnit uživatelům si volit a parametrovat, druhá věc, ta podstatná, takovou funkci realizovat. To se mi dnes povedlo.

Funkce je celkem jednoduchá, periodická volba zobrazení definovaných zdrojů, kterou jsem zatím použil pouze pro zobrazení Novinek médié, tedy SC a SCC. Přepíná se samozřejmě jak obsah, tak bannery. To přepínání je asynchronní k pohybu textu. Zařídit, aby se přepnutí provedlo v okamžiku, když text "dojede do konce", nelze.  Nicméně, není to zas taková hrůza, protože přepne-li se zobrazení, tak předchozí řádek zůstane v té pozici, ve kterém byl před přepnutím a v dalším cyklu se tedy text posouvá od přerušené pozice. Navíc jsem přepnutí ošetřil animací (fade by change visible), takže vlastní přepnutí není nijak rušivé. V ukázce, kterou níže přikládám, jsem nastavil peridodu přepínání na 30 s, aby nebylo třeba na ukázku přepnutí čekat tak dlouho. V reálu, kdy bude peridoda přepnutí uživatelsky definovaná v nastavení, bude možné peridou nastavit klidně i delší.
 
Citovat
Splash screen a posunutí načítání widgetů

Pokud používáte větší množsví widgetů jejichž obsah je načítán z video addons (video pluginů) stává se, že pokud současně s tím používáte i PVR, načtou se kanály z externího zdroje až poté,  co se naplní všechny widgety. To je pro někoho nevhodné zpoždění. Kodi normálně neumožňuje změnit pořadí spouštění addons, ale dá se tomu pomoci poměrně jendoduchým trikem, kterému říkám:

Zpoždění zobrazení Home stránky

Iniciální spuštění Home okna je definováno ve skinu, v souboru Startup.xml.  Normálně může vypadat nějak takto:
Kód:
<onload>ReplaceWindow(10000)</onload>
Pokud chcete jeho spuštění odložit,  stačí místo výše uvedeného řádku vložit:
Kód:
<onload>AlarmClock(Skin,ReplaceWindow(10000),00:10,silent)</onload>
Uvedený řádek způsobí, že se Home stránka (a tedy i její widgety) začnou načítat s 10 vteřinovým zpožděním. To spolehlivě umožní, že se spustí inciální sekvence PVR Managera. Nic víc nepotřebujeme.

Mimochodem, definice v souboru Startup.xml umožňují vytvořit celkem sofistikovaný nástroj pro možnost uživatelsky definovaného chování po startu Kodi - spuštění videa, hudby a nebo třeba celého addon. Samozřejmě za podpory celé řady proměnných, které si pak uživatel může nastavit v nastavení skinu. Pro zkušeného skinnera je tento soubor a definice v něm celkem jednoduchý prostředek, jak Kodi doplnit o uživatelksy hodnotné funkce. Ale k tomu se vrátím někdy později...

Posunutí zobrazení Home stránky má jeden nepříjemný důsledek. A to,  že uživatel celou dobu kouká na černou obrazovku, maximálně se mu v jejím pravém horním rohu zobrazují hlášky spouštěného PVR Managera. Napadlo mě tento stav opticky vylepšit zobrazením splash stránky Kodi (nebo libovolného jiného obrázku). Proto vznikl:

Extended splash screen

Myšlenka je celkem triviální. Jako první v Kodi zobrazit uživatelské okno, ve které se zobrazí splash obrázek. Stačí tedy nadefinovat uživatelské okno. Já jsem si vybral id 1160 a vytvořil soubor Custom_1160_Startup.xml s obsahem:
Kód:
<?xml version="1.0" encoding="UTF-8"?>
<window id="1160"> <!-- EASY+ -->
<controls>
<control type="image">
<left>0</left>
<right>0</right>
<bottom>0</bottom>
<animation effect="fade" time="500">WindowClose</animation>
<texture>special://xbmc/media/splash.jpg</texture>
</control>
</controls>
</window>
Pak už jenom vložit do Startup.xml řádek:
Kód:
<onload>ReplaceWindow(1160)</onload>
a je hotovo.

Poznámka: Občas se mě lidé ptají, jak se má soubor s definicií uživatelského okna správně jmenovat. Ptají se porto, protože každý skin má ta jména konstruovaná různě. A já vždy podpovídám: "Je to úplně jedno." Nesmí se pochopitelně použít už jméno nějakého exisujícího souboru v definici skinu a přípona musí být xml, ale to je asi tak vše, co je třeba dodržet. Pro správnou funkci je důležité pouze to, jaké id oknu v definici (tedy v obsahu souboru) dáme.

Spuštění Kodi pak může vypadat nějak takto:


Místo original splash screen je samozřejmě možné zobrazit jakýkoliv obrázek. Já jsem ale zůstal u originálního splash, protože chci, aby se mi to u všech Kodi, co doma máme, chovalo stejně. Tohle je pak nejjednodušší. Zvláště, použije-li se k adresaci special protokol Kodi.

EDIT: Ještě jsem dodatečně do definice okna 1160 přidal animaci (fade) splash obrázku při uzavření okna. V přiloženém videu je to ale ještě bez ní. Tak abyste se nedivili. Je to řádek:
Kód:
<animation effect="fade" time="500">WindowClose</animation>
 
Citovat
Je aktualne mozne tento skin niekde stiahnuť, alebo ho používaš a upravujes len pre svoju potrebu? Ďakujem.
Mecool KII pro S905D, CoreELEC 9.0.1
 
Citovat
@j.jusko Toto vlákno jsem vytvořil proto, abych prezentoval postupy při jednoduchých úpravách skinů, s ukázkami vycházejícími ze skinu Estuary. Proto se téma jmenuje Estuary Easy. Mezitím ale vznikl i skin stejného jména, který ale spravuje jiná skupina uživatelů (vede ji @Client) do které už nepatřím, a která ho drží pod pokličkou. Já sám tento skin také používám, ale je to teď už zcela samostatná "vývojová větev", doplněná celou řadou mých vlastních nových úprav, které mnohdy předpokládají specifickou parametrizaci Kodi a některých addons. Není tedy možné skin použít jen tak na běžném Kodi a proto ho také nebudu zvěřejňovat. Dalším důvodem k nepublikování je to, že řada věci v něm není dotažená tak, aby bylo možné skin paramertovat z uživatelské úrovně, Nastavení vzhledu Kodi.

Spíše předpokládám, že se tady budou inspirovat ti, kteří ve skinningu našli zálibu, případně ti, kteří nějaký veřejně publikovaný skin spravují. Například Estuary Stream Cinema, ať už pro originální a nebo Community addon. Berte tedy toto téma jen jako jakousi laboratoř, zdroj inspirace, případně místo k diskusi nad funkcemi skinů.
 
Citovat
Spouštění traileru z widgetu

Snažím se, aby ovládání Kodi bylo pokud možno konzistentní ve všech svých částech a funkcích. Samozřejmě to nejde vždy, ale každé řešení, kterým se k tomu přiblížím, považuji za úspěch. Už dlouho používám addon typu script, PlayTrailer (addon id context.trailer), který do kontextového menu přidává možnost spuštění traileru. Tento addon najdete v repozitáři Kodi Add-on Repositories. Funguje dobře pro filmy, ale... To "ale" ale není nijak kritické, jde o to, že nefunguje pro seriály a také, že se možnost spuštění traileru neobjeví v okažiku, pokud kontetxové menu otevřete z položky widgetu. Obojí lze jednoduše vyřešit. Stačí v podmínce zobrazení položky menu v addon.xml tohoto addon odstranit podmínku na test typu položky. Tedy místo:
Kód:
<visible>String.IsEqual(ListItem.dbtype,movie) + !String.IsEmpty(ListItem.Trailer)</visible>
mezi tagy <visible> ponechat pouze:
Kód:
<visible>!String.IsEmpty(ListItem.Trailer)</visible>
Ale ani teď to není dokonalé. Nedokonalost se projeví v případě, budete-li si chtít spustit trailer u seznamu nebo widgetu z SCC. Díky specifickému výkladu pravidel a zásad Kodi autoři toho jinak skvělého díla s položkou, do které se ukládá adresa traileru, nepracují tak, jak zvyklosti a autoři skinů počítají. Píši o tom zde. Oprava je snadná. Již jednou výše upravenou podmínku doplníme o další test:
Kód:
<visible>!String.IsEmpty(ListItem.Trailer) + !String.Contains(ListItem.Trailer,video_url=None)</visible>
Sice stále ještě k dokonalosti chybí krůček, a tím je, že se po spuštění traileru z SCC přes kontext menu se neobjevuje jeho správný popis, ale to plánuji časem také opravit.

Podobně, jako v kontex menu, je pro potřeby 100% správného chování v tomto případě upravit i skin. V Estuary (a prakticky ve všech dalších skinech) se položka Trailer testuje a pokud je prázdná, tak se nabídka na spuštění traileru v příslušném místě neobjeví. Ne tak, pokud jde o SCC. Tam se nabídka na spuštění traileru objeví vždy, ale trailer se spustí pouze tehdy,  pokud v obsahu položky není výše testovaný řetezec. Což znamená, že v databázi SCC odkaz na trailer není. Je tedy třeba  podobnou podmínku doplnit i do skinu v těch definičních souborech, ve kterých je spuštění traileru definováno.

U Estuary je to na Info stránce (tlačítko Info na ovladdači, položka Info v kontext menu nebo klávesa i) filmu nebo seriálu, tedy v definičním souboru DialogVideoInfo.xml. Původní sekvence definující zobrazení možnosti spuštění traileru vypadá takto:
Kód:
<include content="InfoDialogButton">
<param name="id" value="11" />
<param name="icon" value="icons/infodialogs/trailer.png" />
<param name="label" value="$LOCALIZE[20410]" />
<param name="visible" value="!String.IsEmpty(ListItem.Trailer) + ![String.StartsWith(Container.FolderPath,plugin://) + String.Contains(Container.FolderPath,trailer)]" />
</include>
a je tedy třeba ji upravit nějak takto (je to podobné jako výše u definice kontext menu, tedy test na substring "video_url=None"):
Kód:
<include content="InfoDialogButton">
<param name="id" value="11" />
<param name="icon" value="icons/infodialogs/trailer.png" />
<param name="label" value="$LOCALIZE[20410]" />
<param name="visible" value="!String.IsEmpty(ListItem.Trailer) +  !String.Contains(ListItem.Trailer,video_url=None) + ![String.StartsWith(Container.FolderPath,plugin://) + String.Contains(Container.FolderPath,trailer)]" />
</include>

To ale dnes není všechno. Informace o tom, zda film má k dispozici trailer může být zajímavá. Zejména u přehršle novinek ve widgetech, aby měl uživatel rychle přeheld, u kterého titulu si trailer může pustit. Doplnil jsme tedy zobrazení příznaku (badge) do posteru jak u filmů, tak seriálů. Úprava je rozdělená na dvě části. V první se definuje include, které zobrazí vlastní badge, v druhé se toto include použije v příslušeném místě.

Definici include, které jsem pojmenoval TrailerBadge, je vhodné ideálně umístit do souboru includes.xml.
Kód:
<include name="TrailerBadge"> <!-- EASY+ -->
<definition>
<control type="image">
<left>35</left>
<top>10</top>
<width>60</width>
<height>60</height>
<aspectratio>keep</aspectratio>
<animation effect="fade" time="0" condition="$PARAM[animation]">VisibleChange</animation>
<texture>special://skin/extras/badges/trailer.png</texture>
<visible>!String.IsEmpty(ListItem.Trailer) + !String.Contains(ListItem.Trailer,video_url=None)</visible>
</control>
</definition>
</include>
Obrázek vlastního badge jsem si vytvořil a místil do vytvořeného podadresáře badges v adrsáři extras skinu, tedy úplná adresa ve special protokolu je special://skin/extras/badges/. Obrázek přikládám, je ho možné stáhnout.
   

Volání výše uvedného include je pak třeba umístit do View_54_InfoWall.xml, případně dalších, pokud chcete badge s informací vidět i v jiných náhledech. Naopak, kromě widgetů teď uvidíte badge ve všech náhledech, které zobrazení posterů typu "zeď" používají. Kód:
Kód:
<control type="group">
<left>0</left>
<top>0</top>
<include>TrailerBadge</include>
</control>
umístěte do include InfoWallMovieLayout, například do tohoto místa (umístění není úplně kritické):
Kód:
<control type="progress">
<left>35</left>
<top>350</top>
<width>250</width>
<height>1</height>
<texturebg></texturebg>
<midtexture colordiffuse="button_focus" border="3">progress/texturebg_alt_white.png</midtexture>
<info>ListItem.PercentPlayed</info>
<visible>!Integer.IsEqual(ListItem.PercentPlayed,0)</visible>
</control>
<control type="group">
<left>0</left>
<top>0</top>
<include>TrailerBadge</include>
</control>

Pozn. Ještě jsem zobrazení o tom, že vybraný titul má trailer, doplnil do místa, které zobrazuje parametry videa daného titulu. Je to vidět na přiložených screenshotech. Tohle už tu popisovat nebudu, zveřejním to až tehdy, pokud někdo bude mít zájem.

Na závěr několik screenshotů k tématu:
               
a ještě tradiční video s ukázkou:
 
Citovat
Cauko..prosim ta, co to mas za nastavenie skinu? Mam ten isty, ale ine poradie, inak usporiadane ikony, proste menej prívetivý.
 
Citovat
@janci.p To je skin odvozený od Estuary, na kterém si všechny zde prezentované nápady testuji.
 
Citovat
A môžem ho niekde tak, ako máš ty stiahnuť? Či by som si to musel všetko upraviť?
 
Citovat
@janci.p https://www.xbmc-kodi.cz/prispevek-estua...8#pid92358
 
Citovat
@JiRo: k čemu máš v kontextovém menu u widgetu položku "refresh"?
 
Citovat
@otava5 Refresh aktualizuje aktuální seznam/container - znova se do něj načtou data (z databáze nebo z addon). U normálních seznamů to funguje, u widgetů ale bohužel ne. A to jsem to hlavně kvůli widgetům dělal. 10 Je to jen takový pokus.
 
Citovat
@JiRo: kdybys dokázal zprovoznit manuální "refresh" u widgetů či pravidelný byl bych rád za úpravu  6
 
Citovat
@otava5 To bych rád, ale nějak se mi to nedaří, jak už jsme napsal, ten refresh v kontext menu na control použitý ve widgetech nefunguje. A předělávat celou koncepci widgetů s emi moc nechce. Rozhodně to vypadá na to, že bude asi třeba vyrobit nakonec nějaký "helper" (service addon). Teď laboruji s tím, takový helper zabudovat rovnou do skinu. Už jsme ho s @BBaron kdysi měli, tak to stačí jen oprášit. To ale samozřejmě boří zásadu co nejjednodušších úprav základního vzhledu Estuary, takže je otázka, zda to má vůbec smysl.
 
Citovat
Teď, když jste se s autory SCC na vedlejším fóru dohodli na smíru, má otázka zní, kdy oficielně vydáš svůj skin? Už se na něj těším. Díky
 
Citovat
@Cinda Co se týče "vydání" skinu, tak k tomu snad jen toto https://www.xbmc-kodi.cz/prispevek-estua...8#pid92358.

Netuším o jakém "smíru" píšeš. Já tedy o žádném nevím, a to proto, že si nemyslím, že by kdy před tím byla vyhlášena nějaká "válka".
 
Citovat
Pro každého skinnera je příchod nové major verze Kodi událostí spojenou nejen s (ne)naplněním očekávání, ale také s větší či menší prací na úpravě skinu a implementaci nových funkcí. Dosud jsem se nightbuild verzemi Matrix-u nezabýval, ale uvolnění Alpha verze to samozřejmě změní. Jako tradičně se nejvíce změn odehrává v části PVR, nicméně objevují se i dílčí novinky týkající se jiných částí a pak samozřejmě celá řada obecnějších drobností, které zejména skinnery potěší.

Pokud to někdo se skinningem myslí vážně, měl by se určitě podívat do sekce Development fóra kodi.tv zabývající se Skinnig-em, kde jako tradičně najde souhrn těch základních změn, v tématu tentokrát nazvaném Changes to the skinning engine for Kodi Matrix.

Nechci to tady podrobně rozebírat, nicméně pár změn (berte to jako pozvánku) za zmínku stojí:
  • ListItem.IsPremiere(), ListItem.IsFinale(), ListItem.IsLive() - sada funkcí týkající se pořadů v PVR, která však bude závislá na zdrojích dat a dá se tedy jen těžko předpokládat, že je v našich domácích podmínkách budeme moci využít - škoda
  • PVR.IsPlayingActiveRecording - tohle jsem už párkrát postrádal, takže teď už nápady, jak tuto informaci využít, půjdou realizovat snadno
  • Integer.IsEven(), Integer.IsOdd() - i na potřebu tohoto testu jsem už párkrát narazil a litoval, že není k dipsozici, teď už ano...
  • řetězcové funkce umožňující porovnávat dva Infolabels - tady poznamenám jen jedno: Konečně! Troufám si tvrdit, že tohle chybělo snad všem...
  • nový dialog spojený s novými funkcemi PVR EPG, který je jistě zajímavý, ale (a to s tím moc nesouvisí) jeho provedení v první verzi Estuary je dost tragické". No, alespoň je tam prostor ke zlepšování...
  • pak celá řada "vyvolaných" novinek reflektující nové funkce obecně - například vše týkající se Remider (připomenutí pořadu v PVR) funkce nebo zlepšení podpory alb s více CD nebo BoxSets - tohle bude samozřejmě znamenat (možná nutné) přeskládání některých zdrojů v hudební knihovně, ale to rád udělám...
  • podpora pro volbu skupin PVR kanálů - to se sice úplně skinu netýká, nicméně to do něj přináší možnost využití souvisejícího widgetu Skupiny kanálů - k tomuto tématu se ještě vrátím. Funkce je to dobrá, nicméně její praktická realizace z ní nečiní úplně uživatelsky bezproblémovou záležitost. Ono to souvisí s celou jednou novinkou v Matrixu a to jsou poměrně zásadně změněné funkce Kodi týkající se PVR kanálů a skupin kanálů. Ale to si opravdu nechám až na zcela samostatný příspěvek...
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)