Filed under: download

HTML5 je fajn, ale má i své stinné stránky

V dnešní době je moderní plivat na Flash, technologie okolo něj a naopak do nebes vyzdvihovat HTML5 (mimochodem stále ve fázi ranné bety, někde jsem dokonce četl ze s finální verzí se počítá kolem roku 2025 nebo nějaký podobný celkem ujetý letopočet). Moc mu taky fandím, určitě to bude krok dopředu, ale na druhou stranu je potřeba si sundat růžové brýle a uznat, že jsou prostě úlohy na které se tak úplně nehodí.

Typickým příkladem je z mého pohledu třeba streaming, ať už audio nebo video. Kromě neexistence ekvivalentu pro Flash Media Server (FMS), proti kterému by jako protějšek mohl fungovat HTML5 nebo Javascript klient. To tu ale teď nechci rozebírat. Nezanedbatelným problémem ale může být přílišná otevřenost celé platformy postavené na HTML5. Ukážu to třeba na známé streaming službě Grooveshark, která relativně nedávno přešla z Flash + FMS na HTML5 + HTTP progressive download.

V čem je tedy z hlediska provozovatele problem ? Kombinace Flash + FMS nabízí relativní bezpečí v podobě uzavřené platformy (samozřejmě všechno jde když se chce, ale není to triviální). Komunikaci mezi klientem a serverem nemáte tak úplně na talíři a nemůžete si celkem jednoduše udělat svého klienta, který bude dělat to co vy potřebujete, tedy ne přehrávat stream, ale prostě ho ukládat na disk. Naproti tomu HTML5 je tak otevřené, že naprosto není problém komunikaci vysledovat a podle toho se zařídit. Vzledem k tomu, že klientská část je navíc typicky napsana v Javascriptu, máte navíc i dispozici rovnou zdrojové kódy originálního klienta.

Nevěříte ? Tak se pojdte podívat na ten zmíněný Grooveshark... 

1) zapneme Firebug a do vyhledávacího políčka napíšeme co nás zajímá, v mém případě Prodigy - Climbatize

0_searchbox

2) veškerá komunikace probíhá v plain textu jako výměna JSON objektů, takže to už dál nebudu uvádět... na http://listen.grooveshark.com/more.php?getSearchResultsEx se pošle query, je tam nějaká omáčka okolo, kterou nebudu rozebírat, z obsahu POSTu je to celkem zřejmé, důležitý je hlavně parametr "query", který obsahuje náš hledaný výraz "prodigy"

1_searchquery

3) vrátí se nám výsledek, v kterém nás zajímají 2 věci, zda je náš hledaný song v databázi a když ano, jaké je jeho SongID

2_searchresult

4) takže SongID bysme měli a dál nás bude zajímat tzv. FileToken, ten získáme na adrese http://listen.grooveshark.com/more.php?getTokenForSong, kam jako parametr předáme naše SongID, které jsme získali v předchozím kroku

3_gettokenforsong

5) jako odpověd se nám vrátí FileToken, který společně se SongID použijeme pro získání dalšího parametru a sice streamKey o který nám celou dobu jde... začíná se to trochu komplikovat, ale nebojte teďka už to bude rychlé, jsme v půlce...

4_tokenresult

6) takze zavoláme adresu http://cowbell.grooveshark.com/more.php?getStreamKeyFromSongIDEx kam předáme SongID a token, ten nejřív musíme přepočítat, což nebudu rozebírat, postup přepočtu se dá najít v dokumentaci, a nebo nejjednodušší je prostě použít příslušné GS API, které je součástí JS knihovny, která se natahuje do stránky

5_streamkeyquery

7) výsledek, ale stojí za to, protože v něm už máme všechno co potřebujeme pro to, abysme složili URL streamu, tedy ip a streamKey

6_streamkeyresult

8) už to skoro je, takže ted zavoláme http://XXX.grooveshark.com/stream.php, kde XXX hodnota ip, kterou jsme před chvílí získali a jako parametr předáme streamKey

7_streamquery

9) jako response se nám už ted vrací rovnou audio/mpeg data, která stačí uložit na disk

8_getstream

10) no a odměna je sladká.... úplně normální mp3 ve slušném bitrate 192kbit/s a vetšinou dokonce i otagovaná ;-)

9_voila

 

Veselé že ? Hlavně pro provozovatele....

Abych to tedy shrnul, přestože se tváříte jako streaming služba a máte tak i zřejmě postavené smlouvy s labely, tak si od vás kdokoliv může nejen streamovat ale i prostě cokoliv stáhnout. Myslím že stačí už jen dodat, že pokud máte dost kvalitního obsahu jako třeba Grooveshark, tak "alternativní" klienti, jsou už samozřejmost, např. tenhle SciLor's grooveshark(tm).com Downloader zařídí vše potřebné za vás v podobě jednoduché, ale pohodlné win32 aplikace.

Tak co, pořád je Flash jen zlo? ;-)