XBMC-Kodi.cz
Estuary Easy - Verze k tisku

+- XBMC-Kodi.cz (https://www.xbmc-kodi.cz)
+-- Fórum: KODI - software (https://www.xbmc-kodi.cz/forum-kodi-software)
+--- Fórum: Skiny (https://www.xbmc-kodi.cz/forum-skiny)
+--- Téma: Estuary Easy (/prispevek-estuary-easy)

Stran: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29


RE: Estuary Easy - meda - 26.3.2023

YAWsP má právě tuto funkci. SCC se mi aktualizoval na v.1.15.0, sám Hledání ve Webshare nenabízí.


RE: Estuary Easy - JiRo - 26.3.2023

@meda Jak to myslíš: "sám Hledání ve Webshare nenabízí."? Kdo/co ji nenabízí? SCC? Ale to ji právě nově nabízí. Najdeš ji v kontextovém menu položky Hledat v hlavním menu SCC.


RE: Estuary Easy - meda - 26.3.2023

Aha, takhle. Já to Hledat mám ve Skryté (plus další, abych měl krátké menu) a tam se nová položka kontextu nenabídne.
((Proč jsem napsal ve větě slovo "sám" nevím, asi jsem chtěl napsat "u mně".))


RE: Estuary Easy - JiRo - 05.4.2023

Nové a hóóóódně užitečné funkce v Kodi Nexus

V Kodi Nexus se  nových funkcí objevilo poměrně dost a některé z nich se také týkají skinů. Asi nejzajímavější jsou funkce, které umožňují ve skinu získat hodnotu z nastavení libovolného addon. Tedy to, co jsem já doposud řešil načítáním (případně i parsováním) settings.xml soubrů pomocí nějakého scriptu. Teď stačí použít jednu z trojice funkcí pro

logickou hodnotu nastavení:
 
Kód:
Addon.SettingBool(addon_id,setting_id)

numerickou (integer) hodnotu nastavení:
 
Kód:
Addon.SettingInt(addon_id,setting_id)

a nakonec i řetězcovou hodnotu nastavení:
Kód:
Addon.SettingStr(addon_id,setting_id)

EDIT 2023-05-01
Při pokusu použít jednu výše uvedených funkcí (infolabel-ů) v jednom doplňku jsem bohužel zjistil, že tyto funkce fungují pouze v rámci vyhodnocování podmínek a není možné je použít pro zobrazení obsahu pomocí $INFO (tedy u těch, u kterých by to dávalo smysl, tedy ...Str a ...Int). Nevím, jestli je to bug nebo záměr autorů Kodi, ale každopádně to tak je.


RE: Estuary Easy - JiRo - 16.4.2023

Stream Cinema Community špeky...
... a jejich řešení

Addon SCC obsahuje, kromě výborných funkcí, i pár "špeků", na které narazíte, pokud se ho pokusíte více než obvykle integrovat do skinu. A je často jedno, zda je to nějaký váš mod nebo nějaký sofistikovanější skin, který integraci podporuje nativně.

Funkce Hledat

Velmi povedená funkce, jak obsahem, tak provedením. To zdánlivě jednoduché provedení, kdy po volbě vyskočí hned obrazovka virtuální klávesnice Kodi pro zadání textu, je vykoupeno netradičním postupem, který způsobí, že když si tuto funkce uložíte do oblíbených nebo použijete jako vstup do nějaké položky menu ve vašem skinu, tak to nedopadne úplně 100%. Nebudu popisovat, proč to tak je, znalci to jistě pochopí po shlédnutí obsahu favourites.xml poté, co tuto položku menu do Oblíbených uloží.

Řešení je jednoduché, ale musí se pro něj použít addon, který sa pak ve skinu, na místě uložení této položky, zavolá. Znamená to tak doplnit skin nějakým dalším addon, i když velmi jednoduchým. Pro to, co od něj potřebujeme, tedy zavolat SCC se specifickými parametry, bude třeba aby obsahoval dále uvedený kód:
 
Kód:
.
.
.
LANGUAGE_CINEMA = xbmcaddon.Addon('plugin.video.stream-cinema-2-release').getLocalizedString
.
.
.
keyboard = xbmc.Keyboard('', LANGUAGE_CINEMA(30207), False)
keyboard.doModal()
if (keyboard.isConfirmed()):
    searchstring = keyboard.getText()
    command='ActivateWindow(videos,plugin://plugin.video.stream-cinema-2-release/get_media/?media_type=%2A&render_type=search&url=%252Fapi%252Fmedia%252Ffilter%252Fv2%252Fsearch%253Fvalue%253D{0}%2526order%253Ddesc%2526sort%253Dscore%2526type%253D%25252A%2526size%253D50?,return)'.format(searchstring)
    xbmc.executebuiltin(command)
.
.
.
Popsal jsem jen podstatné fragmenty, tu omáčku kolem si už doplníte sami podle toho, jak budete addon koncipovat.

Hledat na Webshare

Tato funkce je řešena trochu jinak, ale v konečném důsledku si ji také úplně jednoduše ve skinu nezavoláte. Kód je tedy analogický. Opět uvádím příklad, jak by to vypadalo, když by byla řešena samostatně. Pokud ji ale ve vašem addon spojíte s tou předchozí, budou moci být určité části kódu společné.
 
Kód:
.
.
.
LANGUAGE_CINEMA = xbmcaddon.Addon('plugin.video.stream-cinema-2-release').getLocalizedString
.
.
.
keyboard = xbmc.Keyboard('', LANGUAGE_CINEMA(30450), False)
keyboard.doModal()
if (keyboard.isConfirmed()):
    searchstring = keyboard.getText()
    command='ActivateWindow(videos,plugin://plugin.video.stream-cinema-2-release/search_webshare?search_value={0}?,return)'.format(searchstring)
    xbmc.executebuiltin(command)
.
.
.
V konečném, důsledku pak můžete obě funkce například integrovat do obecné funkce Hledat v Kodi, definované v souboru Custom_1107_SearchDialog.xml. Část jeho definice, pro obě funkce SCC Hledat a Hledat na Webshare, pak může vypadat takto:
 
Kód:
                    <item> <!-- EASY* -->
                        <label>Stream Cinema Community</label>
                        <onclick>Dialog.Close(all)</onclick>
                        <onclick  condition="Skin.HasSetting(skin_helper)">RunAddon($INFO[Skin.String(skin_id)],search)</onclick>
                    </item>
                    <item> <!-- EASY* -->
                        <label>Webshare</label>
                        <onclick>Dialog.Close(all)</onclick>
                        <onclick  condition="Skin.HasSetting(skin_helper)">RunAddon($INFO[Skin.String(skin_id)],search_webshare)</onclick>
                    </item>
Výsledek pak může vypadat takto:
   
Já jsem si to ještě vylepšil tím, že na dálkovém ovladačí používám tlačítko Search (používám v CE nevyužité tlačítko Microphone mapované v systému jako voicecommand), kam mám namapovanou funkci zobrazení tohoto dialogového okna. Všichni doma vědí, že Hledat je na Microphone. A je to hodně návykové...


RE: Estuary Easy - jojox - 04.5.2023

    Nevie niekto ako sa zbaviť informácii o otvorenom okne vo vrchnej liste na ľavej strane? Nechcem tam mat položky a cesty kde sa práve nachádzam.


RE: Estuary Easy - JiRo - 04.5.2023

@jojox Editaci definiční souboru skinu. Pochybuji, že možnost vypnout to v nastaveni skin má. Nedávalo by to smysl. A to chceš pro všechny stránky, nebo jen pro tuto? A pokud to vypneš, jak budeš ty stránky identifikovat?


RE: Estuary Easy - jojox - 04.5.2023

(04.5.2023, 16:12)JiRo Napsal(a): @jojox Editaci definiční souboru skinu. Pochybuji, že možnost vypnout to v nastaveni skin má. Nedávalo by to smysl. A to chceš pro všechny stránky, nebo jen pro tuto? A pokud to vypneš, jak budeš ty stránky, identifikovat?
 Áno niekde v xml, ale neviem to nájsť.


RE: Estuary Easy - JiRo - 04.5.2023

@jojox Večer ti to můžu poslat. Z hlavy to nedám a jsem mimo PC. Mělo by to být include, neco jako topbar a breadcumb... Hledej asi v include.xml. Ale tak je to u originálu, tohle je nějaký mod...

Tak include se jmenuje TopBarLabels a je definované v Includes.xml.


RE: Estuary Easy - jojox - 04.5.2023

(04.5.2023, 17:21)JiRo Napsal(a): @jojox Večer ti to můžu poslat. Z hlavy to nedám a jsem mimo PC. Mělo by to být include, neco jako topbar a breadcumb... Hledej asi v include.xml. Ale tak je to u originálu, tohle je nějaký mod...

Tak include se jmenuje TopBarLabels a je definované v Includes.xml.

Super, veľká vďaka. Upravujem si podľa seba základný skin Estuary  a toto ma zdržiavalo. 

Tak že zhrnutie. 

Includes.xml

konkretne som zakazal toto

<!--
 <control type="label">
    <label>$PARAM[breadcrumbs_label]</label>
    <include>BreadcrumbsLabel</include>
 </control>
-->


RE: Estuary Easy - JiRo - 09.5.2023

Zobrazení více hodnocení

Teď je i v nativním Kodi možné mít více hodnocení, což je pro porovnání toho, které hodnocení je to pravé, docela zajímavé.

V db SCC je více hodnocení také, a dá se při tom nastavit, které z nich a podle jaké strategie se přepíše do toho jednoho, které se zobrazuje v přehledu titulů. Byly by ale škoda si ta ostatní hodnocení nezobrazovat, a tak jsem doplnil skin o možnost zobrazit hodnocení všechna, resp. ta vybraná, která pokládám za důležitá.
  • CSFD
  • TMDB
  • Trakt
  • TVDB
  • IMDB
  • Metacritic
  • Rotten Tomatoes
Vyšel jsem z toho, jaká hodnocení používá SCC. V SCC mám přitom nastavenu strategii výběru podle největšího počtu hlasujících.

Tady je ale potřeba respektovat jedno omezení, a to je šířka stránky. Já používám skin se šířkou 2560 px, pokud zůstanene u původní šířky, tedy 1920 px, tak se dá tímto způsobem zobrazit maximálně tři hodnocení.

V přehledu titulu (bagde s hodnocením) je to jedno vybrané hodnocení, v detailech pak mohou být všechna, včetně počtu hlasujících. Dává to docela dobrý obraz o tom, jak jsou ta čísla relevantní. Abych to jednoduše propojil, tak v detailu se to označení zdroje hodnocení, které se přenese do toho v přehledu, přebarví.

Edituje se soubor include.xml. Hodnocení se v detailech titulu doplní do části include MediaFlags. Vzhledem k tomu, že seznam se definuje pomocí grouplist, jsou tu jistá omezení, daná pravidly pro použití tohoto typu seznamu. Postupoval jsme tak, že jseme doplnil nový seznam pro hodnocení, který se zobrazuje zleva, zatímco původní ostatní údaje v tomto include se zobrazují zprava.
 
Kód:
    <include name="MediaFlags"> <!-- EASY* -->
        <param name="infolabel_prefix"></param>
        <param name="resolution_var">$VAR[ResolutionFlagVar]</param>
        <param name="visible_left">true</param>
        <definition>
            <control type="grouplist"> <!-- EASY+ Ratings amd Votes (from left) -->
                <orientation>horizontal</orientation>
                <left>20</left>
                <top>0</top>
                <height>70</height>
                <align>left</align>
                <itemgap>10</itemgap>
                <width>1900</width>
                <usecontrolcoords>true</usecontrolcoords>
                <visible>$PARAM[visible_left]</visible>
                <include content="MediaRating">
                    <param name="text" value="CSFD" />
                    <param name="source" value="csfd" />
                </include>
                <include content="MediaRating">
                    <param name="text" value="TMDB" />
                    <param name="source" value="tmdb" />
                </include>
                <include content="MediaRating">
                    <param name="text" value="Trakt" />
                    <param name="source" value="trakt" />
                </include>
                <include content="MediaRating">
                    <param name="text" value="TVDB" />
                    <param name="source" value="tvdb" />
                </include>
                <include content="MediaRating">
                    <param name="text" value="IMDB" />
                    <param name="source" value="imdb" />
                </include>
                <include content="MediaRating">
                    <param name="text" value="Metacritic" />
                    <param name="source" value="Metacritic" />
                </include>
                <include content="MediaRating">
                    <param name="text" value="Rotten Tomatoes" />
                    <param name="source" value="Rotten Tomatoes" />
                </include>
            </control>
            <control type="grouplist">
                <orientation>horizontal</orientation>
                <right>20</right>
                <top>0</top>
                <height>70</height>
                <align>right</align>
                <itemgap>10</itemgap>
                <width>1900</width>
                <usecontrolcoords>true</usecontrolcoords>
                <control type="group">
                    <width>150</width>
                    <visible>System.AddonIsEnabled(resource.images.studios.white) + !String.IsEmpty($PARAM[infolabel_prefix]ListItem.Studio)</visible>
                    <include content="MediaFlag">
                        <param name="texture" value="$INFO[$PARAM[infolabel_prefix]ListItem.Studio,resource://resource.images.studios.white/,.png]" />
                    </include>
                </control>
                <control type="group">
                    <top>10</top>
                    <width>200</width>
                    <visible>!String.IsEmpty($PARAM[infolabel_prefix]ListItem.Premiered)</visible>
                    <include content="InfoFlag">
                        <param name="icon" value="lists/year.png" />
                        <param name="label" value="$INFO[$PARAM[infolabel_prefix]ListItem.Premiered]" />
                    </include>
                </control>
                <control type="group"> <!-- EASY+ -->
                    <width>115</width>
                    <visible>!String.IsEmpty(ListItem.Trailer) + !String.Contains(ListItem.Trailer,video_url=None)</visible>
                    <control type="label">
                        <width>115</width>
                        <height>60</height>
                        <align>center</align>
                        <aligny>center</aligny>
                        <label>TRAILER</label>
                        <font>font_flag</font>
                    </control>
                    <include content="MediaFlag">
                        <param name="texture" value="flags/flag.png" />
                    </include>
                </control>
                <control type="group">
                    <width>115</width>
                    <visible>!String.IsEmpty($PARAM[infolabel_prefix]ListItem.Duration)</visible>
                    <control type="label">
                        <width>115</width>
                        <height>60</height>
                        <align>center</align>
                        <aligny>center</aligny>
                        <label>$INFO[$PARAM[infolabel_prefix]ListItem.Duration]</label>
                        <font>font_flag</font>
                    </control>
                    <include content="MediaFlag">
                        <param name="texture" value="flags/flag.png" />
                    </include>
                </control>
                <control type="group"> <!-- EASY+ EndTime -->
                    <width>115</width>
                    <visible>!String.IsEmpty(ListItem.Duration) + !String.IsEmpty(ListItem.EndTimeResume)</visible>
                    <control type="image">
                        <top>20</top>
                        <left>10</left>
                        <width>20</width>
                        <height>20</height>
                        <fadetime>0</fadetime>
                        <aspectratio aligny="center" align="center">keep</aspectratio>
                        <texture>icons/pvr/pvr-hastimer.png</texture>
                    </control>
                    <control type="label">
                        <left>20</left>
                        <width>95</width>
                        <height>60</height>
                        <align>center</align>
                        <aligny>center</aligny>
                        <label>$INFO[ListItem.EndTimeResume]</label>
                        <font>font_flag</font>
                    </control>
                    <include content="MediaFlag">
                        <param name="texture" value="flags/flag.png" />
                    </include>
                </control>
                <include content="MediaFlag">
                    <param name="texture" value="$INFO[ListItem.VideoCodec,flags/videocodec/,.png]" />
                    <param name="visible" value="!String.IsEmpty($PARAM[infolabel_prefix]ListItem.VideoCodec)" />
                </include>
                <include content="MediaFlag">
                    <param name="texture" value="$PARAM[resolution_var]" />
                    <param name="visible" value="!String.IsEmpty($PARAM[infolabel_prefix]ListItem.VideoResolution)" />
                </include>
                <include content="MediaFlag">
                    <param name="texture" value="$INFO[ListItem.HdrType,flags/videohdr/,.png]" />
                    <param name="visible" value="!String.IsEmpty($PARAM[infolabel_prefix]ListItem.HdrType)" />
                </include>
                <include content="MediaFlag">
                    <param name="texture" value="$INFO[ListItem.VideoAspect,flags/aspectratio/,.png]" />
                    <param name="visible" value="!String.IsEmpty($PARAM[infolabel_prefix]ListItem.VideoAspect)" />
                </include>
                <include content="MediaFlag">
                    <param name="texture" value="$INFO[$PARAM[infolabel_prefix]ListItem.AudioCodec,flags/audiocodec/,.png]" />
                    <param name="visible" value="!String.IsEmpty($PARAM[infolabel_prefix]ListItem.AudioCodec)" />
                </include>
                <include content="MediaFlag">
                    <param name="texture" value="$INFO[$PARAM[infolabel_prefix]ListItem.AudioChannels,flags/audiochannel/,.png]" />
                    <param name="visible" value="!String.IsEmpty($PARAM[infolabel_prefix]ListItem.AudioChannels)" />
                </include>
            </control>
        </definition>
    </include>
Jak je vidět, tak pro zobrazení hodnocení jsem vytvořil nové include MediaRating.
 
Kód:
    <include name="MediaRating"> <!-- EASY+ -->
        <param name="width">170</param>
        <param name="visible">true</param>
        <definition>
            <control type="group">
                <visible>!String.IsEmpty(ListItem.Rating($PARAM[source])) + $PARAM[visible]</visible>
                <width>$PARAM[width]</width>
                <control type="label">
                    <left>0</left>
                    <width>60</width>
                    <height>60</height>
                    <align>right</align>
                    <aligny>center</aligny>
                    <label>[B][COLOR grey]$PARAM[text][/COLOR][/B]</label>
                    <font>font_flag</font>
                    <visible>![String.IsEqual(ListItem.Rating($PARAM[source]),ListItem.Rating) + String.IsEqual(ListItem.Votes($PARAM[source]),ListItem.Votes)]</visible>
                </control>
                <control type="label">
                    <left>0</left>
                    <width>60</width>
                    <height>60</height>
                    <align>right</align>
                    <aligny>center</aligny>
                    <label>[B][COLOR button_focus]$PARAM[text][/COLOR][/B]</label>
                    <font>font_flag</font>
                    <visible>String.IsEqual(ListItem.Rating($PARAM[source]),ListItem.Rating) + String.IsEqual(ListItem.Votes($PARAM[source]),ListItem.Votes)</visible>
                </control>
                <control type="group">
                    <left>60</left>
                    <width>115</width>
                    <control type="label">
                        <left>10</left>
                        <width>95</width>
                        <height>60</height>
                        <align>center</align>
                        <aligny>center</aligny>
                        <label>$INFO[ListItem.Rating($PARAM[source])]$INFO[ListItem.Votes($PARAM[source]),/]</label>
                        <font>font_flag</font>
                    </control>
                    <include content="MediaFlag">
                        <param name="texture" value="flags/flag.png" />
                    </include>
                </control>
            </control>
        </definition>
    </include>
Plánuji se tomu ještě věnovat, takže je to jen takový první nástřel, ale funguje to poměrně dobře a ta přidaná informační hodnota je docela velká.
   
Bylo by asi lákavé pro označení zdrojů jednotlivých hodnocení použít jejich loga/ikony, ale já jsem zatím zůstal u jednoduchého stylu Estuary, a to označení je pouze textové. Možná to časem změním, ale pro zkušenějšího skinera asi nebude problém to změnit vlastním přičiněním...

Na závěr jedno varování.  Uvedené řešení má, kromě omezení šířky stránky, ještě jednu zjištěnou nevýhodu a tím je konflikt zobrazení na info stránce videa. Tam se zobrazení hodnocení zleva "potká" s textem nápovědy. Zatím jsem to neřešil, ale v nějakém dalším popisu se k tomu určitě vrátím...
   


RE: Estuary Easy - jojox - 11.5.2023

Trochu som sa zaoberal zo základným skinom Estuary (CoreElec 19.5).  Môže vám to pomôcť pri vašom projekte.


https://github.com/jojoxyz/Kodi-Skin-Estuary-Custom


Pre zjednodušenie orientácie je priložený textový dokument v ktorom sú popisy ku jednotlivým funkciám s ktorými som sa zaberal . V konkrétnych xml je viacej popisov pri daných položkách. Jednoducho otvoriť v textovom editore a použiť vyhľadávanie.  
Príklad: Home.xml - hľadám položku -h2 Zobraziť horná položka naposledy prehrávane kanály widget 
Do vyhľadávača zadám h2. 
Nie som programátor a tak sa tam môžu vyskytovať chyby. Skin je ale funkčný. Môže slúžiť ako pomôcka pri vašich vlastných projektoch.


RE: Estuary Easy - rene.hav - 12.5.2023

@JiRo: Muzu se zeptat, jak to vlastne vypada s vydanim tveho skinu pro verejnost?


RE: Estuary Easy - JiRo - 12.5.2023

@Rene.hav Byl jsem teď delší dobu mimo, pak se věnoval jinému projektu, ale zase se k tomu pomalu vracím. Jde to pomalu, ale postupuje to. Takže ještě vydržte...


RE: Estuary Easy - JiRo - 16.5.2023

Tak jsem si po čase povolil original Stream Cinema (SC) doplněk, abych ho nově zaintegroval do Estuary Easy. A upřímně jsem byl docela překvapen, jakou "štábní nekulturu" rozhraní doplňku má. Docela nesystematické řazení položek jednotlivých seznamů, ve kterém jsem se na první dobrou moc neorientoval. O něco málo se to vylepšilo při vypnutí nastavení Zobraz starou strukturu menu, ale ani potom to žádná velká sláva není. Je to patrně nějaké prokletí, protože totéž, i když v daleko menší míře, je vidět i v SCC. Kde je, po přidání Koncetrů a hlavně Anime, vidět podobný trend. Škoda, čekal jsme, že @BBaron už tohle bude mít vychytané.

Je vidět, že @BBaron má děti, protože má poměrně bohatou funkci rodičovského zámku. Na to si pamatuji už z dřívějška, kdy propagoval a i tady na fóru řešit certifikaci filmů.

Vidím, že stále nevidím možnost integrace do knihovny Kodi, takže s touto funkcí už asi u SC počítat nemůžeme. A už vůbec tam nevidím to, co bylo ve své době velkou devizou SC, tedy nějakou formu přidávání nových dílů seriálů do knihovny. V Trakt i Nástrojích v nastavení jsou sice položky synchronizovat seriálů/epizod, což o nějaké míře automatizace v této oblasti svědčí, ale to budu muset ještě prozkoumat.


RE: Estuary Easy - pudis1977 - 30.5.2023

Muzu se zeptat jestli není nějaká beta skinu pro veřejnost díky


RE: Estuary Easy - JiRo - 30.5.2023

@pudis1977 Ne. Viz 2 posty výše...


RE: Estuary Easy - pudis1977 - 04.7.2023

Prosím nějaké info jak to vypadá


RE: Estuary Easy - jkmh - 03.10.2023

@JiRo: Čistě náhodou při testu toho, co všechno Filtr v SCC umí jsem narazil na tento případ. Od https://discord.com/channels/706602726565609563/723153234751127573/1158751814339022908 dolů. Ani v Iteminfo https://www.xbmc-kodi.cz/prispevek-estuary-easy?pid=116253#pid116253 se mi toto hodnocení neukazuje. Je totiž možné, že jsem při konverzi na Confluence udělal chybu a ty určitě jedeš na svém Estuary. Máš vysvětlení pro ten Filtr?

Není to nic, bez čeho by se nedalo žít. Jen bych rád znal příčinu. Musím se přiznat, že s mým příspěvkem tam si připadám spíš jako nepřítel. Díky za vysvětlení.

Tak už to neřeš. Nyní jsem tento film zkusil a už tam je. Ale důvod zlepšení neznám.


RE: Estuary Easy - pudis1977 - 26.11.2023

Muzu se zeptat, jak to vlastne vypada s vydanim tveho skinu pro verejnost?