• 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:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Použití DO v externí aplikaci Chrome spouštěné z Kodi v LE [xdotools]
#1
Dále uvedené řešení se dá bez velkých zásahů a změn použít v instalací typu *ELEC nebo Linux používající IR DO. Testované je na instalaci LibreELEC. Bez problémů by mělo být funkční i na jiných Linux instalacích.

Nápis tématu je poněkud komplikovaný, pokusím se jednoduše vysvětlit. Občas se v Kodi objeví řešení, v rámci kterého Kodi spouští nějakou externí aplikaci. Nejčastěji to asi bývá webový prohlížeč. V Kodi jsou známé hlavně Chrome Launcher (který spuští v systému instalované Chrome) nebo addon Chromium (čtěte Poznámku na konci odstavce), který do systému prohlížeč také nainstaluje. Já sám provozuji ten druhý a jsem s ním, na svých LibreELEC instalacích, vcelku spokojen. Drobné i větší mušky má, ale co mě osobně a celou rodinu štve, že nejsme schopni alespoň částečného ovládání  prohlížeče z DO. Spustit ho, to ano, ale na všechno další je třeba si vzít klávesnici a pokračovat s ní. Jsou výjimky, např. ve Windows lze IR ovladače (např. Logitech Harmony One) využívat v režimu klávesnice, ale linuxové aplikace tuto možnost použití IR neumožňují.

Poznámka: V současné chvíli je addon Chromium k dispozici pouze v AMD/Intel/nVidia Generic instalaci.

Zamyslel jsem se a zjistil, že ve většině případů, kdy používám webový prohlížeč v Kodi, nejde o žádné divoké brouzdání. Většinou chci zobrazit jednu konkrétní stránku, a v ní mít možnost listovat nahoru a dolů. Žádné klikání na odkazy, otevírání dalších stránek na nových záložkách, atd. Na brouzdání si rád sednu k počítači nebo vezmu do ruky tablet. U Kodi chci jen kliknout, přečíst a odejít zpět. Nejčastěji takhle chodím na stránky filmů v IMDB (rozšíření v Estuary Stream Cinema), případně na stránky, které mám pevně předvolené - například přehled zpráv sledovaných deníků. S kolegy navíc pracujeme na novém addon, kterým by mělo být rozšíření RSS čtečky, a který by umožňoval klikem na běžící headline v Kodi otevřít seznam zpráv a tam, opět klikem, otevřít zdrojový článek na webovém serveru.

Úkolem tedy bylo, zajistit, aby když si přes DO otevřu webový prohlížeč (Chromium nebo Chrome), mohl přes to samé DO listovat ve stránce nahoru a dolů, jít na konec nebo začátek, přepínat si mezi záložkami a dalším klikem na DO se vrátit do Kodi. Nepodstatným požadavkem bylo, aby se pro tyto činnosti daly používat klávesy DO tak, jak jsou na to uživatelé v Kodi zvyklí. Návrat do Kodi přes klávesu Home, přepínání záložek některými ze šipek, listování nahoru a dolů pomocí šipek nebo PgUp a PgDown, atp.

Princip řešení vychází z tohoto popisu Funkce tlačítek DO mimo Kodi, který je uveden v tématu Vychytávky. Popsané řešení umožňuje stiskem tlačítka spustit příkaz či aplikaci přímo v systému. No a na místě té aplikaci si lze celkem bez potíží představit i tradiční a známý xdotools. A to je vlastně to podstatné, na čem je celé řešení postaveno.

Doplněním klávesy, kterou chceme použít v externí aplikaci, si zajistíme, že se při stisku klávesy zajistí odeslání příslušného kódu do okna, ve kterém běží externí aplikace. Tím kódem mohou být jak příkazy xdotools, kterými je možné ovládat příslušná okna, tak kódy kláves, které jsou přes stdin předány do (v okně bežící) aplikace.

To podstatné, co především účelem mého zkoumání bylo, bylo to, jak zajistit, aby se správné klávesy dostaly do správného okna. Tady je ještě prostor pro další vylepšování a hlavně zobecnění řešení tak, aby ho bylo možné použít různým způsobem (tzn. nejenom v prohlížeči). Zatím je koncipováno tak, že je možné mít v Kodi právě jen jednu takovou aplikaci, v našem případě tedy Chromium. Není ale problém doplnit řešení i pro více aplikací.

