• 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:
  • 3 Hlas(ů) - 2.33 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Video pluginy a skiny - pro autory doplňků
#1
Toto téma je určené především autorům video doplňků (tedy pluginů v terminologii Kodi) a mělo by být jakýmsi shrnutím pravidel, která by bylo vhodné dodržovat pro to, aby způsob zobrazení, které pluginy používají, odpovídal filosofii Kodi. Dodržování pravidel vynikne především v situacích, kdy v Kodi použitý skin nabízí nějaké přehledové funkce zobrazení, ve kterých se potkávají seznamy (widgety) z různých pluginů, případně při zobrazování dalších (doplňkových) informací, u kterých nejednotnost řešení různými pluginy nevypadá hezky. Skinem se toho dá hodně vyřešit, ale ne vždy všechno, nehledě na to, že přizpůsobování skinu pluginu na této úrovni je systémově špatně a je to cesta do pekla. Samozřejmě to neznamená, že by se plugin měl přizpůsobit skinu, to je asi jasné. Přirozené je, aby se skin i plugin "potkaly" na společném rozhraní a obě strany ctily jeho pravidla a zvyklosti použití.

Obsah kontejneru

Nejdůležitějším (dalo by se napsat, že i jediným) rozhraním mezi pluginem a skinem z pohledu tohoto tématu jsou procedury gui knihovny (xbmcgui) Kodi. Tady má plugin většinou jedinou možnost vybrat si, jak budou jeho data v Kodi interpretována a prezentována. A pro to má (víceméně), pouze jedinou možnost, a tou je naplnění kontejneru, s jasně danou strukturou a významem jednotlivých položek. A tady bývá ta zásadní potíž. Ne vždy to autoři pluginů dělají podle zvyklostí a pravidel. Jistě, někdy je za tím zcela jasný autorův záměr a v takovém případě nelze, než se s tím smířit. Mně jde ale o ty případy, kdy si autor zásady správného významu jednotlivých položek neuvědomuje, nebo kdy je nezná. Pokusím se pár příkladů popsat, pro identifikaci použiji "jazyk" skinu - ale protože název položek v kontejneru je v přímé relaci s parametry datových objektů v xbmcgui, mělo by to být zřejmé.

Title

Představuje primární a jasnou identifikaci dané položky. Ať už je to film, seriál, epizoda. Pokud chce tvůrce pluginu přidat nějakou další informaci, neměl by to dělat zde. Typickou chybou například je, když se do této položky v případě epizody vloží i název seriálu nebo číslo série. Do Title patří tedy pouze název daného titulu.

TVShowTitle

Obsahuje název seriálu, ke kterému daná položka (epizoda, série) patří. Problémem u pluginů bývá ne to, že je zde umístěna špatná informace, ale spíše to, že zde není umístěna informace žádná. Chybějící příslušnost epizody k seriálu se pak může projevit u widgetů nebo detailů tak, že se prostě nepozná, o jaký seriál jde. To pak často vede k tomu, že se naopak název seriálů přidává k položkám epizod, čímž se problém špatného používání eskaluje. Jedno chybné použití tak vede k druhému...

Velmi často (takřka vždy) se většina odkazů na videa u video pluginů internetových TV a podobných zdrojů, deklaruje jako epizody. Z logiky věci pak jsou pořady, v rámci kterých jsou videa deklarována, vlastně seriály. A právě tak by měly být jednotlivé položky vyplňovány. Tohle pokládám z hlediska skinu za největší problém a přitom problém jednoduše řešitelný. Ze mnou používaných video pluginů to ctí snad pouze Mall.
[attachment=5762]
Na výše uvedeném screenshotu je to hezky vidět. U widgetu Stream - Nejnovější videa (plugin TelevizeSeznam) je název pořadu (s oddělovačem "|") přidán v addon do položky Title, takže se zobrazuje ve spodním řádku popisu epizody spolu s názvem epizody, obsah TVShowTitle není vyplněný, takže horní řádek popisu je prázdný. U widgetu Mall - Nejnovější (plugin Mall) jsou správně vyplněné položky Title i TVShowTitle, takže zobrazení vypadá přesně tak, jak autoři skinu zamýšleli a jak je to i celkem přirozené a pro uživatele příjemné. Oba texty jsou vidět naráz, oba se také mohou nezávisle na sobě posouvat.

