![]() |
|
Easy metoda modifikace doplňků - Verze k tisku +- XBMC-Kodi.cz (https://www.xbmc-kodi.cz) +-- Fórum: Obecná diskuse (https://www.xbmc-kodi.cz/forum-obecna-diskuse) +--- Fórum: Tipy, triky a návody (https://www.xbmc-kodi.cz/forum-tipy-triky-a-navody) +--- Téma: Easy metoda modifikace doplňků (/prispevek-easy-metoda-modifikace-doplnku) |
Easy metoda modifikace doplňků - JiRo - 30.11.2024 Další z témat, které by se dalo zařadil do kategorie Easy TOOLS. Zatím jsem s ním ale ve fázi, kdy se o doplněk ještě nejedná, takže s finálním zařazením do této kategorie budu trochu opatrný. Má to ještě svůj čas... ![]() Čas od času si pro sebe nebo mé přátele, vyrobím nějakou modifikaci pro doplněk, kterého nejsem autorem. Nebývá to nic velkého, nějaké drobné úpravy v kódu nebo možnostech nastavení atp. Dříve jsem to dělal tak, že jsem si pro daný doplněk, kterého se taková modifikace týkala, vyrobil jeho klon a pokaždé, když autor doplňku vydal verzi, upravil jsme ji a pak ji rozdistribuoval na všechna Kodi, kterých se týkala. Bylo to komplikované, otravné a čast to skončilo tak, že jsem se na ty modifikace nakonec vykašlal. Protože však byly některé modifikace hodně užitečné a uživatelé, včetně mě, na ně byli zvyklí, definoval jsme si jednodušší, můžeme ji klidně říkat poloautomatickou, metodu. Nelze ji použít vždy a všude, ale u těch pár doplňků, kde ji používám s vědomím toho, jaká má omezení, se mi zatím osvědčila. Jaká jsou východiska a použité principy? Metodu používámu u těch doplňků, které se nemění nijak zásadně. Většinou, dělám-li nějakou úpravu, mám zhruba přehled jak často a jak moc autoři do doplňku zasahují a hlavně, zda se ty zásahy týkají té části, kterou já chci modifikovat. Já metodu používám vesměs u Kodi instalací *ELEC. Jistě by ji šlo rozšířit i na jiné typy instalací, ale já na těchto instalacích žádné změny neprovádím, takže jsem se tím zatím nezabýval. Ale nějakou myšlenku, jak by se to mohlo realizovat, samozřejmě mám. Vrátím se k tomu v závěru tohoto příspěvku. Pro *ELEC instalace lze uvedený princip relizovat jednoduše s pomocí sh scriptů a příkazů/aplikací, které jsou běžnou součástí systému (sh, xmlstarlet). Prostě se držím zásady "Bojuji tam, kde můžu snadno a minimálními náklady vyhrát." ![]() Princip je tedy takový, že při každém spuštění systému (ne tedy Kodi), pomocí volání v autostart.sh, spustím postupně pro všechny doplňky, kterých se to týká, script, který si ověří, zda je aktuální verze doplňku již modifikovaná, a pokud ne, tak ji pomocí jednoduchých kroků modifikuje. Součástí modifikace je i úprava čísla verze doplňku v addon.xml, podle které se pak pozná, že doplněk byl již modifikován. Jak to funguje v praxi? Předpokládejme, že mám připavenou modifikaci pro nějaký doplněk. Script, tandardně nazávým easymod.sh a které umísťuji ho do datového adresáře doplňku, kterého se modifikace týká. U *ELEC je to tedy adresář /storage/.kodi/userdata/addon_data/<id doplňku>. V autostart.sh pak mám vložené volání (uvádím příklad pro doplněk SCC): Kód: # SCC workarounds & hacksSoučástí modifikace je i změna verze doplňku, kterou provádím v duchu nepsaných zásad, jak je ostatně vidět i u doplňků Kodi v oficiálním repozitáři, a k verzi přidávám postfix, v tomto případě +easy. Podle upravného čísla verze jednak vidím, že doplněk byl již modifikován, a jednak se toto rozšíření čísla verze použije právě ve scriptu easymod.sh, kde se testuje, zda číslo verze má tento postfix. [attachment=10998] Příklad Uvedu jak vypadá modifikace doplňku Stream Cinema Community (SCC), jehož id je plugin.video.stream-cinema-2-release. Snažím se, aby scripty pro jednotlivé doplňky měly podobnou strukturu, což ulehčuje jejich správu i vytváření případně nových. Script easymod.sh je umístěn v adresáři /storage/.kodi/userdata/addon_data/plugin.video.stream-cinema-2-release, a vypadá v současné chvíli nějak takto: Kód: #! /bin/sh
[attachment=10999] Proč tento postup? Někdo možná namítne, proč místo toho, abych vymýšlel nějaké scripty, raději uvedené úpravy nenabídnu autorům doplňků. K tomu dvě poznámky. Já některé úpravy a některým autorů nabízím. Zpravidla ale ne hned a ne vždy. Ne hned proto, že většinou počkám, až si já nebo i další uživatelé ověří, že úprava má smysl, je užitečná a při dlouhodobém používání se osvědčí. A ne vždy, protože existují autoři nebo komunity soustředěné kolem některých doplňků, kteří na snahu upravit nebo změnit funkce doplňku shlíží často (a z různých důvodů) odmítavě a někdy i s despektem. A na to, abych se v takových případech nějak snažil a někoho přesvědčoval chuť ani náladu opravdu nemám. Tak si to řeším po svém... Co dál? Mám v plánu posunout tuto funkci z výlučného řešení pro *ELEC s pomocí sh scriptů a systémových aplikací do verze addon Kodi. Ta by měla, jak předpokládám, celou řadu vylepšených funkcí, možnost jejich parametrizace, kontrol i větší míry automatizace. Její součástí by byla i periodická kontrola verzí doplňků, takže by například, při automatickém update doplňku, mohlo vše proběhnout bez zásahu uživatele. Volitelně samozřejmě třeba se závěrečným dotazem Byly aktualizovány doplňky s možností modifikace a dotazem, zda je možné, tedy pokud to bude potřeba, provést restart Kodi, s případnou volbou ho odložit o definovaný čas nebo např. až po skončení právě přehrávaného videa. V takovémto případě jsou možnosti, jak to celé pojmout, a např. které aspekty chování takového doplňku uživatelsky parametrizovat, téměř neomezené. Bude samozřejmě záležet na zájmu i na tom, kolik času tomu budu moci (a chtít) věnovat. Jinak, pro výše zmíněný budoucí addon Kodi už mám alespoň jméno a id. Bude se pravděpodobně jmenovat Easy Mod a jeho id bude script.easymod. Tak, tohle bychom měli vyřešené...
RE: Easy metoda modifikace doplňků - MartinLee - 15.1.2025 Ahoj , kedy asi plánuješ pustiť skript do éteru ? Ďakujem Martin |