• 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
#41
@Foolproof Jo pamatuji si, já jsme ti ale moc nepomohl. Tady tu věc mám stále ještě v ToDo a nedostal jsem s k ní. Teď si hraju s Tvheadend... Abych ti pomohl s problémem o kterém píšeš, musel bych si ten mod od Safonova nainstalovat a podívat se na to. Ale to je na delší dobu. Pošli mi na něj odkaz, ať to nemusím heldat,
 
Citovat
#42
Není to modem, dělalo to i v základním Estuary.

Mod


Kód:
https://drive.google.com/drive/folders/0B3dxcVGvjSpLSW0yNE1pdG5xMjQ

Extended info je tuším v základním repu.
Evolveo H8 - LibreElec, Kodi 17.6, Dune BD Prime 3.0, Yamaha 7.1, repro Magnat, Panasonic plasma 165 cm, video Akai, Sony MiniDisc, VU+ Solo 4K a mnoho dalšího bordelu.
 
Citovat
#43
(23.3.2017, 14:35)otava5 Napsal(a): Jak udělat přidání názvu + roku + hodnocení (někam dolu) - po najetí na plakát filmu ve widgetu ???? a bonus levý sloupec s obsahem filmu ....

Nějak takto:

je mozne to znovu nahodit lebo sa to nezobrazuje diky
[Obrázek: ZwpGsqsLSkRpj1nkCBBL-HMkb1oD_Sz9rOQ19XpR...87-h780-no]

ještě bych udělal větší opacity(ale to umím)1
/LG OLED 55"/- SoundbarSamsung HW-Q990B / BOX - Dune Homatics R 4K plus/
 
Citovat
#44
@forsajd Když se podíváš zpátky v tomto tématu, tak najdeš to, co @otava5 chtěl. Jak to hodnocení tak zobrazení obsahu při najetí na film. Je to tam poměrně podrobně popsané.
 
Citovat
#45
JiRo: soukromý dotaz... používat to ve svém skinu??? nebo ne???  18
 
Citovat
#46
@otava5 Používám a docela jsme si na to zvykl. Jsem připojen na jeden komunitní server, kde jsou klubové filmy, a mám to nasdílené do zvláštní knihovny, kterou aktualizuji automaticky vždy v noci. Neustále mi tam tak přibývají nové filmy a já v přehledu naposledy přidaných hned vidím, o co jde... Moc užitečné!
 
Citovat
#47
Cafte,

Som tu novy a skusam si nastavit skin pod JiRo ale neviem rozbehat tuto upravu Čtvrtý rozměr hlavního menu.
Inak perfektna uprava skinu. Dik

Menu sa my prepina sipkou do lava bez problemov aj ked klikne napr. na Filmy Sosac alebo aj Server tak my zobrazi, len filmy zo sosacu alebo servera a vsak ked len prepne sipkou dolava, tak my ostane plocha cista nezobrazi ziadne videne filmy ani novopridane. Plocha funguje len ako na zakladnych filmoch. Neviem ci mam dobre nastavene playlisti pripadne xml subory v /library/video. Ostatny kod je presna kopia podla tvojho navodu. 

Prikladam nastavenia xml a xps.

Kód:
<?xml version='1.0' encoding='UTF-8'?>
<node order="2" type="filter">
    <label>369</label>
    <icon>DefaultMovieTitle.png</icon>
    <content>movies</content>
    <rule field="path" operator="contain" >
        <value>\Videos\Filmy\</value>
    </rule>
    <order direction="ascending">sorttitle</order>
</node>

Kód:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="movies">
   <name>Unwatched movies</name>
   <match>all</match>
   <rule field="playcount" operator="is">
       <value>0</value>
   </rule>
   <rule field="path" operator="contain" >
        <value>\Videos\Filmy\</value>
    </rule>
    <limit>15</limit>
   <order direction="descending">random</order>
</smartplaylist>

Cesty som skusal aj menit t.j. napr. ze namiesto \Videos\Filmy tam bolo cesta ze C:\... stale to nefungovalo.

Adresare obsahuju tieto subory vid. priloha.

Este raz. Dik.


Přiložené soubory Miniatury
   
 
Citovat
#48
Tak som asi prisiel na to kde mam chybu len sa neviem s toho dako vysomarit. Hladam uz dlhsie a nenapada ma ak by ste dakto mohli pozriet na tento kod v Home.xml a pripadneho opravit, bol by som vdacny, podla mna preto sa my nezobrazuje gui pri prepinani lavou sipkou v ramci menu. Dik