Label

Velmi často se vyskytuje názor, že v Label by mělo být to samé co je v Title a u řady pluginů to i tak bývá realizováno. Žádné takové pravidlo ale není (ostatně, kdyby to tak bylo, jaký by měla položka Label asi smysl, že?). Label je určen právě a především pro to, aby se do něj uložila informace, kterou budeme chtít mít zobrazenou v daném seznamu. Chceme-li tedy pro zobrazení k položce přidat nějakou další informaci. Např. již zmíněné přidání názvu seriálu (pořadu) nebo číslo epizody, uděláme to právě v položce Label, která je pro to určena, ale v žádném případě ne v položce Title.

Label2

Label2 obsahuje doplňkovou informaci, které se většinou používá k zobrazení v rámci seznamu položek. Typicky roku, délky videa, hodnocení, a celé řady dalších. Ale opět jen pro potřeby zobrazení, protože hodnoty uvedených informací mají své vlastní, primární položky. Skiny položku Label2 používají pro zobrazení nějaké default informace (kterou do této položky vloží scraper nebo je tam uložena v pluginu). Prakticky u všech skinů je zobrazení této kategorie informací dopočítáváno specifickým způsobem a podle dalších kritérií (typ zobrazení, způsob řazení, atd.) a teprve, pokud dopočet pro danou konstelaci nenajde žádný předpis, použije zpravidla default uložený v Label2. Dobře je to vidět na pluginu Stream-Cinema a jeho typu zobrazení Výchozí. 

Formátování textů

Kodi, umožňuje v rámci skinu, kromě volby fontů, barvy a typů písma, definovat i další vybrané parametry zobrazení textu pomocí formátovacích tagů (bold, italic, color, ...) vkládaných přímo do textu. Autoři addons je pak rádi používají při formátování svých textů. Je to sice efektní a umožňuje to plugin více individualizovat, ale má to i svou stinnou stránku. Je to v první řadě skin, který by měl určovat formátování a pokud se k tomu odhodlá autor addon, pak riskuje, že některé funkce zobrazení (ale nejen ony) nemusí fungovat 100% správně. Mohou se pak objevit vnořené tagy, na které skin neumí (nemůže) správně zareagovat a ve finálním textu se pak objevují artefakty tagů nebo nemusí vždy dobře zafungovat speciální funkce ve skinu, které se opírají o analýzu textu a pokud se v nich formátovací tagy objeví, je s nimi potíž.

Na druhou stranu je třeba říci, že zkušený skinner by měl ve specifických případech pokud možno vyvarovat použití Label a Label2 (třeba i právě proto, že se v něm mohou vyskytnou formátovací znaky) a výstupní text si ve speciálních funkcích addon sestavit z primárních informací, tedy položek jako je Title, TVShowTitle a dalších. Tohle je myslím ukázka toho, jak je důležité ctít pravidla a zvyklosti na obou stranách, jak autory addon, tak autory skinů.

Já osobně jsem Label v řadě případů použil nevhodně a tak nakonec spíš počítám s tím, že se v Label může objevit cokoliv, a pokud ho použiji, tak rozhodně bez toho, že bych do formátování zobrazení jeho obsahu jakkoliv zasahoval.
 
Citovat
#2
Protože toto téma nějak nepoutá pozornost, chtěl bych ho oživit upozorněním na pozitivní příklad. Nový autor (respektive ten, kdo se ho po osiření ujal) pluginu Aktuálně @wombat, při jedné z oprav nefunkčního doplňku (za kterou zaslouží dík především), zároveň upravil systém označování jednotlivých položek v seznamu pluginu. Konečně už widget tohoto pluginu obsahuje data ve správné struktuře, přesně tak, jak to autoři skinu zamýšleli a jak to odpovídá zásadám a pravidlům Kodi. Podívejte se na screenshot a porovnejte widget Aktuálně a Televize Seznam...
   
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)