• 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
Downloader
#1
    Myšlenka univerzálního downloaderu video souborů mě napadla už před několika lety. Po několika pokusech jsem ji opustil, protože několik video doplňků, o stažení jejich zdrojů jsem stál, download mezi své funkce zařadilo nakonec také. Nyní ale, spíše pod tlakem okolností, jsem se k tomuto témat vrátil a vytvořil doplněk a zařadil ho kategorie Easy Tools. V současné době ho zatím zvěřejňovat nehodlám, protože jeho použitím se dá získat přístup ke zdrojovým adresám obsahu z některých zdrojů, což by mohlo být kontraproduktivní. Uvádím ho tedy jen jako přílkad toho, jakým způsobem je možné Kodi a jeho podporu pro tvorbu doplňků využívat.

Downloader nedělá nic jiného, než že využije informace příslušného doplňku o vybraném obsahu a příslušnou identifikaci, ve formě, které říkám job, předá cílové aplikaci, která provede vlastní stažení obsahu nezávisle na příslušném doplňku a případně i na Kodi. Počítám s tím, že cílová aplikace může (či spíše, že by měla) mít možnost běžet na jiném systému, než vlastní Kodi.

Jde tedy o kombinaci Kodi, jeho různých video doplňků, vlastního doplňku Downloader, a nakonec cílové aplikace, které můžeme říkat Download Manager, která na základě doplňkem vytořených job-ů, provádí vlastní stahování. Rozdělení funkce se zdá bát krkolomné a možná až zbytečné, ale já mám s tímto řešením celkem dobré zkušenosti.

Jak to funguje?
  • pomocí doplňku Downloader získám pro vybraný titul, který nabízí nějaký video doplněk, jeho zdrojovou adresu (adresu streamu) a případně i další doplňjící infromace, primárně titul, u seriálů ještě sezonu a epizodu, rok produkce, případně další informace - popis, žánr, obsazení, obrázky (cover, fanart, ...)
  • podle parametrů nastavení pak přidám adresu cílového umístění staženého souboru. Umožňuje mi to definovat např. více míst uložení. Odlišné pro filmy a seriály, nabo také pro různá doplňky, ze kterých příslušný titul pochází.
  • získané údaje uložím do souboru, tedy job-u, a ten předám příslušné cílové aplikaci Download Manageru, kterou používám. Předáním je myšleno např. uložení do odpovídajícího adresáře na domácí síti, i když není vyloučeno, že cílové umístění, kam se job-y můžou ukládat může být i mimo domácí síť. Tady samozřejmě záleží na tom, jakou cílovou aplikci použijeme.
  • o vše ostatní se pak postará už sama cílová aplikace Download Manager. Načte si obsah job-u a zahájí stahování. Toho se pak už samopzřejmě ani doplněk Dwnloader, ale ani Kodi, na kterém běží, neúčastní.
  • Nemusím připomínat, že toto celé probíhá asynchronně. Tzn. na jedné straně Downloader zapisuje job-y, které na straně druhé Download Manager postupně používá ke stahování v nich popsaných titulů.
Možnosti nastavení adres cílového umístění stažených souborů:
   

Download Manager

Mým prvotním záměrem bylo používat jako download manager nějakou standardní aplikaci. První testy jsem dělal na NAS s celkme rozšířenou aplikací JDownloader. Vyvářel jsme pro něj job-y v očekávaném formátu a první pokusy byly celkem zajímavé.

Postupně jsme ale přešel k vlastnímu řešení, které teď používám, což je úplně jednoduchý sh script, běžící na NAS, který nedělá nic jiného, než že si z jednoho adresáře čte postuipně jednotlivé job-y, což jsou soubory json, a z jejich obsahu vytváří parametry pro aplikace wget. Oproti řešení s JDownloader, sh script, kterému říkám Watcher, stahuje vždy pouze jeden soubor. Úplně to postačí. Ostatně, stejně mám pro stahování povoleno max. 50% šířky pásma mého internetového připojení. Protože ale stahování může běžet 24/7, na rychlosti stahování ani tolik nezáleží.