Kód:
<control type="group" id="52000">
                    <visible>String.IsEqual(Container(9000).ListItem.Property(id),moviesserver)</visible>
                    <include content="Visible_Right_Delayed">
                        <param name="id" value="movies"/>
                    </include>
                    <control type="grouplist" id="52001">
                        <include>WidgetGroupListCommon</include>
                        <include content="WidgetListCategories" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/movies/moviesserver/titles.xml"/>
                            <param name="widget_header" value="$LOCALIZE[31148]"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="52900"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="special://skin/playlists/server/inprogress_movies.xsp"/>
                            <param name="widget_header" value="$LOCALIZE[31010]"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="52100"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="special://skin/playlists/server/recent_unwatched_movies.xsp"/>
                            <param name="widget_header" value="$LOCALIZE[20386]"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="52200"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="special://skin/playlists/server/unwatched_movies.xsp"/>
                            <param name="widget_header" value="$LOCALIZE[31007]"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="52300"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="special://skin/playlists/server/random_movies.xsp"/>
                            <param name="widget_header" value="$LOCALIZE[31006]"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="52400"/>
                        </include>
                        <include content="WidgetListCategories" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/movies/moviesserver/genres.xml"/>
                            <param name="widget_header" value="$LOCALIZE[135]"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="52500"/>
                            <param name="icon" value="$VAR[WidgetGenreIconVar]"/>
                            <param name="icon_height" value="70"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/movies/moviesserver/sets.xml"/>
                            <param name="widget_header" value="$LOCALIZE[31075]"/>
                            <param name="widget_target" value="videos"/>
                            <param name="sortby" value="random"/>
                            <param name="list_id" value="52600"/>
                        </include>
                    </control>
                    <include content="ImageWidget" condition="!Library.HasContent(movies)">
                        <param name="text_label" value="$LOCALIZE[31104]" />
                        <param name="button_label" value="$LOCALIZE[31110]" />
                        <param name="button_onclick" value="ActivateWindow(videos,files,return)"/>
                        <param name="button_id" value="52500"/>
                        <param name="button2_onclick" value="Skin.SetBool(HomeMenuNoMovieButton)"/>
                    </include>
 
Citovat
#49
@plavuskin Byl jsme teď delší dobu mimo, tak se na to mrknu. Vydrž...

Informace o umístění souboru s filmem nebo epizodou

Edituje se soubor Includes.xml. Informace o umístění souboru se zobrazují v pravém spodním rohu, nad audio a video atributy. Text je zarovnán doprava. Je možné zvolit si samozřejmě libovolnou šířku zobrazeného textu. Je použit typ zobrazení textu "fadelabel", takže pokud se text do zvolené šířky nevejde, roluje zprava doleva.

Ukázka pro šířku textu 550 znaků:
[attachment=2563]

Ukázka pro šířku textu 1180 znaků:
[attachment=2564]

Je těžké, najít místo a zvolit šířku zobrazeného textu tak, aby nezasahoval do informací, které jsou zobrazeny pod ním. Navíc to hodně závisí na typu zobrazení seznamu filmů nebo epizod. Vzhledem k tomu, že se text zobrazuje v pásmu spodní části obrazovky, které je ještě "zastíněno", tak to zas tolik nevadí (i když to moc ideální není). Pro text jsem tedy alespoň zvolil font, který je dost výrazný. Já používám délku textu 1880 (řádek <width>1880</width>), takže se využije téměř celá šíře obrazovky (to je výhodné zejména tehdy, pokud máte každý film umístěn ve vlastním adresáři, pak je text někdy opravdu hodně dlouhý). A proč zrovna varianta délky textu 550, kterou jsem uvedl nahoře v ukázce? Koresponduje to se šířkou zobrazení coveru (obalu DVD) u filmů u typu zobrazení Seznam.

V Includes.xml najděte  <include name="MediaFlags"> a hned za něj vložte následující kód (počínaje <control...):

Kód:
    <include name="MediaFlags">
        <control type="fadelabel">
            <right>20</right>
            <top>-26</top>
            <align>right</align>
            <width>1880</width>
            <height>44</height>
            <font>font20_title</font>
            <shadowcolor>text_shadow</shadowcolor>
            <scroll>true</scroll>
            <visible>!ListItem.IsCollection + [String.IsEqual(ListItem.DBtype,episode) | String.IsEqual(ListItem.DBtype,movie)]</visible>
            <label>$INFO[ListItem.FileNameANdPath]</label>
        </control>

Informace o umístění souboru se budou zobrazovat i v zobrazení detailu (Info -> Aktualizovat), takže je třeba ještě zrušit zobrazení, které tam už je teď. Já to dělám jenom "odkomentářováním" původního kódu. Edituje se soubor DialogVideoInfo.xml.