Ukázka, jak vypadá upravený soubor s definicemi kódů tlačítek DO, které mohou být využity v externí aplikaci je zde:

Kód:
begin
 prog = irexec
 button = KEY_EXIT
 config = xdotool search --name Chromium getwindowfocus key --window %1 Ctrl+w
end
begin
 prog = irexec
 button = KEY_CHANNELUP
 config = xdotool search --name Chromium getwindowfocus key --window %1 Page_Up
end
begin
 prog = irexec
 button = KEY_CHANNELDOWN
 config = xdotool search --name Chromium getwindowfocus key --window %1 Page_Down
end
begin
 prog = irexec
 button = KEY_UP
 config = xdotool search --name Chromium getwindowfocus key --window %1 Up
end
begin
 prog = irexec
 button = KEY_DOWN
 config = xdotool search --name Chromium getwindowfocus key --window %1 Down
endbegin
 prog = irexec
 button = KEY_RIGHT
 config = xdotool search --name Chromium getwindowfocus key --window %1 Ctrl+Page_Up
end
begin
 prog = irexec
 button = KEY_LEFT
 config = xdotool search --name Chromium getwindowfocus key --window %1 Ctrl+Page_Down
end

Upozorňuji, že je to jen příklad, definitivní přiřazení tlačítek a funkcí bude ještě předmětem dalších úvah, co všechno a jak by vlastně mělo být v prohlížeči ovládané přes DO. Závisí to taky na celkové koncepci použití prohlížeče v Kodi. Já dnes zatím používám (nebo plánuji používat) dva základní režimy:
  1. Zobrazení jedné pevné stránky - prohlížeč se spustí v nastavení režimu "kiosek". Využívá se například při zobrazení webové stránky filmu/seriálu, volba je ve skinu Estuary Stream-Cinema přidána na stránku s detailem filmu/seriálu a to pouze tehdy, pokud je v daném detailu k dispozici IMDB kód (ttNNNNNNN).
  2. Zobrazení více stránek, každá na vlastní záložce - je to jakýsi "pevně definovaný přehled denního tisku", kdy si najednou zobrazím stránky vybraných zpravodajských webů. Takovýchto komplexů stránek může být libovolně mnoho a mohou být také libovolně sestaveny. Podle titulu, oboru, tématu, atp.
Asi největší potenciál od tohoto řešení očekáváme ve spojitosti s rozšířenou funkcí RSS čtečky. Ale na to je, jak jsme už napsal, opravdu ještě brzy.

Co je v dané chvíli podstatně jé to, že základní princip je funkční, i když jen v "domácích" podmínkách. Zatím neuvažujeme o nějaké další distribuci. To je také důvod, proč jsem se rozhodl tento popis vytvořit, i když řešení je ještě hodně syrové. Najde se jistě mnoho kutilů, kteří si sami uvedený koncept upraví pro své potřeby. Těm je tento popis určen především.

Budeme rádi, pokud se se svými nápady a poznatky z vlastního laborování také pochlubíte.
 
Citovat
#2
Jak už jsem popsal, používal jsem DO v LibreELEC k ovládání funkcí prohlížeče Chromium. Při přechodu na verzi  9.0.0 (Kodi 18 Leia) jsme zažil malé překvapení (místo Chromium se objevilo Chrome) a také malé zklamání. Aplikace xdotools, která je pro tuto funkci zásadní, z nové verze LE zmizela. Slovy klasika by se dalo napsat, "že se nám tady rozmáhá takový nešvar". Vše, co není potřeba, musí pryč. Je to vidět u všech *ELEC. V LE zmizelo pár věcí, mezi jinými pro Tvheadend veledůležité ffmpeg a také xdotools. Zatímco ffmpeg se dá doplnit prostřednictvím addon, pro xdotools jsem zatím žádný nenašel. Překládat LE proto, abych tam xdotools dostal se mi nechtělo, ale naštěstí pomohlo brouzdání po potenciálních místech, kde by se něco dalo najít.

