Easy Search (1) - Úvod aneb Zdroje inspirace

Hledání video obsahu v Kodi bylo dlouho tak trochu opomíjenou funkcí. Ne proto, že by lidé nehledali, ale hlavně proto, že množství zdrojů, ve kterých mohli hledat, bylo omezené rozsahem jejich databáze/knihovny. Až teprve příchod video doplňků, které svůj obsah, v řádově vyšších rozsazích, získávaly z internetu, tuto potřebu zásadně ovlivnil. Největší změna se ale odehrávala ve chvíli, kdy komplexní doplňky, které poskytovaly videoobsah a měly vlastní databázi i vlastní funkce hledání, skončily, nebo se řadě uživatelů ukázaly být, z celé řady důvodů, jako nepreferované řešení. V té chvíli se začaly objevovat způsoby, jak hledat videoobsah ne v organizovaných databázích, ale ve zdrojích streamů, s více či méně (většinou ale dokonce žádnou) organizovanou databází. Celé to nastartoval, i dnes stále ještě populární doplněk autora @cache, YAWsP. A tady začíná má cesta ke komplexnímu řešení, které jsem v duchu mých Kodi řešení nazval Easy Search.

V perexu zmíněný doplněk YAWsP se i pro mne, v jedné chvíli, stal základem něčeho, co později přerostlo ve snahu podívat se na problematiku hledání video obsahu zcela jinýma očima. Ale začal jsem, stejně jako v té době řada dalších, jednoduchou úpravou původního doplňku nazvanou, jak jinak, YAWsP Easy. Dodnes ho mám nainstalovaný a vlastně ho dodnes občas stále používám.

Když jsem ale začal o hledání videobsahu přemýšlet, bylo mi jasné, že jeho základem YAWsP nebude. Ne proto, že by fungoval špatně. Pro to, pro co byl navržen, byl více než dostačující. Jen jsem nechtěl postupovat stejně, jako celá řada dalších upravovatelů YAWsP, tedy oblepit původní doplněk, podobně jako když vlašťovky stavějí hnízdo, kódem dalších funkcí. Já jsem v jednu chvíli takové doplňky sbíral, také proto, abych v nich našel nějakou inspiraci, ale záhy jsme pochopil, že tudy cesta nevede, tedy že inspiraci musím hledat někde jinde. Takž k inspiraci doplňkem YAWsP jsem postupně přidal i další východiska, a ty bych teď stručně, jedno po druhém, popsal.

Skiny

Protože se, co se týče Kodi, věnuji kromě psaní doplňků i skinningu, dostal jsem, se v jisté fázi mého uvažování o tom, jaký skin bych mohl/měl používat, k detailnímu zkoumání Arctic skinů autora @jurialmunkey. Vyvrcholilo to tím, že jsme i tento skin, jako ostatně mnoho jiných před tím, upravil, či spíše doplnil, o funkce prohledávání tehdy používaných doplňků Sosáč, Stream Cinema CZ/SK a Stream Cinema Community. Nebylo to marné, dodnes řada mých kamarádů a známých upravený skin Arctic Fuse 2 používají. Nakonec jsme zůstal u mé vlastní modifikace základního skinu Estuary, tedy Estuary Easy. Mimochodem, úvaha o tom, že bych Arctic Fuse mohl dát ještě šanci se vrátila počátkem letošního roku, kdy autor představil už třetí modifikaci svého skinu. Stále je to ve hře, zejména proto, že mě teď čeká, i ve skinu Estuary Easy, přechod na Kodi 22. A to je, jak mi skinneři potvrdí, vždycky nějaká práce navíc. Takže myšlenka, že s přechodem na Kodi 22 přejdu na Arctic Fuse 3, je stále ve hře.