Najděte si níže uvedený kód a před a za něj vložte znaky pro začátek <!-- a konec --> komentáře:

Kód:
<!--
            <control type="label">
                <right>80</right>
                <top>970</top>
                <align>right</align>
                <width>1400</width>
                <height>44</height>
                <font>font20_title</font>
                <textcolor>99FFFFFF</textcolor>
                <shadowcolor>text_shadow</shadowcolor>
                <haspath>true</haspath>
                <label>$INFO[ListItem.FileNameANdPath]</label>
                <visible>Control.HasFocus(6)</visible>
                <animation effect="fade" start="0" end="100" time="300" delay="300">WindowOpen</animation>
                <animation effect="fade" start="100" end="0" time="200">WindowClose</animation>
                <animation effect="fade" start="0" end="100" time="300">Visible</animation>
                <animation effect="fade" start="100" end="0" time="200">Hidden</animation>
            </control>
-->
 
Citovat
#50
@JiRo netrap sa uz som to rozbehal uz my to ide
 
Citovat
#51
JiRo: moc pěkná úprava Estuary Easy.
 Odroid C2\→ CE 9.0.2 + Tvheadend 4.2  \ NAS Synology\ HTPC\ S905X3→ CE 20\
 
Citovat
#52
@JiRo

Mam este jednu prosbu spravil som si Online tak ako ty pouzil som na to Widget s prvej strany pre Oblubene na 5 ikon. Generuje my tam vsteky video doplnky ale ked, klinknem na ne nic sa nestane. Hral som sa s parametrom <onclick> ale neviem prist na to co tam presne zadat aby my otvaralo konkretne doplnky. Nizsie je kod. 

Ide o to ze viem to spravit ked to spravim ako Oblubene ale musim si vytvorit dalsi subor xml kde rucne pridam cesty k pluginom a pozuijme premenu $INFO[ListItem.FileNameAndPath] kde budem volat kokrteny subor xml s danymi parametrami ale chcem dosiahnut to ze ked pridam daky video doplnok tak sa automaticky zobrazi v Online (to my uz momentalne funguje) ale ked kliknem nan tak sa nic nedeje.

Dik