Teď už jen funkci scriptu watcher vylepšuji. Doplnil jsme navázání stahování při přerušení a pak podmíněné opakování stahování v případě, že předchozí skončilo neúspěšně. Celá logika scriptu Watcher je velmi jednoduchá, v podstatě se pouze přesouvají job soubory mezi adresáři:
  • waiting - sem zapisuje Downloader nové job-y
  • active - sem se kopíruje aktuálně stahovaný job
  • unfinished - sem se kopírují job-y, které se nestáhly celé (v novém cyklu se přepíšou do waiting)
  • error - sem se kopírují soubory, kterých stahování skončilo s chybou (v novém cyklu se přepíšou do waiting)
  • finished - sem se kopírují soubory, kterých stahování skončilo úspěšně
K vlastním řešení

Snažím se se řešení koncipovat jako modulární tak, aby bylo možné celkem jednoduše doplnit modul pro vytváření i zpracování job-ů pro jakýkoliv další download manager. Podobné je to i na straně Kodi. Dnes umí doplněk stahovat tituly z doplňku Stream Cinema Cz/Sk, Stream Cinema Community (kromě extrerních tiulků) i YouTube (kromě MPEG-DASH) a celé řadě další běžných video doplňků. Nyní pracuji na verzi, která by dokázala zpracovat a stáhnout streamy přenášené protokolem HLS i MPEG-DASH. Samozřejmě ale jen těch bez DRM. A blíží se doba, kdy snad budu umět ze Stream Cinema Community stáhnout i externí titulky.

Protože máme doma více Kodi, okamžitě vyvstala otázka, zda může existovat v každém z nich vlastní doplněk Downloader, přičemže všechny budou zasílat své job-y jedné společné cílové aplikaci na NAS. Po drobné úpravě, zejména v logice funkce scriptu Watcher, to možné je. Doplnil jsem jen kontrolu stavu, zda už nebyl job pro stažení nějakého titulu vygenerován dříve. Předejde se tak tím vícenásobné stahování jednoho titulu.

Nyní plánuji ještě vylepšení, kdy doplněk Downloader bude schopný číst obsah adresářů které používá script Watcher (viz výše) a zobrazovat je v Kodi a provádat v něm přesuny zadané uživatelem.
 
Citovat
#2
Jistě zajímavé. Už při čtení jsem pro sebe první doplněk začal chápat jako Download Inspector a celý systém jako Downloader (Podtrhuji slovo systém).

A teď, i přes větu
V současné době ho zatím zvěřejňovat nehodlám,
ti nezávidím zaplněnou poštu.
 
Citovat
#3
@meda: Upřímně, najít správné pojmenování doplňku je vždy takový porod. A tady je to o to horší, že to má célé poměrně dlouhou historii. Původně to bylo celé napsané jako doplněk se script a service částí, a stahování prováděl vlastní doplněk. Pak jsem stahování vytáhl do systému (CoreELEC) a použil wget, a nakonec jsem to stahováné celé vyšoupl do jiného systému, což se ukázalo jako úplně nejlepší řešení. A ano, jak to popisješ ty, tak to názvosloví odpovídá více.

S tím zveřejněním bojuji. Dát ven doplněk, který i laikům ukáže zdrojové adresy streamů SCC, se mi dnes, kdy komunita kolem SCC dělá vše pro to, aby tuto možnost ztížila, samozřejmě nechci. Na druhou stranu, kdo jen trochu přemýšlí, dokáže si ty adresy získat také, takže žádný absolutně platný způsob, jak ty adresy skrýt, (zatím) neexistuje. Ale jak říká klasik, "Nemusí pršet, stačí jen když kape", takže každý způsob, jak získání adresy streamu ztížit, se hodí. Zveřejnění doplňku Downloader by tohle bohužel postavilo na hlavu. Třeba čas ukáže...
 
Citovat
#4
Jestli se tohle dostane do rukou BFU a práskačů, tak to může být problém...
Jinak pochvala za velmi praktický doplněk, který ale defacto nelze použít  1
2xRPI3,LibreELEC 9.2,Sandisk 32Gb,Sony Android TV
 
Citovat
#5
Souhlas. Netřeba to ulehčovat.
X96max plus 4/32 + CE 21 + skin Confluence SCC / TV Samsung QE55Q6FNA
X96max plus 4/32 + CE 20.5 + skin Confluence SCC

AVR Denon 1600H / Dali Spektor 5.1
Win10pro + Kodi19.5
NAS Synology 215j 3TB Raid1
Router Turris 1.1
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)