• 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:
  • 4 Hlas(ů) - 2 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Video pluginy a skiny - pro autory doplňků
#7
Vkládání funkcí do contentu seznamu playable položek

Velmi často autoři doplňků ve snaze nabídnout uživatelům dokonalé funkce, používají řešení, kdy do seznamu přehratelných položek, nejčastěji jeho začátku nebo konci, vloží odkazy na aktivaci nějakých funkcí. Bylo a je to vidět jak na legendárním Stream Cinema Community, tak na stále ještě funkčním Stream Cinema, ale podobné řešení se objevilo i na zcela novém doplňku Nokturno, autora @matata:. Což je obzvlášť škoda, protože se zdá, že se ten doplněk začíná stávat poměrně populární.

O co konkrétně jde, budu asi nejlépe dokladovat na následujcíích screenshotech. Na prvním je vidět volba funkce TV program na základní úrovni menu doplňku. Na druhém, jaký seznam se po jejím zvolení zobrazí a na třetím, jak to dopadne, když tento seznam zadám jako zdroj widgetu.

Myslím, že to problém, který se tu snažím popsat a případně řešit, celkem jasně vysvětluje.

Snažil jsme se v průběhu doby (od prvních pokusů už proběhlo několik let) tento problém řešit na několika úrovních:
  1. Začal jsm tím, co je mi nejbližší, tedy do skinu nějak dostat možnost, že se pro daný widget přeskočí prvních n-položek a začnou se zobrazovat až od té n+1. Skin engin tuto možnost nenabízí a i když jsme se o tom snažil diskutovat i s členy Kodi teamu, zda by se nedalo změnit, nebyl jsem v té době úspěšný. Bylo tedy jasné, že to na úrovni skinu nevyřeším. Nevím, jaká je situace dnes, své řešení mám, cestu k němu popíši dále, takže jsem se o další vývoj těchto funkcí skin enginu už nezajímal.
  2. V dalších pokusech jsem se tedy soustředil na možnost, jak zdroj skinu "přesvědčit", aby ve chvíli, kdy je zobrazován ve widgetu, prvních n položek nezobrazil. V každém případě by to samozřejmě znamenalo, že bych tuto funkci musel do doplňku, jako jeho autor, doplnit. A tak se postupně stalo. Se střídavými úspěchy. Dokonce jsme si postupně vypracoval i několk variant řešení, které jsem u mých vlastních doplňků používal, takže se mohou stát předlohou k úvahám ostatních autorů:
    1. První verzí byl, doplnit volání dané úrovně dalším parametrem (...&widget=1&...) a pokud se v řetezci volání vyskytl, dopněk ze seznamu vyloučil specifické položky. Existovalo ještě nekolik podvariant, kdy se do parametrů například přidával počet vyloučených položek na začátku i konce seznamu, případně ještě i další. Tohle fungovalo a funguje dobře. Mělo to jen nevýhodu v tom, že pokud se widgety definovaly u skinů, kde se jejich zdroj zdával v ráci nastavení (sofistikované skiny z rodiny Arctic Horizon, Titan, Aura, ...), ted kdy nešlo o editaci definičního souboru, ale definice widgetů byla součástí nastavení. Tady to  znamenalo postupovat nadvakrát. Nejdříve definovat zdroj a pak do jeho řetězce doplnit příslušné parametry pro widget.
    2. Pak přišel nápad na úplnou automatizacei zadávání. V doplňku se u každého seznamu, který takové vložené funkce obsahoval, se kontrololovalo v jakém okně je seznam použit. Pokud tím oknem bylo Home, tak se předem definované položky do seznamu nepromítly. Zdále se to být jako geniální nápad, ale brzy se ukázalo, že ne tak úplně. Widget se totiž může aktualizovat i ve chvíli, kdy není v Home okně zobrazen, a v takovém případě se do seznamu znova dostaly ony nežádoucí položky.
    3. Nevýhody předchozího řešení jsem se pak snažil eliminovat tím, že jsem ještě zavedl pro každý dopněk specifickou property, do které jsem zapisoval stav, kdy doplněk běží, ale ukázalo se, že je to poměrně náchylné na chyby při nestandardním chování Kodi.
    4. Nakonec zvítězilo řešení, které se ukázalo jako nejspolehlivější, a svým způsobem vycházelo z toho prvního (a). Znamenalo to ale v routeru doplňku, pro ty položky menu, pro které to mělo smysl (tedy pro ty, co se mohou stát zdrojem widgetu), vytvořit dvě větve. První, která se zobrazovala a tvořila vlastně ui daného doplňku, druhá, která se nezobrazovala, ale sloužila pokuze k definici zdroje widgetu. Zdá se to být trochu komplikované, ale pokud doplněk navrhuje a programuje někdo, kdo ví, jak taková ideální struktura může (a má) vypadat, velkým problémem přidání další vrstvy v router nepředstvuje. Mohlo to vypadat například takto. Pro volání v základní větvi:
      Kód:
      plugin://plugin.video.doplnek/movies/trending/
      a pro volání ve větvi pro widgety:
      Kód:
      plugin://plugin.video.doplnek/widget/movies/trending/
 