Kód:
<!-- Easy+ Online Widget -->
                <control type="group" id="68000">
                    <visible>String.IsEqual(Container(9000).ListItem.Property(id),addonsonline)</visible>
                    <include content="Visible_Right_Delayed">
                        <param name="id" value="addonsonline"/>
                    </include>
                    <control type="panel" id="68100">
                        <left>65</left>
                        <top>0</top>
                        <right>0</right>
                        <bottom>0</bottom>
                        <onleft>9000</onleft>
                        <onright>9000</onright>
                        <onup>68100</onup>
                        <ondown>68100</ondown>
                        <onclick>ActivateWindow(addons://sources/video,return)</onclick>
                        <preloaditems>2</preloaditems>
                        <scrolltime tween="cubic" easing="out">500</scrolltime>
                        <orientation>vertical</orientation>
                        <visible>Integer.IsGreater(Container(68100).NumItems,0) | Container(68100).IsUpdating</visible>
                        <itemlayout width="275" height="299">
                            <control type="group">
                                <top>130</top>
                                <include content="WidgetWallItem">
                                    <param name="fallback_image" value="DefaultFavourites.png" />
                                    <param name="focused" value="false" />
                                </include>
                            </control>        
                        </itemlayout>
                        <focusedlayout width="275" height="299">
                            <control type="group">
                                <depth>DepthContentPopout</depth>
                                <top>130</top>
                                <animation effect="zoom" start="100" end="110" time="200" tween="sine" easing="inout" center="170,320">Focus</animation>
                                <animation effect="zoom" start="110" end="100" time="200" tween="sine" easing="inout" center="170,320">UnFocus</animation>
                                <include content="WidgetWallItem">
                                    <param name="fallback_image" value="DefaultFavourites.png" />
                                    <param name="focused" value="true" />
                                </include>
                            </control>
                        </focusedlayout>            
                        <content>addons://sources/video/</content>
                    </control>
                    <include content="ImageWidget">
                        <param name="text_label" value="$LOCALIZE[31025]" />
                        <param name="button_label" value="$LOCALIZE[31116]" />
                        <param name="button_onclick" value=""/>
                        <param name="button_id" value="8600"/>
                        <param name="visible" value="!Integer.IsGreater(Container(68100).NumItems,0) + !Container(68100).IsUpdating"/>
                        <param name="visible_1" value="false"/>
                        <param name="button2_onclick" value="Skin.SetBool(HomeMenuNoFavButton)"/>
                    </include>
                </control>
 
Citovat
#53
@plavuskin Chyba je skutečně v <onclick>... Správně by to mělo být:

<onclick>RunAddon($INFO[ListItem.Property(Addon.ID)])</onclick>
 
Citovat
#54
Dik. Funguje
 
Citovat
#55
Online Video News Widget

Už delší dobu používám tento widget a patří mezi mé nejoblíbenější. Je určen pro Online videa (video doplňky), u kterých v čase relativně rychle přibývají nová videa a u kterých chcete mít zajištěný přehled o novinkách. Na stránce widgetu můžete zobrazit několik zdrojů a pro každý zdroj časovou řadu s náhledy videí, setříděné od nejnovějších. Stačí pak jediný pohled, případně jednoduché scrolování, a vidíte, co nového přibylo. Pak už stačí najet na příslušný náhled a příslušné video rychle spustíte. Asi nejvíc napoví screenshot.
[attachment=2622]

Edituje se samozřejmě home.xml v části, kde jsou definice widgetů. Je třeba vybrat si nějaké nepoužité id widgetu (číselné i textové), a na to pak odkázat z příslušné položky hlavního menu. Widget jsem "ořezal" až na kost, jsou v něm pouze nezbytně nutné části. Není tam tedy ani kontrola existence video doplňků jako u standardního widgetu.

Kód widgetu (v mém případě s id=56000 a "onlinefavorites") je zde:
Kód:
                <control type="group" id="56000"> <!-- Easy+ Online Favorites -->
                    <visible>String.IsEqual(Container(9000).ListItem.Property(id),onlinefavorites)</visible>
                    <include content="Visible_Right_Delayed">
                        <param name="id" value="onlinefavorites"/>
                    </include>
                    <control type="grouplist" id="56001">
                        <include>WidgetGroupListCommon</include>
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.dmd-czech.aktualne/?mode=1&amp;name=DVTV&amp;url=dvtv"/>
                            <param name="widget_header" value="DVTV"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56100"/>
                        </include>
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.seznam.zpravy/?mode=1&amp;name=V%c5%a1e&amp;plot&amp;url=https%3a%2f%2fapiclanky.seznam.cz%2fv1%2funitedarticletimelines%3fservice%3dzpravy"/>
                            <param name="widget_header" value="Seznam Zprávy"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56200"/>
                        </include>
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.youtube/channel/UCtI0Hodo5o5dUb67FeUjDeA/"/>
                            <param name="widget_header" value="SpaceX"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56300"/>
                        </include>
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.seznam.zpravy/?mode=1&amp;name=%c5%a0%c5%a5astn%c3%a9%20pond%c4%9bl%c3%ad&amp;plot&amp;url=https%3a%2f%2fapiclanky.seznam.cz%2fv1%2farticles%3flimit%3d30%26sections%3d582c5f8d16042b01cd2d0fe2%26service%3dzpravy%26embedded%3dlayout%2cservice%2cauthors%2cseries%2ccontent.properties.embeddedDocument.service"/>
                            <param name="widget_header" value="Šťastné pondělí"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56400"/>
                        </include>
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.seznam.zpravy/?mode=1&amp;name=Zvl%c3%a1%c5%a1tn%c3%ad%20vy%c5%a1et%c5%99ov%c3%a1n%c3%ad&amp;plot&amp;url=https%3a%2f%2fapiclanky.seznam.cz%2fv1%2farticles%3flimit%3d30%26sections%3d58113452cb2d9825d0c4ee92%26service%3dzpravy%26embedded%3dlayout%2cservice%2cauthors%2cseries%2ccontent.properties.embeddedDocument.service"/>
                            <param name="widget_header" value="Zvláštní vyšetřování"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56500"/>
                        </include>                    
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.dmd-czech.stream/?mode=3&amp;name=%5bB%5d%5bCOLOR%20blue%5dEpizody%20%3e%3e%5b%2fCOLOR%5d%5b%2fB%5d&amp;url=http%3a%2f%2fwww.stream.cz%2fAPI%2fseason%2f2446%3fdirection%3dbackward"/>
                            <param name="widget_header" value="Odvážné palce"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56600"/>
                        </include>
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.dmd-czech.stream/?mode=3&amp;name=%5bB%5d%5bCOLOR%20blue%5dEpizody%20%3e%3e%5b%2fCOLOR%5d%5b%2fB%5d&amp;url=http%3a%2f%2fwww.stream.cz%2fAPI%2fseason%2f3037%3fdirection%3dbackward"/>
                            <param name="widget_header" value="Pořad Luďka Staňka"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56700"/>
                        </include>
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.dmd-czech.aktualne/?mode=1&amp;name=(Za)bij%c3%a1k%20Kamila%20Fily&amp;url=zabijak-kamila-fily"/>
                            <param name="widget_header" value="(Za)biják Kamila Fily"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56800"/>
                        </include>
                        <include content="WidgetListEpisodes" condition="true">
                            <param name="content_path" value="plugin://plugin.video.dmd-czech.playtvak/?mode=2&amp;name=Single%20Lady%3a%20J%c3%adzda%20v%20%c3%93%c4%8dku&amp;page=1&amp;url=http%3a%2f%2fwww.playtvak.cz%2fsingle-lady-jizda-v-ocku.aspx"/>
                            <param name="widget_header" value="Single Lady"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="56900"/>
                        </include>
                    </control>
                </control>

Co je v případě tohoto widgetu hodně důležité (možná daleko nejdůležitější) je to, jak získat odkaz na příslušný seznam videí, což je ta část widgetu v tagu  <param name="content_path" value="plugin://plugin.video.dmd-czech... ">. Na to mám celkem jednoduchý postup:
  1. v příslušném video doplňku, si najedete na tu volbu, po které by se vám zobrazil (pokud byste si ji vybrali) seznam videí, který chcete do widgetu vložit
  2. místo výběru si ale tuto volbu uložíte do Oblíbených (tlačítko contex menu na DO nebo kláveas "C" na klávesnici)
  3. otevřete si soubor .../userdata/favourites.xml a najdete příslušný odkaz. Poslední vložený odkaz do oblíbených je vždy na konci seznamu. Zajímá nás text mezi mezi uvozovkami (pozor, v tomto souboru jsou uvozovky zadány metakódem &quot;), který vkopírujete mezi uvozovky výše uvedeném tagu widgetu.
  4. uložíte, restartujete skin a můžete si užívat...
Takto lze do widgetu vložit většinu seznamů z většiny video doplňků. Zatím jsem narazil na jeden, kde to nefungovalo - Stream Cinema CZ a SK, u položky Moje Seznamy - což je seznam z Trakt a patrně se tyto seznamy vytváří jinak, než ostatní.

Omezení
  • Je třeba si uvědomit, že tento widget je náročný jak na výkon, tak na paměť. Žere tedy zdroje. Takže pokud jedete na svém HW na doraz, nebude jeho použití příliš ideální.
  • Některé video doplňky, pokud jsou jejich seznamy zařazeny do widgetu, při každém zobrazení widgetu aktualizují zobrazení a zobrazují okno s hláškou o aktualizaci, což působí rušivě a způsobuje to nepříjemné prodlevy při zobrazení widgetu. Konkrétně to dělá například populární doplněk plugin.video.dmd-czech.aktualne. V případě tohoto doplňku se tomu dá odpomoci drobnou úpravou kódu doplňku. Pokud bude zájem, mohu úpravu zveřejnit.
 
Citovat
#56
Ahoj. Mám takto udělaný Widget ze Stream Cinema .... Ale asi trošku jinak....
Koukni...
Vlastně Kodi stavím hlavně na tomto pluginu... Dřív takto jsem měl i Sosáč ale ten upadnul do ústraní u nás :-)
1