Na fóru LE jsem nejdříve narazil na toto: https://forum.libreelec.tv/thread/121-xdotool-addon/

a pak se dostal na post většině lidí známého @vpeter: https://forum.libreelec.tv/thread/13852-...post104850

Dostat xdotool do LE 9.0.0 bylo pak už jen chvilka. Umístil jsem adresář podle doporučení do .../.kodi/addons/, byť to addon není. Ale není problém ho podle pravidel Kodi vyrobit, nebo ho umístit kamkoliv jinam. Stačila pak už jen úprava původního souboru s definicemi kódů tlačítek DO - změna volání xdotools - a vše bylo opět funkční.
 
Citovat
#3
Nevýhodou popsaného řešení je to, že když se "stisky kláves DO" posílají výše uvedeným způsobem do X-okna (kde se spouští Chrome), tak se současně pošlou i do Kodi. To znamená, že se v Kodi provádí paralelně všechny akce, které odpovídají stisknutým tlačítkům na DO. To jsem sice už při prvních testech věděl, ale zatím neřešil (nevěděl jsem jak). Dostal jsme se k tomu až teď. Po marné snaze, jak zablokovat posílání tlačítek DO do Kodi je-li spuštěno Chrome, jsem na to šel jinak. Tlačítka i nadále posílám, ale paralelně s tím, když spustím Chrome, nechám zobrazit uživatelské okno, které nemá s DO žádnou interakci. Všechna tlačítka stisknutá při ovládání Chrome jdou v Kodi "do prázdna". Samozřejmě kromě "Back" a "Menu", která jednak ukončují Chrome a zároveň vrací ovládání Kodi o krok zpět (Back) nebo do hlavního menu.

Nyní mě čeká další krok. Widgety položky hlavního menu Browser, která spouští Chrome. Mám v jednotlivých položkách provolby do vybraných webových stránek a v ikoně zobrazuji screenshot příslušných webových stránek. Zatím jsme si udělal screenshoty ručně, ale rád bych, aby se screenshot prováděl (s pomoci scriptu) automaticky v nastavené periodě. To by mělo za efekt to, že by v ikoně pro provolbu do webové stránky byl vidět náhled aktuálního obsahu. Chrome by měl umět vytvořit screenshot a uložit ho do souboru, takže vlastní provedení bude asi jasné a to tedy bude další postupný krok celého řešení.
 
Citovat
#4
Jak jsem napsal výše, doplnil jsem do celého konceptu automatickou generaci screenshot webových stránek. Cílem je získat pro widget Browser položky hlavního menu obrázky pro ikony volby jednotlivých stránek.

Screenshot získávám ve scriptu prostřednictvím Chrome. Parametry screenshot, je to vždy dvojice url a jména souboru se screenshot, si ukládám do souboru:

Kód:
https://www.ihned.news ihned.news.png
https://www.aktualne.cz aktualne.cz.png
https://www.ihned.cz ihned.cz.png
https://www.respekt.cz respekt.cz.png
https://forum24.cz forum24.cz.png
https://denikn.cz denikn.cz.png
https://www.ceskenoviny.cz ceskenoviny.cz.png
https://www.reflex.cz reflex.cz.png
https://www.idnes.cz idnes.cz.png
https://www.seznam.cz seznam.cz.png

Vlastní generaci pak provádí jednoduchý script:

Kód:
#! /bin/sh

HOME=/storage/.kodi/media/screenshot

SCREEN=$HOME/screenshot.list

while read line; do
    url=$(echo ${line} | cut -d' ' -f1)
    pic=$(echo ${line} | cut -d' ' -f2)
    /storage/.kodi/addons/browser.chrome/bin/chrome-start --disable-gpu --headless --hide-scrollbars --screenshot=${pic} ${url}
done < ${SCREEN}

exit 0

Script plánuji spouštět přes cron, pravděpodobně 1x za 24 hod.

Začlenění do skinu Estuary Stream-Cinema pak vypadá takto:
[attachment=4989] [attachment=4990] [attachment=4991]
 
Citovat
#5
smazáno
2 x X96 mini S905W ( Coreelec 9.2.2 / Kodi 18.6 )
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)