Ale to není všechno...


Výše uvedný přístup ale vycházel z předpokladu, že do seznamu playable položek prostě ty jiné vkládat potřebujeme. Jistě, jsou takové, bez kterých se v Kodi a zejména video doplňcích neobejdeme. Za všechny typická položka Další stránka... (i když i tady se dá najít jisté řešení, ale to si nechám na někdy jindy). Ale co ty položky z výše uvdeného screenshotu Nokturna? Jsou tam vůbec potřeba? Jaké je jejich funkce:
  1. Umožňují změnit nastavené jednotlivých položek filtru
  2. Nastavení jednotlivých položek filtru zobrazují
Vlastní nastavení je už řešeno mimo rámec pluginu. Pro to, abychom tyto položky dostali ze seznamu, tedy potřebujeme:
  1. Zajistit aktivaci příšlušných funkcí - na to se dá velmi jednoduše použít kontextové menu, kde se v 1. úrovni jeho zobrazení zopakuje přesně to, co je dnes zobrazeno v prvních čtyřech položkách seznamu, a pak už je to vlastrně stejná jako teď...
  2. U zobrazení už to bude trochu složitější, protože v zobrazeném seznamu položek video pluginu pro to žádné další místo není. Ale myslím, že úplně postačí, pokud se aktuální nastavení filtru zobrazí v plot položky TV Program v hlavním menu doplňku. Ostatně i u této položky bude v kontext menu možnost volby nastavení filtru.
Jak pak práce uživatele vypadá:
  • zobrazení hlavního menu doplňku
  • najetí na položku TV Porgram
    • v plot vidí uživatel nastavení filtru
      • pokud je s ním spokojen, pokračuje volbou TV Program
      • pokud ne, v kontext menu spustí nastavení filtru
  • volba TV Program
  • zobrazení seznamu podle aktuálního nastavení filtru
    • pokud je s ním spokojen, pokračuje výběrem a spuštěním přehrávání pořadu
    • pokud ne, v kontext menu spustí nastavení filtru

A mimochodem, když už jsem se tak otřel o doplněk Nokturno (který ale pokládám za velmi podařený), doporučil bych, aby autor věnoval větši pozornost tomu, co se zobrazuje v záhlaví jeho seznamů. To, že doplněk ne vždy zobrazuje obsah podle toho, v jaké větvi menu doplňku se uživatel právě nachází, je škoda.

Když jsem v předchozím příspěvku použil jako příklad pro ne úplně optimálního řešení doplňku v jedné z jeho funkcí doplněk Nokturno, tak bych tu měl explicitně uvést něco, co je s ohledem na témata v tomo vlákně u tohoto doplňku, kromě celé řady jiných aspektů, potřeba vyzdvihnout. A to je správné použití položet Title a Label. Psal jsem o tom v tomto tématu hned v 1. příspěvku #1.
 
Citovat
  


Příspěvků v tématu
RE: Video pluginy a skiny - pro autory doplňků - od JiRo - 11.10.2026, 18:00

Přejít na fórum:


Prochází: 1 host(ů)