Přiložené soubory Miniatury
       
 
Citovat
#57
No jo, to vypadá moc dobře. Máš to pěkně vymyšlený.
 
Citovat
#58
@otava5 Inspiroval jsem se a přidal si do widgetu knihovny filmů odkaz do pluginu Stream Cinema na Nově přidané filmy s tím, že budu mít seznam filmových novinek. Teprve v té chvíli jsme si uvědomil jak je ten seznam v pluginu default setříděný. Jednak samozřejmě třídí včetně určitých členů (The), což mám v Kodi vypnuté, takže ten seznam ve widgetu je trochu jiný jak v pluginu. Ale tomu rozumím, to je tak trochu podobný problém jako s naším "ch" a většinou to neanglicky mluvící programátoři přehlížejí.

Ale co je důležitější, je řazení filmů v seznamu. Když si dám řadit filmy podle data přidání, objeví se v seznamu všechny filmy, které přibyly v poslední době. Tedy i ty které vznikly v minulosti, ale byly do pluginu přidány teprve nyní. Když si dám řazení podle roku vzniku, dostanu sice seznam nových filmů, ale protože v jednom roce jich vzniklo pochopitelně víc, jsou v rámci tohoto roku seřazeny podle abecedy. Ono je to asi správně, dobře se v tom hledá. Ale pokud bych chtěl přistupovat k seznamu jako  "Nově přidané filmové novinky", tak na začátku seznamu ty nejnověji přidané filmy z letošního roku většinou nenajdu. Budou někde uprostřed, podle toho, kterým písmenem jejich název začíná.