Každopádně doba, kdy jsem se zabýval výše zmíněnými modifikacemi Arctic Fuse, mě poznamenala do té míry, že jsem si začal v hlavě koncipovat, jak by, obecně, takové funkce komplexního hledání v Kodi, mohly vypadat. Ono Kodi nativně, i když ve formě oficiálního doplňku, takovou funkci má - global search - ale ta se mě ani trochu nelíbí. Z celé řady důvodů. Počínaje skinem, přes uzavřenost a poměrně zásadní nekoncepčnost, až po to, že pro to, o co bych chtěl funkce rozšířit, tedy prohledávání v externích zdrojích, není koncept jejího řešení vůbec vhodný.

Context menu

Context Menu je jeden z mých vlastních doplňků, ve kterém jsme zhmotnil mé zkušenosti i potřeby při používání Kodi. Stal se nedílnou součástí mých instalací z celé řady důvodů, ale tím důvodem zásadním byla má první snaha o nějakou smysluplnou integraci funkce hledání. Doplněk sehrál jistou, možná až  rozporuplnou, roli při konci SCC, ale co vím, tak i když jsem ho z repozitáře XBMC-Kodi nakonec stáhnul, hodně lidí, samozřejmě včetně mě, ho dodnes používá. Já mám jeho novou verzi v mém globálním To-Do listu, ale z  hlediska návaznosti jsem se rozhodl, že se do toho pustím právě až po dokončení Easy Search, protože to bude jeden z jeho klíčových modulů.

Asi ta nejpodstatnější inspirace doplňkem Context Menu bylo to, že jsme si uvědomil, že nechci z Context Menu volat funkce doplňku Easy Search, ale že chci, aby funkce Easy Search byly dostupné  ve formě knihovních modulů, které v Context Menu použiji. Ony ty úvahy mají ještě pokračování, protože to ani knihovními moduly skončit nemusí, ale k tomu se dostanu v jedné z dalších kapitol.

TMDB Helper

TMDB Helper je doplněk z dílny již zmíněného @jurialmunkey. Je jednak součástí jeho repozitáře a intenzivně ho využívají jeho skiny, zároveň je ale součástí oficiálního Kodi repozitáře, a i tam ho některé skiny využívají podobně. Ale je zároveň velmi často používán i zcela samostatně, jako jakási univerzální databáze video (filmů a seriálů) titulů jednoduše přístupná uživatelům. Síla jeho funkcí se pro většinu uživatelů ukázala až po zániku SCC, kdy se, spolu s doplňkem YAWsP a v některých případech i Context Menu, stal první funkční náhražkou toho jinak dříve tak masově používaného doplňku. Doplněk, a v konetxtu tohoto tématu, vlastně celé api TMDb, se ukazuje jako jednou z klíčových komponent nového pojetí práce s mediálním obsahem. Zvláště, když se na jejich základě ukazuje, jak je například jednoduché spojit funkce TMDb a Trakt.tv. Těch konsekvencí, která na význam a možnosti TMDb ukazují, je tam samozřejmě daleko více.

Pro mne osobně bylo jedno z poznání důležité k tomu, abych si jednoznačně vymezil část struktury celého Easy Search řešení. Vlastně jsem na to narazil už při práci na Context Menu, ale tam to skončilo jen jako jeden z bodů mého To-Do listu. Kromě další spektů řešení vyhledávání, musí vždy existovat dva stupně. Zjednodušeně řečeno. Hledám-li nějaký video obsah podle názvu, musím (tedy může to být definované jako volitelný parametr funkce hledání) vždy v první řadě najít odpovídající titul v databázi. V tomto případě tedy v TMDb. A pokud text titulu zadán nejednoznačně, je namístě tuhle jednoznačnost v 1. kroku dosáhnout. A teprve pak je možné, hledat už podle jednoznačného názvu titulu. Není to nic složitého a  v rámci prvních řešeních to funguje zcela přirozeně. Nese to s sebou i celou řadu dalších pozitivních efektů, které pomáhají řešit potenciálně obvyklé problémy s originálním názvem titulu, rokem vydání, apod.