Zkoušel jsme laborovat, zda je možné třídit podle dvou kritérií nebo něco podobného, ale úspěšný jsem nebyl.
 
Citovat
#59
Menu v menu

Používám úpravu Čtvrtý rozměr hlavního menu, popsaná je zde. Je návyková, hodně zjednodušuje ovládání Kodi, má jen jeden drobný nedostatek. Při přepínání položek v menu (levá šipka), není vidět, které menu bude následovat. Cílem popisované úpravy je tedy dostat do položky v menu informaci o dalších dostupném obsahu. Zadání bylo celkem jednoduché:
  • přehled o dalších dostupných položkách se objeví pouze u aktuálně vybrané položky - tato podmínka je celkem logická, pokud by se varianty dalších položek zobrazovaly trvale u všech položek, bylo by hlavní menu značně nepřehledné
  • přehled by měl umožňovat alespoň základní orientaci - aktuální položka, předchozí položka, následující položka
Řešení se ukázalo překvapivě jednoduché:

V hlavním menu je vybrána jednoduchá položka, tzn. položka, která neobsahuje další varianty: 
[attachment=2630]
vybrána položka s více variantami, v jejím popisu se objeví předcházející a následující položka 
[attachment=2631]
přepnutí na další variantu (šipkou doleva), seznam se posune nahoru (zatím bez animace)... 
[attachment=2632]

Edituje se home.xml, část definice hlavního menu, hledejte ho v části  následující za tagem <control type="fixedlist" id="9000">

Vlastní přidání zobrazení předcházející a následující varianty položky je v části následující za <focusedlayout height="95">. Doplňuje se pouze tato část, protože chceme, aby se zobrazení předcházející a následující varianty položky objevilo pouze u vybrané (focused) položky.

Najdete kód zobrazení názvu položky:
Kód:
                        <control type="label">
                            <left>104</left>
                            <top>0</top>
                            <height>95</height>
                            <width>560</width>
                            <aligny>center</aligny>
                            <font>font37</font>
                            <label>[B]$INFO[ListItem.Label][/B]</label>
                            <shadowcolor>text_shadow</shadowcolor>
                        </control>

a za něj umístíte následující kód:
Kód:
                        <control type="label">
                            <left>107</left>
                            <top>0</top>
                            <height>95</height>
                            <width>560</width>
                            <aligny>center</aligny>
                            <font>font10</font>
                            <label>$INFO[ListItem.Label2]</label>
                            <shadowcolor>text_shadow</shadowcolor>
                        </control>

Pro zobrazení textu předcházející a následující varianty položky se používá ListItem.Label2, který je tedy třeba v jednotlivých definičních položkách menu (items) hlavního menu, naplnit. Níže je příklad tří položek, pro tři varianty obsahu položky zobrazení video doplňků (odpovídá to výše uvedených screenshotům):
Kód:
                        <item>
                            <label>Online</label>
                            <label2>Online Aktuálně[CR][CR]Online Favorites</label2>
                            <property name="menu_id">$NUMBER[51000]</property>
                            <onclick>ActivateWindow(videos,addons://sources/video/,return)</onclick>
                            <thumb>icons/sidemenu/videos.png</thumb>
                            <property name="id">online</property>
                            <property name="filter">online</property>
                            <visible>!Skin.HasSetting(HomeMenuNoOnlineButton) + String.IsEqual(Skin.String(OnlineFilter),online)</visible>
                        </item>
                        <item>
                            <label>Online Favorites</label>
                            <label2>Online[CR][CR]Online Atuálně</label2>
                            <property name="menu_id">$NUMBER[56000]</property>
                            <onclick>ActivateWindow(videos,addons://sources/video/,return)</onclick>
                            <thumb>icons/sidemenu/videos.png</thumb>
                            <property name="id">onlinefavorites</property>
                            <property name="filter">online</property>
                            <visible>!Skin.HasSetting(HomeMenuNoOnlineButton) + String.IsEqual(Skin.String(OnlineFilter),onlinefavorites)</visible>
                        </item>
                        <item>
                            <label>Online Aktuálně</label>
                            <label2>Online Favorites[CR][CR]Online</label2>
                            <property name="menu_id">$NUMBER[57000]</property>
                            <onclick>ActivateWindow(videos,addons://sources/video/,return)</onclick>
                            <thumb>icons/sidemenu/videos.png</thumb>
                            <property name="id">onlineaktualne</property>
                            <property name="filter">online</property>
                            <visible>!Skin.HasSetting(HomeMenuNoOnlineButton) + String.IsEqual(Skin.String(OnlineFilter),onlineaktualne)</visible>
                        </item>

Závěr:
  • je pravda, že uvedené řešení není 100% logické - seznam se posunuje nahoru, ale ovládá se šipkou doleva. To je ale daň za omezené možnosti interakce v rámci hlavního menu - šipka doleva je jediný volný ovládací prvek, který bylo možný použít
  • zkoušel jsem různé varianty organizace seznamu, včetně horizontální verze, které by byla přirozenější, ale při něm je problém s místem. Použité řešení se nakonec ukázalo jako celkem přijatelné
  • ještě si plánuji pohrát si s animaci, ale to už je jen drobnost...
 
Citovat
#60
Začlenění addon Stream Cinema do "knihovny"

K trochu nelogickému titulku a úpravě mě inspiroval @otava5, který s tímto řešením přišel. Pravda, už před tím jsem se spouštěním addon z položky knihovny laboroval, ale ke komplexnímu řešení ovládání celého pluginu jsme se dostal až teď, co jsme viděl jeho pěkné řešení zde. Díky!

Nejdříve je třeba vysvětlit ty uvozovky v "knihovny". Nejedná se o klasické začlenění obsahu, to má ostatně addon v sobě, ale o vytvoření konformní prezentace a způsobu ovládaní s nativními funkcemi Kodi (Filmy a Seriály). Pro řešení jsme se rozhodl využít zásadně pouze standardní knihovní funkce, především tedy vytvoření nového "parent node", který jsem nazval Filmy Cinema. Už název napovídá, že v tomto node se odehrají především všechny záležitosti týkající se filmů. Plánuji samozřejmě vytvořit podobný node i pro seriály.

Pro vytvoření a správu node je v Kodi standardní funkce (+addon Library Node editor), ten já ale, až na výjimky nepoužívám. Veškerou parametrizaci a vytvoření parent node i jeho jednotlivých node řeším editací souborů uložených v .../library/userdata/library/video. Pro Filmy Cinema jsme vytvořil vlastí adresář moviescinema a do něj umístil definiční soubory, jak samotného parent node (index.xml), tak jednotlivých node tohoto parent node. Jejich názvy (z piety k autorům Kodi dodržuji angličtinu) pak už odpovídají celkem zřejmě jednotlivým položkám menu v addon Stream Cinema (většinou ze submenu Filmy, pár jich je i ze základního menu). Jeden node je vyhrazen pro spouštění vlastního addon StreamCinema (addon.xml). Některé položky menu své node nemají, mne např. nezajímá Anime, a také nepoužívám u tohoto addon Trakt. Ten mám aktivní pouze pro filmy a seriály, které mám uložená v klasické knihovně Kodi!

.../library/userdata/library/video
[attachment=2633]

.../library/userdata/library/video/moviescinema
[attachment=2634]

Tento způsob vytváření parent node a node je velice rychlý a jednoduchý vyžaduje však jistou pečlivost. Musíte samozřejmě dodržet syntaxi. I drobná chyba může způsobit velké problémy. Nejsou nijak fatální, vaše Kodi se kvůli ní nezhroutí, ale chyba se špatně hledá. V případě, že máte vše odladěno a hotovo, můžete pak celou definici přenést na libovolný další systém. Stačí jen překopírovat celý adresář, restartovat Kodi a je hotovo.

Jak už jsem napsal, občas Node editor také používám a to pouze z jednoho důvodu. Když potřebuji změnit pořadí node. To má význam při řazení ve widgetu, kde se používá zobrazení tzv. kategoií (což jsou v podstatě node). Pořadí node se definuje v jednotlivých souborech, viz tag  <node order="30" type="folder"> a pokud ho chcete změnit, msuíte editovat všechny soubory, kterých se to dotkne, mít přehled o jednotlivých hodnotách order, atp. V Node editoru je to raz dva a máte navíc jistotu, že je to správně!

Důležité, při naplnění node, co se týče vazby na addon Stream Cinema, je vložení řetězce pro spuštění addon v příslušném bodě. Pro získání používám už prezentovaný trik, tzn. odložit si uvedený odkaz do Oblíbených a pak si příslušný řetězec zkopírovat ze souboru .../userdata/favorites.xml (neplést s favorites.xml definující příslušný node). Příklad obsahu souboru recentlyaddedmovies.xml, který obsahuje řetězec pro spuštění addon v bodě Nově přidané (filmy):
Kód:
<?xml version='1.0' encoding='UTF-8'?>
<node order="10" type="folder">
    <label>Nově přidané</label>
    <icon>DefaultRecentlyAddedMovies.png</icon>
    <path>plugin://plugin.video.stream-cinema/?cp=637a736b6c6962&amp;list=687474703a2f2f73747265616d2d63696e656d612e6f6e6c696e652f6b6f64692f4d6f766965732f6e657773747265616d</path>
</node>

Jak vypadá parent node Filmy Cinema a jeho všechny node pohledem z Kodi, je zde:
[attachment=2637] [attachment=2638]

Dalším krokem je samozřejmě začlenění do skinu. Abych naplnil to, co jsme si předsevzal, tedy aby ovládání funkcí pluginu bylo co nejvíce podobné základním funkcím (Filmy a Seriály), použil jsem obvyklé řešení s widgetem, který je upravenou kopií widgetu filmů. V tomto případě se ukáže výhoda standardních funkcí, není třeba vytvářet žádné uživatelské playlisty, stačí pouze odkázat na parent node (tedy jeho adresář, v případě kategorií) nebo na vybrané nodes:
Kód:
                <control type="group" id="57000"> <!-- Easy+ Movies Cinema -->
                    <visible>String.IsEqual(Container(9000).ListItem.Property(id),moviescinema)</visible>
                    <include content="Visible_Right_Delayed">
                        <param name="id" value="moviescinema"/>
                    </include>
                    <control type="grouplist" id="57001">
                        <include>WidgetGroupListCommon</include>
                        <include content="WidgetListCategories" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/moviescinema/"/>
                            <param name="widget_header" value="$LOCALIZE[31148]"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="57900"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/moviescinema/recentlyaddedmovies.xml"/>
                            <param name="widget_header" value="Nově přidané"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="57100"/>
                            <param name="sortby" value="year"/>
                            <param name="sortorder" value="descending"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/moviescinema/favorites.xml"/>
                            <param name="widget_header" value="Nejsledovanější"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="57200"/>
                            <param name="sortby" value="year"/>
                            <param name="sortorder" value="descending"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/moviescinema/concerts.xml"/>
                            <param name="widget_header" value="Koncerty"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="57300"/>
                            <param name="sortby" value="year"/>
                            <param name="sortorder" value="descending"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/moviescinema/recentlyaddedstreams.xml"/>
                            <param name="widget_header" value="Nově přidané streamy"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="57400"/>
                            <param name="sortby" value="year"/>
                            <param name="sortorder" value="descending"/>
                        </include>
                        <include content="WidgetListPoster" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/moviescinema/tvtoday.xml"/>
                            <param name="widget_header" value="TV dnes"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="57500"/>
                        </include>
                        <include content="WidgetListCategories" condition="Library.HasContent(movies)">
                            <param name="content_path" value="library://video/moviescinema/tvtwoweaks.xml"/>
                            <param name="widget_header" value="TV program na 14 dní"/>
                            <param name="widget_target" value="videos"/>
                            <param name="list_id" value="57600"/>
                        </include>
                    </control>
                </control>

Poslední co zbývá vyřešit (rozhodnout), co bude parametrem volání položky hlavního menu. Já jsem si v tomto případě zvolil položku Filmy v hlavním menu addon, tedy příkaz v položce hlavního menu je:

ActivateWindow(Videos,"library://video/moviescinema/titles.xml",return)

A ještě několik ukázek:
[attachment=2642] [attachment=2641] [attachment=2640] [attachment=2639]

Závěr:
  • někomu se možná uvedený postup bude zdát příliš komplikovaný a hlavně zbytečný. Po zkušenostech s léty provozu mediálních center, jsem pořídil jednu zkušenost s jejich uživateli (a zejména ženami). Čím méně zvláštních postupů, jak tu kterou funkci využívat, tím více je budou uživatelé používat. Proto se snažím základní ovládání jednotlivých funkcí co nejvíce přiblížit. Proto jsem opustil pluginy pro internetová rádia, a jejich streamy začal přijímat v Tvheadend. Podobně to dopadlo i s IPTV streamy. Že je to správná cesta jsem si potvrdil dnes. Když jsem zprovoznil nový widget Filmy Cinema, dostal jsme otázku: "A kdy to bude stejné i pro seriály?
  • Nejsem si 100% jistý, jak se budou odkazy uložené do node chovat po přeinstalaci pluginu. Upřímně řečeno nevím, jak se vlastně generují. Ale to ukáže čas. Je fakt, že odkazy v Oblíbených fungují dlouhodobě, tak snad budou dlouhodobě fungovat i zde.
 
Citovat
  


Přejít na fórum:


Prochází: 2 host(ů)