Neuvádím to tu proto, abych právě na tento postup upozornil, ale abych upozornil na obecný rys řešení,  ke kterému nakonec směřuji. Na rys, který by se dal charakterizovat jako vrstvené řešení, s jasnými a jednoduchými kroky v jednotlivých vrstvách, s definovanou vazbou/rozhraním, mezi jednotlivými vrstvami. Ono to už do této kapitoly a vlastně ani do této části seriálu nepatří, k tomu se plánuji dostat v části další, ale ukazuje to na několik hlavních rysů celého řešení. Snaha o udržitelnost, flexibilitu, přenositelnost, transparentnost i potenciál dalšího rozvoje. Ale k tomu se ještě, a důkladněji, vrátím. Zčásti ještě v tomto dílu, ale hlavně v tom následujícím.

Stremio

Možná je podivné, že v blogu o Kodi zmiňuji Stremio, ale smysl to dávat bude. Jen podotknu, že ta spojitost se netýká vlastní aplikace, ale jejich doplňků. A tady se nějaká spojitost už objevit může. V Kodi se často, u doplňků, používá strategie jejich rozdělení na servisní část a na část vlastního pluginu (jde-li o video doplněk). Je to celkem jednoduchý trik, který umožňuje, že část service, která většinou řeší jakýsi runtime mód fungování doplňku a případně api na zdroj mediálních dat, běží asynchronně, zatímco část směrem k funkcím gui je řešena vlastním pluginem. Data si mezi sebou zpravidla vyměňují pomocí socket. Prakticky to znamená, že service, až na nějaké své okrajové stavy, není na Kodi víceméně závislá. To jinými slovy znamená, že tato část vlastně nemusí běžet ani jako součást Kodi, a v konečném důsledku ani nemusí běžet ani na to samém stroji, jako Kodi. Vzájemnou vazbu je pak možné vyřešit jakkoli, ať už oním socket-em, v tomto případě IP, tak třeba i pomocí webového rozhraní. A v této chvíli je, tedy tomu, kdo ví, jak také mohou doplňky pro Stremio fungovat, ta spojitost už jasná.

Obecně taková úvaha vede k tomu, že jednak je možné psát i doplňky pro Kodi podobně, jako pro Stremio. To znamená část s vazbou na zdroj mediálního obsahu jako service nebo dokonce samostatnou aplikaci, zbytek jako Kodi plugin s vazbou přes síťovou komunikaci, a výměna dat například v json. A nebo obráceně, vzít doplněk pro Stremio, načíst odpovídajícím pluginem jeho manifest a spustit v Kodi. Mimochodem, tahle varianta, říká se jí Stream Hub, už také existuje, resp. se na ní úspěšně pracuje. První doplňky napsané pro Stremio už v Kodi, skrze jejich manifest, fungují.

Python

Proč by měl být python východiskem pro napsání nějakého doplňku nebo aplikace? Odpověď není jednoznačná, ale pro mne to smysl dává. Nejsme profesionální programátor. V určité době jsme se sice programování živil, ale to bylo v době před rokem 1989, programoval jsme v makroasembleru pro DEC PDP a byly to aplikace pro řízení v energetice. Pak už jsem se pomalu posouval v hierarchii oboru výš a programování přenechal jiným. Vrátil jsem se k němu až s Kodi a začal znova od píky. Postupně jsem se ale, se složitostí úloh, posouval i tady, až se dostal do kategorie takových, kde používám paralelní algoritmy, knihovnu asyncio a další podobné. Chtělo to něco si nastudovat, ale s příchodem AI se to celé posunulo ještě o level výš. A s tím i to, že myšlenky, které jsem o tom, co a jak by se dalo udělat, měl dřív a nedokázal je zrealizovat, jsou teď hračkou.

Možnosti, které současné verze python v Kodi 21 nabízí, dokáží realizovat věci, které dřív sice šly také, ale bylo to příliš komplikované a složité. Dnes je to hračka. A zejména pro takové kategorie úloh, kde se pracuje s více zdroji najednou, což je pro úlohy v Easy Search typické.

Další kapitola bude: Easy Search (2) - Východiska aneb Basic Desing

Komentáře