načítání...
nákupní košík
Košík

je prázdný
a
b

Kniha: Programujeme Mashup aplikace -- pro Web 2.0 v PHP - Shu-Wai Chow

Programujeme Mashup aplikace -- pro Web 2.0 v PHP
-15%
sleva

Kniha: Programujeme Mashup aplikace -- pro Web 2.0 v PHP
Autor:

Vytvářejte moderní webové aplikace pro Web 2.0 za použití API známých internetových služeb. Naprogramujete tak moderní a atraktivní web bez větší námahy – pomocí mashupů. ... (celý popis)
Titul doručujeme za 2 pracovní dny
Vaše cena s DPH:  199 Kč 169
+
-
rozbalKdy zboží dostanu
5,6
bo za nákup
rozbalVýhodné poštovné: 69Kč
rozbalOsobní odběr zdarma

hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%   celkové hodnocení
0 hodnocení + 0 recenzí

Specifikace
Nakladatelství: » Computer press
Médium / forma: Tištěná kniha
Rok vydání: 2008-04-28
Počet stran: 280
Rozměr: 167 x 225 mm
Úprava: 280 stran : ilustrace
Vydání: Vyd. 1.
Název originálu: PHP Web 2.0 Mashup Projects
Spolupracovali: překlad Jakub Zemánek
Vazba: brožovaná lepená
Téma: mashupy
ISBN: 9788025120576
EAN: 9788025120576
Ukázka: » zobrazit ukázku
Popis

Vytvářejte moderní webové aplikace pro Web 2.0 za použití API známých internetových služeb. Naprogramujete tak moderní a atraktivní web bez větší námahy – pomocí mashupů. Unikátní kniha se věnuje všemu, co je třeba znát, abyste byli schopni naprogramovat vlastní webovou aplikaci využívající API internetových služeb. S knihou vytvoříte 5 konkrétních aplikací, především ovšem znalosti využijete při programování vlastních efektivních mashup aplikací v PHP. Výklad nevyžaduje žádnou znalost Ajaxu, webových služeb a API aplikací využívaných v knize – vše potřebné autor vysvětlí. Publikace je tak vhodná pro všechny, kteří mají alespoň základní znalosti programování v PHP. S knihou se mimo jiné naučíte: - Rozšířit váš web a aplikace pomocí mashupů - Sami vytvářet vlastní mashup aplikace - Využít jazyk PHP pro vývoj mashupů - Proniknout do API známých internetových služeb - Vytvořit aplikaci pro nákup na Amazon.com - Naprogramovat vlastní vyhledávač pracující s API MSN Search a Yahoo! - Implementovat plně funkční videotéku s využitím YouTube a Last.fm - Zobrazovat obrázky z Flickru v mapách Google Maps O autorovi: Shu-Wai Chow působí řadu let jako programátor, vývojář a webmaster. Během své praxe získal jako programátor zvláště webových aplikací znalosti jazyků a technologií, jako je Java, JSP, PHP, ColdFusion, LDAP, XSLT a XSL-FO. Aktuálně působí v USA jako softwarový inženýr.

Předmětná hesla
Kniha je zařazena v kategoriích
Recenze a komentáře k titulu
Zatím žádné recenze.


Ukázka / obsah
Přepis ukázky

133

Nejběžnější použití tohoto elementu je pro specifikaci

souboru MP3 v podcastu.

guid Ne Unikátní identifikátor položky.

pubDate Ne Datum publikace položky.

source Ne Zdroj položky pocházející od třetí strany. Používá se při

citacích položek.

Formát Atom

Existuje nový, třetí, formát pro publikování kanálů s názvem Atom. Tento formát sepokouší spojit rozšiřitelnost a jednoduchost nabízené jednotlivými verzemi RSS. Z pohledustruktury používá formát Atom pro kanály podobný model jako RSS – metadata následovaná

záznamy. Názvy elementů jsou však trochu odlišné. V tomto projektu nebudeme formát

Atom používat, ale je dobré o něm vědět. Ačkoli se jedná o nejméně vyzrálý formát a jeho

podíl na trhu je relativně malý, jedná se o jediný formát podporovaný hlavnímistandardizačními komunitami (obzvláště komunitou Internet Engineering Task Force) a již hopoužívají takové veličiny jako je Google News. Seznámení s YouTube Dnes již stránku YouTube asi není třeba nikomu představovat. Tato stránka je stejným velikánem jako ostatní dříve diskutované stránky – Amazon, Google, Yahoo! aMicrosoft Live Search. Odkazy na videa uložená na tomto serveru se často předávají pomocí e-mailů. Pro případ, že nejste příliš informováni, v rychlosti si stránku YouTubepředstavíme, ukážeme si některé dostupné funkce a webové rozhraní API. V kostce je YouTube stránka umožňující uživatelům sdílet svá domácí videa sveřejností pomocí Internetu. Uživatelé mohou uploadovat jakékoli video chtějí (s ohledem na dodržování autorských práv) a ostatní uživatelé si ho mohou přehrát a okomentovat. Druhá z uvedených funkcí umožnila vedle sdílení videí také vznik silné sociálníinfrastruktury. Některé z dostupných funkcí stránky YouTube jsou tyto:

X Značkování videí – YouTube spoléhá na uživatelskou komunitu, aby správně označila videa v repozitáři. Za tímto účelem mají uživatelé právo připojovat

popisná slova či krátké fráze ke konkrétním videím. Tento proces je známý jako

značkování (tagging). Např. pokud sleduji klip kapely Kabát s názvem Šaman,

umožní mi YouTube označkovat klip značkami jako je Kabat, Saman, Rock, Czech

atd.

X Vyhledávání videí – YouTube disponuje robustním vyhledávačem, kterýpracuje na základě značek videí. Díky vyhledávání podle značek se označení videí

stává demokratickou záležitostí. Pokud by YouTube vyhledával pouze nazákladě označení, které poskytl uživatel, jenž video poskytl, měla by tato osoba veliký

Seznámení s YouTube

Dceřiný element Povinný Popis


134

Kapitola 4: Naše vlastní videotéka

vliv na to, jestli se video ve výsledcích hledání objeví nebo ne. Tím, že se prověří

také značky videa, najde vyhledávač i videa, o kterých si uživatelská komunita

myslí, že by měla být součástí výsledků hledání. V našem příkladu s kapelou Kabát

nemusel uživatel, jenž video nahrál, uvést, že se jedná o českou kapelu. Protože

je však k dispozici značka Czech, může kdokoli hledající české klipy nalézt také

tento klip kapely Kabát.

X Přihlášení k odběru videí – YouTube sleduje vkládání videí jednotlivýmiuživateli. Díky tomu je možné, aby se ostatní uživatelé přihlásili k odběru nahrávek

určitého uživatele. Svými videi si díky tomu už několik lidí vysloužilo naYouTubu svých 15 minut slávy.

X Komunita – YouTube umožňuje vybudování silné sociální infrastruktury tím,

že umožňuje uživatelům komentovat videa.

X Vkládání do jiných stránek – YouTube umožňuje uživatelům, aby vkládali

videa na své vlastní stránky. YouTube pak v podstatě vystupuje jako poskytovatel

úložného prostoru pro videa. Externí stránky mohou mimo to také zobrazovat

pouze rychlý náhled videa s odkazem na video a všechny s ním spojenéinformace na YouTube. Sociální síť okolo YouTube nahrála do karet vzniku webové služby s dobrým jménem, čehož stránka také náležitě využila. Rozhraní API pro vývojáře Stejně jako některé jiné webové služby, se kterými jsme se setkali, vyžaduje také rozhraní API serveru YouTube, aby se při volání webové služby serveru předal iidentifikátor vývojáře. Tento identifikátor můžete získat na adrese http://www.youtube.com/ signup?next=my_profile_dev. Poté, co máte vlastní identifikátor, můžete se ponořit do dokumentace. Dokumentace se nachází na adrese http://www.youtube.com/dev_docs. Dostupné operace se dělí do dvou kategorií. Operace se může vztahovat k uživatelským informacím nebo k zobrazení videa.YouTube používá pro pojmenování nabízených metod tečkovou notaci podobnou jazyku Java. Např. metoda pro přístup k profilu uživatele má název youtube.users.get_pro- file, metoda pro přístup k seznamu nabízeních videí má název youtube.videos.list_ featured. Každou metodu je možné zavolat buďto pomocí REST nebo XML-RPC. Požadavek REST bere jako parametr název metody společně s jakýmikoli dalšími potřebnýmiparametry. Používá se zápis ve tvaru http://www.youtube.com/api2_rest?method=NÁZEV_M ETODY&parametr1=HODNOTA1¶metr2=HODNOTA2. Pojďme se podívat např. na metodu get_profile, která získá profil uživatele. Dokumentace této metody(nacházející se na adrese http://youtube.com/dev_api_ref?m=youtube.users.getprofile) říká, že tato metoda vyžaduje tři parametry:


135

X Parametr method představuje název samotné metody. Pro metodu get_profile je

hodnotou tohoto parametru formální název metody, tj. youtube.users.getprofi-

le. Tento parametr se vyžaduje jen pro požadavky REST, které v tomto příkladu

používáme.

X Parametr dev_id představuje identifikátor vývojáře.

X Parametr user představuje název uživatele, jehož profil se má získat. Požadavek REST představující volání metody get_profile by vypadal následovně: http://www.youtube.com/api2_rest?method=youtube.users.getprofile&dev_id=ID_ VÝVOJÁŘE&user=NÁZEV_PROFILU. Stejné názvy metod se používají i při komunikaci pomocí XML-RPC. Při použitíXMLRPC představuje požadavek standardní volání XML-RPC s pouze jedním elementem param obsahujícím strukturu (element struct) a každým parametrem volané metody uvedeným v dceřiném elementu member elementu struct. Název volané metody se nepředává v elementu struct. Místo toho se postupuje podle standardu XML-RPC a název metody se vkládá do elementu methodName rodičovského elementumethodCall. Požadavek XML-RPC představující volání metody get_profile by vypadalnásledovně:

<?xml version=“1.0“ ?>

<methodCall>

<methodName>youtube.users.get_profile

<params>

<param>

<value>

<struct>

<member>

<name>dev_id

<value>

<string>ID VÝVOJÁŘE

</value>

</member>

<member>

<name>user

<value>

<string>NÁZEV PROFILU

</value>

</member>

</struct>

</value>

</param>

</params>

</methodCall>

Seznámení s YouTube


136

Kapitola 4: Naše vlastní videotéka

Odpověď serveru vždy představuje dokument XML. Odpověď na volání každé metody

detailně popisuje dokumentace. Pokud se použije REST, je odpovědí řetězecobsahující dokument XML. Pokud se použije XML-RPC, pak se tentýž řetězec s dokumentem

XML naformátuje jako platná odpověď XML-RPC.

Na metodě get_profile si můžeme ukázat, jak to celé pracuje. Informace o struktuře

konkrétní odpovědi se nachází v dokumentaci. Podle dokumentace bude odpověď

v případě použití REST vypadat následovně:

<user_profile>

<first_name>Petr

<last_name>Novak

<about_me>Pracuju jako programator.

...

<friend_count>3

<favorite_video_count>7

<currently_on>false

</user_profile> Pokud bychom volání provedli za pomoci XML-RPC, byl by vrácený dokument XML stejný, ale tentokrát by byl zabalen do struktury odpovědi XML-RPC:

<?xml version=‘1.0‘ ?>

<methodResonse>

<params>

<param>

<value>

<user_profile>

<first_name>Petr

<last_name>Novak

<about_me>

Pracuju jako programator.

</about_me>

...

<friend_count>3

<favorite_video_count>7

<currently_on>false

</user_profile>

</string>

</param>

</params>

</methodResponse> Jak vidíte, je rozhraní API pro YouTube jednoduché, konzistentní a dobředokumentované.


137

Seznámení s Last.fm

Stránka Last.fm (http://www.last.fm) sama sebe označuje jako největší veřejnou hudební

platformu. Jedná se o zajímavý způsob, jak najít novou hudbu vloženou uživateli.Uživatelé se mohou pro přístup ke stránce zaregistrovat zdarma. Poté je třeba stáhnout si

malý klientský program, který poběží na vašem počítači. Tento program sleduje jakou

hudbu si pouštíte v přehrávačích médií jako je iTunes nebo WinAmp. Hudbu můžete pomocí programu také označkovat. Program poté odešle informace o přehrávané

hudbě, včetně značek, serveru Last.fm. V závislosti na získaných informacích ointerretech, skladbách, žánrech a na tom, jak ostatní uživatelé označkovali skladby,vytvoří server Last.fm váš hudební profil. Tento profil pak používá k tomu, aby vytvořil vaši

vlastní streamovanou stanici rádia, kterou můžete poslouchat pomocí klientskéhoprogramu a také k tomu, aby doporučil další interprety a skladby, jež se podobajíhudebnímu stylu, který máte rádi.

Poznámka: Ostražitým uživatelům mohou pochopitelně vstávat vlasy na hlavě připředstavě instalace programu, který odesílá informace o jejich hudebních preferencích serveru

nacházejícímu se neznámo kde. Server Last.fm však odvádí při ochraně vašeho soukromí

dobrou práci. V prvé řadě je klientský program open-source. Neobsahuje žádný malware,

který by mohl ohrozit vaše soukromí a zabezpečení vašeho počítače a jeho programový

kód je pro všechny zcela otevřený. Za druhé jejich licenční ujednání jasně uvádí, že server

nesdílí vaše osobní informace s žádnou další stranou. Konečně se pak při registracinevyžaduje zadání informací jako je adrese nebo celé jméno, ačkoli můžete zadat svůj kód ZIP

nebo poštovní kód, abyste získali seznam hudebních událostí ve vaší oblasti. Hudebníprofil, který se vygeneruje, je spjat s vytvořeným uživatelským účtem. Jakékoli osobníinformace týkající se vaší osoby, coby jednotlivce, se nevyžadují. Jak budeme v tomto projektu a příkladech postupovat, demonstrujeme si vše na základě mého osobního uživatelského účtu. To zaručí, že příklady skutečně fungují. Přejete-li si tento projekt upravit pro svou potřebu, měli byste zvážit vytvoření účtu a uploadování dat o přehrávaných skladbách skrze klientský program proserver Last.fm. Webová služba Audioscrobbler Webová služba Audioscrobbler je webová služba umožňující přístup k datům zobrazeným na stránkách Last.fm. Domovská stránka této služby se nachází na adrese http://www.audioscrobbler.net/data/webservices. Tato webová služba je v podstatě kolekcí kanálů RSS, které spadají do několika kategorií:

X Data o uživatelském profilu – největší kolekce kanálů. Tato kategorieposkytuje data o určitém uživateli. Jsou zde např. kanály uvádějící uživatelemnejčastěji poslouchané interprety a skladby.

X Data o interpretovi – tato kategorie agreguje data o všech interpretech vdatabázi Last.fm. Zadáním jména interpreta můžete získat informace jako jsou jeho

Webová služba Audioscrobbler


138

Kapitola 4: Naše vlastní videotéka

nejvíce poslouchané skladby na serveru Last.fm, jejich největší fanoušky,uživatele, kteří ho poslouchali nejvíce atd.

X Data o albu – tato kategorie obsahuje informace o albech. S touto kategorií je

momentálně spojen pouze jeden kanál. Zadáním názvu alba do kanálu Info je

možné získat seznam skladeb tohoto alba.

X Data o skladbě – zde je možné získat informace o specifických skladbách.

X Data o značkách – stejně jako YouTube umožňuje i Last.fm uživatelůmpopisovat skladby značkami.

X Data o skupině – podobně jako u ostatních stránek s veřejně dostupnouhudbou i stránka Last.fm nabízí skupiny, do nichž se mohou uživatelé přihlašovat.

Informace o tom, co členové v těchto skupinách poslouchají, jsou dostupné na

kanálech této kategorie.

X Data z diskusního fóra – stránka Last.fm nabízí diskusní fórum. Příspěvky jsou

dostupné pomocí kanálu RSS.

X Protokol LiveJournal – služba Audioscrobbler je schopna komunikovat

s webovou službou LiveJournal a umožňuje přístup k protokolu tétokomunikace. Při pohledu na domovskou stránku webové služby Audioscrobbler je patrné, že každý kanál může být až ve čtyřech formátech – čistý text, obecné XML, XSPF nebo RSS. Dostupné formáty jsou často dány účelem kanálu. Nedávalo by např. smyslposkytovat informace o uživatelích ve formátu XSPF, formátu vytvořeném speciálně proprezentaci playlistů. Tato webová služba není příliš dobře dokumentovaná, ale je velmi jednoduchá a funkci dokumentace přebírají příklady. Na domovské stránce služby se nachází odkazy na kanály v různých formátech, které slouží jako příklady použití kanálů. Ty z těchto příkladů, které získávají uživatelské informace pracují s uživatelem RJ, což je uživatelské jméno jednoho z původních zakladatelů Last.fm. Příklady získávající informace o interpretech pracují s kapelou Metallica. Chcete-li kterýkoli z kanálů použít, jednoduše použijte URL kanálu a formátu, který chcete a nahraďte použité uživatelské jméno resp. jméno interpreta požadovaným uživatelským jménem resp. jménem interpreta. Pojďme se podívat na některé z příkladů. S kanály služby Audioscrobbler sesnadno pracuje i experimentuje, protože jsou pouhými URL a pro jejich použití není zapotřebí žádný identifikátor vývojáře. Domovská stránka služby nabízí odkazy na kanály obsahující uživatelem nejčastěji přehrávané skladby ve formátu čistého textu, ve formátu XML serveru Last.fm a ve formátu XSPF. URL ke kanálu pro získání nejoblíbenějších skladeb uživatele RJ ve formátu XSPF by vypadalo takto: http://ws.audioscrobbler.com/1.0/user/RJ/toptracks.xspf. Pokud si přejete získat informace o mých oblíbených skladbách, stačí uživatelské jméno RJ nahradit mým uživatelským jménem na serveru Last.fm: http://ws.audioscrobbler.com/1.0/user/ShuTheMoody/toptracks.xspf.


139

Příklady s kanály obsahujícími informace o interpretech používají kapelu Metallica. Pro

zobrazení seznamu největších fanoušků této kapely na serveru Last.fm stačí použít odkaz

na kanál s názvem Top Fans na domovské stránce: http://ws.audioscrobbler.com/1.0/

artist/Metallica/fans.xml. Pro zobrazení největších fanoušků jiného interpreta stačí

adekvátně změnit výraz Metallica v URL: http://ws.audioscrobbler.com/1.0/artist/

Donnas/fans.xml.

Parsing pomocí PEAR

Kdybychom začali s vytvářením mashupu už nyní, museli bychom vytvořit tři různé

parsery pro zpracování všech tří formátů odpovědí, které jsme si představili – formát

XSPF, odpověď od serveru YouTube ve formátu XML a formát RSS. Museli bychom

se prokousat dokumentací a vytvořit flexibilní parsery pro všechny tyto formáty.

Pokud se struktura odpovědi kteréhokoli z těchto zdrojů změní, museli bychom

změnit programový kód našeho parseru. Nejedná se o těžký úkol, ale je vhodné

upozornit na to, že někdo jiný už tuto práci udělal za nás. Někdo jiný už data z kódu

XML vyextrahoval. Abychom ušetřili čas, použijeme výsledek této práce v našem

mashupu.

PEAR jsme použili již dříve, v kapitole 1, při parsingu XML-RPC. Pro tento projekt opět

použijeme PEAR, který nás ušetří před vytvářením parserů pro všechny dokumenty

XML, se kterými se setkáme.

Pro potřeby tohoto projektu se podíváme na tři balíky. Balík File_XSPF slouží proextrakci dat a vytváření playlistů ve formátu XSPF. Balík Services_YouTube je balíkvytvořený speciálně pro práci s rozhraním API serveru YouTube. Konečně pak balík XML_RSS

slouží pro práci s kanály RSS.

V případě našeho projektu máme štěstí, že jsou k dispozici tři specifické balíky, které

vyhovují našim požadavkům na použité formáty. Pokud bychom potřebovali pracovat

s dokumenty XML, které nejsou ve formátu jemuž odpovídá některý balík PEAR, bylo

by možné použít balík XML_Unserializer. Tento balík vezme dokument XML a vrátí jej

jako řetězec.

Je PEAR to pravé pro vás?

Ještě než začnete instalovat balíky PEAR, je vhodné podívat se, zda -li je jejich použití pro konkrétní projekt vůbec vhodné. Balíky PEAR se instalují pomocí správce balíků,

nástroje pro příkazový řádek dostupného v každé instalaci jazyka PHP. Abyste mohli

nainstalovat balík PEAR, musíte mít na serveru práva administrátora. Pokud se nacházíte v situaci, kdy si hosting platíte a vaše hostingová společnost není změnám příliš

nakloněna, anebo se nacházíte v přísném firemním prostředí, ve kterém je prosazení

každé změny na serveru větší boj, než stojí za to, nemusí být instalace balíku PEARmožným řešením. Tyto problémy lze obejít stažením souborů balíku PEAR a jejich instalací

do vašeho adresáře přístupného přes webový server. Poté byste však museli závislosti mezi balíky a aktualizace balíků řešit sami. Tyto starosti nemusí stát za to a může být

vhodnější vytvořit vlastní programový kód pro zajištění požadované funkcionality.

Na druhou stranu použití balíků PEAR často značně spoří čas. Účelem balíků je buďtozjednodušit náročné úkoly nebo interface pro přístup ke komplexním systémům. Tvůrce balíku

Parsing pomocí PEAR


140

Kapitola 4: Naše vlastní videotéka

PEAR už udělal obtížnou práci za nás. Navíc protože se balíky vytváří v jazyce PHP a nikoli

v jazyce C, jak je tomu v případě rozšíření, měl by být dobrý vývojář v PHP schopenprostudovat programový kód balíku, v případě, že chybí dokumentace. Poslední klíčovouvýhodou mnoha balíků, včetně těch, na které se podíváme, je, že jsou to objektově orientované

reprezentace čehokoli, s čím komunikují. Hodnoty je možné získat jednoduchým přístupem

k atributu objektu a složité operace lze provést jednoduchým zavoláním metody. Topomáhá udržovat programový kód čistý a modulární. To, jestli výhody PEAR převáží nadpotenciálními obtížemi s nasazením, závisí na konkrétní situaci. Instalace a použití balíků Stejně jako v případě instalace balíku XML-RPC použijeme pro instalaci třechuvedených balíků příkaz install. Pokud si vzpomínáte, stačí pro instalaci balíku jednoduše do příkazového řádku zadat příkaz install následovaný názvem balíku. V tomto případě však bude zapotřebí nastavit ještě další možnosti, abychom přiměli instalátor kinstalaci kódu jenž je ve stadiu beta-testování a ověření všech závislostí. Pro instalaci balíku File_XSPF se přihlaste k počítači jako správce a zadejtenásledující příkaz:

[Pocitac:~] root# /usr/local/php5/bin/pear install –f --alldeps File_XSPF

Tento příkaz zajistí stažení a instalaci balíku (/usr/local/php5/bin/pear, případněnahraďte umístěním PEAR na vašem počítači). Možnost –alldeps specifikuje, že se majízkontrolovat závislosti a případně doinstalovat potřebné balíky. O stavu a výsledcíchstahování a instalace budete informováni.

Podobným příkazem se nainstaluje balík Services_YouTube:

[Pocitac:~] root# /usr/local/php5/bin/pear install –f --alldeps

Services_You Tube

Obyčejně nebude možnost –f zapotřebí. Ve výchozím nastavení stáhne PEARnejnovější stabilní verzi balíku. Možnost –f, neboli force, přinutí PEAR, aby stáhl nejaktuálnější

verzi balíku, bez ohledu na to, jestli byla označena jako stabilní nebo ne. V době psaní

této publikace balíky File_XSPF a Services_YouTube nemají stabilní verze, pouze beta,

resp. alfa-verzi. Z tohoto důvodu je nutné pro získání a instalaci balíku použít možnost

–f. V opačném případě bude PEAR hlásit, že nejnovější verze není k dispozici. Pokud

je balík, který si přejete stáhnout, dostupný ve stabilní verzi, pak možnost –fnebudete potřebovat.

To je také případ balíku XML_RSS, pro který je dostupná stabilní verze.

[Pocitac:~] root# /usr/local/php5/bin/pear install --alldeps XML_RSS

Po provedení těchto kroků a zadání příkazu list-all by měl PEAR zobrazit tři nové

balíky společně s dalšími balíky, které jste měli dříve.


141

Balíky PEAR jsou v podstatě skripty jazyka PHP, které PEAR nainstaluje do adresáře

includes jazyka PHP. Cestu k tomuto adresáři specifikuje direktiva include_path vkonfiguračním souboru php.ini. Otevřete daný adresář pro zobrazení zdrojovýchsouborů balíků PEAR. Pro použití balíku PEAR je třeba ke skriptu připojit zdrojový soubor

balíku, zpravidla hned na začátku skriptu. Pro informace týkající se připojení hlavního

souboru balíku prostudujte jeho dokumentaci. Např. balík File_XSPF se aktivujepřipojením souboru s názvem XSPF.php. PEAR umístil soubor XSPF.php do adresáře File, který

je podadresářem adresáře includes.

<?php

require_once ‘File/XSPF.php‘;

// zde je již balík File_XSPF dostupný Balík File_XSPF Dokumentace nejnovější verze tohoto balíku se nachází na adrese http://pear.php.net/ package/File_XSPF/docs/latest/File_XSPF/File_XSPF.html. Balík se velmi snadno používá. Jeho srdcem je objekt s názvem XSPF. Vytvořímeinstanci tohoto objektu a použijeme ji pro práci s playlistem. Objekt má metody pro získání i modifikaci hodnot z playlistu, stejně jako obslužné metody pro načtení playlistu do paměti, uložení playlistu z paměti do souboru na disku a konverzi formátu XSPF na jiné formáty. Získání informací z playlistu se skládá ze dvou snadných kroků. V prvé řadě seumístění souboru XSPF předá metodě parse objektu. To zajistí načtení souboru do paměti. Poté, co je soubor načten, je možné použít řadu metod pro získání hodnot z playlistu. Většina z těchto metod slouží pro získání metadat o samotném playlistu. Pro získání informací o skladbách uvedených v playlistu je třeba použít metodu getTracks. Tato metoda vrátí pole objektů XSPF_Track. Každý objekt XSPF_Track v tomto polireprezentuje jednu skladbu. Následně lze použít metody objektů XSPF_Track pro získáníinformací o jednotlivých skladbách. Pro ilustraci toho, jak to celé funguje, použijeme playlist ze serveru Last.fm. Webováslužba nabízí mimo jiné playlist skladeb nejčastěji přehrávaných určitým uživatelem. Tento playlist s názvem Top Tracks se nachází na adrese http://ws.audioscrobbler.com/1.0/ user/UZIV_JMENO/toptracks.xspf, kde UZIV_JMENO je uživatelské jméno uživatele serveru Last.fm, který nás zajímá. Následující skript naleznete mezi příklady jako soubor s názvem testPearXSPF.php. Používá balík File_XSPF pro získání playlistu s mými oblíbenými skladbami naserveru Last.fm.

<?php

require_once ‘File/XSPF.php‘;

$objXspf =& new File_XSPF();

Instalace a použití balíků


142

Kapitola 4: Naše vlastní videotéka

// načtení souboru XSPF do paměti

$objXspf->parseFile(‘http://ws.audioscrobbler.com/1.0/user/

ShuTheMoody/toptracks.xspf‘);

// získání všech skladeb v playlistu

$skladby = $objXspf->getTracks();

?> V první části dochází k vytvoření instance objektu XSPF a načtení playlistu do paměti. Nejdříve připojíme ke skriptu balík File_XSPF. Poté vytvoříme instanci objektu. Metoda parseFile se používá pro načtení souboru XSPF ze sítě. Tím se zvolený playlist načte do objektu XSPF. Poté použijeme metodu getTracks pro transformaci skladeb uvedených v playlistu na objekty XSPF_Track.

<html>

<head>

<meta http-equiv=“Content-Type“ content=“text/html; charset=utf-8“ />

<title>Kanál Top Tracks na serveru Last.fm

</head>

<body>

Název: <?= $objXspf->getTitle() ?>

Autor: <?= $objXspf->getCreator() ?> Dále se připravíme na zobrazení obsahu playlistu. Ještě než tak ale učiníme, získáme nějaké informace o samotném playlistu. Metoda getTitle objektu XSPF vrací element title souboru XSPF. Metoda getCreator vrací element creator souboru.

<?php foreach ($skladby as $skladba) { ?>

<p>

Název: <?= $skladba->getTitle() ?>

Interpret: <?= $skladba->getCreator() ?>

</p>

<?php } ?>

</body>

</html> Na závěr pak cyklem projdeme polem skladeb. Jednotlivé prvky pole skladeb,objekty XSPF_Track, v cyklu postupně přiřadíme do proměnné $skladba. Objekt XSPF_Track má také metody getTitle a getCreator. Na rozdíl od stejnojmenných metod objektu XSPF metoda getTitle v tomto případě vrací název skladby a metoda getCreator vrací jméno interpreta skladby. Pokud tento skript otevřete ve webovém prohlížeči, zobrazí se seznam skladebzískaných ze serveru Last.fm.


143

Balík Services_YouTube

Balík Services_YouTube pracuje na velmi podobném principu jako balík File_XSPF.Stej

ně jako balík File_XSPF je i balík Services_YouTube objektově orientovanou abstraktní

vrstvou nacházející se nad komplexnějším systémem. V tomto případě je tento systém

rozhraní API serveru YouTube.

Používání balíku Services_YouTube je v mnohém stejné jako používání balíku File_XSPF.

Stačí připojit balík ke skriptu, vytvořit instanci objektu Services_YouTube a použít metody

tohoto objektu pro práci se službou. Oficiální dokumentace poslední verze balíkuSer

vices_YouTube se nachází na adrese http://pear.php.net/package/Services_YouTube/

docs/latest/. K balíku jsou dostupné také příklady nacházející se na adrese

http://pear.php.net/manual/en/package.webservices.services-youtube.php.

Instalace a použití balíků


144

Kapitola 4: Naše vlastní videotéka

Mnoho metod slouží pro získávání informací o uživatelích, jako jsou informace z jejich

profilu a o videích, která uploadovali. Menší, avšak velmi důležitá, množina metod se

používá pro přístup k videím na serveru YouTube. Tyto metody použijeme v našem

mashupu. Konkrétně použijeme metodu listByTag pro získání seznamu videíoznačených specifickou značkou.

Metoda listByTag se dotáže serveru YouTube a odpověď ve formátu XML uloží dopaměti. Nevrací pole video objektů, se kterými bychom mohli přímo pracovat. Toho však lze

dosáhnout pomocí jednoho dalšího volání. Následně můžeme cyklem toto pole videí

projít, podobně jako tomu bylo u skladeb XSPF.

Příklad uložený v souboru testPearYouTube.php ilustruje tento postup.

<?php

require_once ‘Services/YouTube.php‘;

$idVyv = ‘Váš identifikátor vývojáře pro přístup k YouTube‘;

$znacka = ‘Social Distortion‘;

$youtube = new Services_YouTube($idVyv, array(‘usesCache‘ => true));

$videa = $youtube->listByTag($znacka);

?> Nejdříve připojíme ke skriptu balík Services_YouTube. Protože webová služba serveru YouTube vyžaduje pro přístup identifikátor vývojáře, uložíme jej do lokální proměnné s názvem $idVyv. Poté do další lokální proměnné, s názvem $znacka, uložíme značku, s jejíž pomocí budeme vyhledávat. V tomto příkladu budeme na YouTube hledat videa jedné z mých nejoblíbenějších skupin s názvem Social Distortion. Prvním parametrem konstruktoru třídy Services_YouTube je identifikátor vývojáře, který se pak použije při každém dotazu na webovou službu YouTube. Druhým parametrem konstruktoru je pole možností. Jednou z možností použitých v tomto příkladu je použití vyrovnávací paměti pro dotazy. Obecně se považuje použití vyrovnávací paměti za vhodné, aby nedocházelo k přetěžování serveru YouTube a zbytečně jste si nevyčerpávali váš limit na požadavky. Další možností, v poli možností reprezentovanou klíčem driver, je specifikaceprotokolu – REST nebo XML-RPC. Ve výchozím nastavení používá objekt Services_YouTube REST. Pokud nemáte nezvladatelnou touhu použít XML-RPC, můžete ponechat toto nastavení tak, jak je. Po vytvoření instalace objektu můžeme zavolat jeho metodu listByTag pro získání odpovědi od serveru YouTube. Metoda listByTag bere pouze jediný parametr, kterým je požadovaná značka. Objekt Services_YouTube nyní má výsledky od serveru YouTube. Můžeme začít s jejich zobrazováním.

<html>

<head>

<meta http-equiv=“Content-Type“ content=“text/html; charset=utf-8“ />

<title>Videa skupiny Social Distortion

</head>


145

<body>

<h1>Výsledky hledání skupiny Social Distortion na serveru YouTube Následně projdeme v cyklu polem s videi. Abychom získali toto pole s video objekty, musíme nejdřív zpracovat odpověď ve formátu XML od serveru. K tomu použijeme metodu xpath objektu Services_YouTube, která využívá mocný jazyk XPATH pro průchod dokumentem XML a jeho konverzi na objekty jazyka PHP. Dotaz jazyka XPATH předáme jako parametr metody xpath, která vrátí pole odpovídajících objektů. Vdalším projektu se podíváme na jazyk XPATH a dotazy v tomto jazyce. Prozatím postačí důvěřovat tomu, že dotaz //video vrátí pole video objektů, se kterými můžeme dále pracovat. V cyklu zobrazíme název každého videa, jeho náhled a odkaz na video samotné.

<?php foreach ($videa->xpath(‘//video‘) as $i => $video) { ?>

<p>

Název: <?= $video->title ?>

<img src=‘‘ alt=‘

/><br />

<a href=‘‘>URL

</p>

<?php } ?>

</body>

</html> Otevření tohoto skriptu ve webovém prohlížeči zobrazí stránku s výsledkyvyhledávání videí podle vyhledávacích parametrům, jež jsme specifikovali.

Poznámka: Před spuštěním skriptu testPearYouTube.php je zapotřebí nainstalovat

CURL.

Instalace a použití balíků


146

Kapitola 4: Naše vlastní videotéka

Balík XML_RSS

Podobně jako předešlé balíky PEAR mění balík XML_RSS něco velmi složitého, RSS, na

něco velmi jednoduchého a snadno použitelného, objekty jazyka PHP. Kompletnídoku

mentace tohoto balíku se nachází na adrese http://pear.php.net/package/XML_RSS/

docs/XML_RSS.

V porovnání s balíky Services_YouTube a File_XSPF je zde však drobná změna vefilo

zofii. První dva zmíněné balíky načtou informace odkudkoli jim řekneme a uloží je do

atributů objektů jazyka PHP.

Např. balík File_XSPF uloží název skladby, společně s dalšími informace o skladbě, do

objektu XSPF_Track a poté můžeme použít metodu getTitle pro získání názvu skladby.

V balíku Services_YouTube se setkáváme se stejným principem, ale atributy jsou zde

veřejné, takže nejsou zapotřebí metody, které by data vracely. K informacím o videu

přistupujeme přímo pomocí atributů objektu.


147

V případě balíku XML_RSS jsou hodnoty, o které máme zájem, uloženy v asociativních

polích. Dostupné metody objektu vrací tato pole, se kterými pak přímo pracujeme. Je

to malý rozdíl, ale v případě, že vás programový kód zajímá, je třeba ho mít na paměti.

Také je třeba prostudovat dokumentaci balíku, abychom věděli, jaké klíče jsou v polích

dostupné.

Pojďme si na příkladu ukázat, jak to celé pracuje. Tento příklad naleznete meziukázkovými kódy jako soubor s názvem testPearRSS.php. Jeden z kanálů službyAudioscrobbler podává informace o skladbách nedávno přehrávaných uživatelem ve formátu RSS.

Tento kanál někdy neobsahuje žádná data, protože po několika hodinách již nejsou

přehrané skladby považovány za nedávno přehrávané. Jinými slovy informace opřehraných skladbách z kanálu jednoduše zmizí, protože jsou již příliš zastaralé. Ztohoto důvodu je pro náš příklad vhodné prozkoumat obsah kanálu pro uživatele doslova

závislého na poslechu hudby ze serveru Last.fm.

Uživatel RJ je pro naše potřeby jako dělaný. Zdá se, jako by pořád něco poslouchal.

Získáme obsah jeho kanálu služby Audioscrobbler:

<?php

include („XML/RSS.php“);

$rss =& new XML_RSS(„http://ws.audioscrobbler.com/1.0/user/RJ/

recenttracks.rss“);

$rss->parse(); Začneme připojením balíku ke skriptu a vytvořením objektu XML_RSS. Je to právě objekt XML_RSS, ve kterém se nachází všechny metody pro přístup k asociativním polím a je srdcem celého balíku. Konstruktor bere jediný parametr – cestu k souboru RSS. Při vytváření instance objektu se načte soubor RSS do paměti. Metoda parse je metodou, která provede vlastní parsing dokumentu RSS. Poté je možné volat další metody pro získání dat z kanálu. Jistě tedy není třeba dodávat, že je metodu parse nutné zavolat předtím než lze se souborem provádět něcokonstruktivního.

$kanalInfo = $rss->getChannelInfo();

?> Metoda getChannelInfo vrací pole obsahující informace o kanálu. Prvky tohoto pole obsahují elementy title, description a link souboru RSS. Každý z těchto elementů je v poli uložen pod klíčem se stejným názvem jako je název elementu.

<?= „ Data, která se vrací, jsou ve znakové sadě UTF-8. Proto nesmíme zapomenout zobrazit stránku s tímto kódováním. Tento řádek vypíše deklaraci XML na začátek webovéstránky, aby se zajistilo správné zobrazení. Pokud bychom použili běžnou deklaraci <?xml, pak by jazyk PHP tuto deklaraci zpracoval jako svůj vlastní kód. To by však vedlo kchybě, protože se nejedná o platný programový kód jazyka PHP.

Instalace a použití balíků


148

Kapitola 4: Naše vlastní videotéka

<html>

<head>

<meta http-equiv=“Content-Type“ content=“text/html; charset=utf-8“ />

<title>

</head>

<body>

<h1> Zde začínáme s vlastním zobrazením stránky. Začneme použitím pole vráceného metodou getChannelInfo pro zobrazení elementů title a description kanálu.

<ol>

<?php foreach ($rss->getItems() as $polozka) { ?>

<li>

<?= $polozka[‘title‘] ?>:

<a href=“

</li>

<?php } ?>

</ol> Poté vypíšeme položky uvedené v souboru RSS. Pro získání informací o položkách v souboru RSS použijeme metodu getItems. Ta vrací pole, kterým projdeme pomocí příkazu foreach. V těle cyklu přistupujeme k elementům title a link. Vypíšeme název skladby a poté vytvoříme hypertextový odkaz na stránku skladby na serveru Last.fm. Elementy description a pubDate ze souboru RSS jsou v poli vráceném metodougetItems také dostupné.

Odkaz na uživatele:

<a href=“

$kanalInfo[‘link‘] ?></a>

</body>

</html> Na závěr, ještě než stránku ukončíme koncovými značkami elementů body a html, použijeme klíč link pole s informacemi o kanálu pro vytvoření hypertextovéhoodkazu na stránku uživatele na serveru Last.fm.

Použití dalších elementů

V tomto příkladu je v polích s informacemi o kanálu a položkách počet dostupnýchelementů omezený. Metoda getChannelInfo vrací pole obsahující pouze prvky title,description a link. Pole vracené metodou getItems obsahuje pouze prvky title,description, link a pubDate. Je to způsobeno tím, že používáme nejnovější stabilní verzi balíku

XML_RSS. V době psaní této publikace se jedná o verzi 0.9.2. Novější verze balíku XML_RSS,

momentálně ve stadiu beta-testování, umožňuje přístup k mnoha dalším elementům.Elementy RSS 2.0 jako je category a authors jsou také dostupné. Přejete-li si aktualizovat

na beta-verzi balíku XML_RSS je třeba do příkazového řádku zadat příkaz PEAR upgrade

–f XML_RSS. Použitá možnost –f je tatáž, kterou jsme použili pro vynucení instalace beta

a alfa-verze balíku Services_YouTube, resp. File_XSPF. Alternativně můžete hned nazačátku, s využitím možnosti –f, nainstalovat beta verzi balíku XML_RSS.


149

Pokud tento skript otevřete ve webovém prohlížeči, můžete se přesvědčit oúspěšnos

ti našeho postupu.

V tomto okamžiku již víme, jak se používají kanály služby Audioscrobbler prozíská

ní informací. Většina kanálů je buďto ve formátu XSPF, nebo RSS. Známe také základy

práce s rozhraním API serveru YouTube. A co je nejpodstatnější, víme, jak použítpří

slušné balíky PEAR pro získání informací z jednotlivých webových služeb. Je na čase

začít programovat naši aplikaci.

Vytvoření mashupu

Pokud jste tak doposud neučinili, měli byste si přinejmenším vytvořit svůj účet naser

veru YouTube a získat svůj identifikátor vývojáře. Také byste si měli vytvořit účet na

serveru Last.fm, nainstalovat klientský software a začít na počítači přehrávat oblíbenou

hudbu. To upraví obsah videotéky podle vašich osobních hudebních choutek.Veške

ré zde uvedené příklady předpokládají, že používáte svůj vlastní identifikátor vývojáře

pro přístup k YouTube. V příkladech používám vlastní účet na serveru Last.fm. Jelikož

jsou kanály otevřené a volně dostupné, můžete použít stejné kanály jaké já, pakliže se

rozhodnete nezakládat si vlastní účet na serveru Last.fm.

Vytvoření mashupu


150

Kapitola 4: Naše vlastní videotéka

Architektura mashupu

Existuje bezesporu mnoho způsobů, jak by mohla naše aplikace vypadat. My se však

pokusíme udržet aplikaci velmi jednoduchou.

Interface bude tvořit webová stránka složená z rámců. Horní rámec představujenavigační panel a bude sloužit pro výběr skladby. Dolní rámec představuje obsahový panel,

ve kterém budeme zobrazovat a přehrávat video.

V navigačním panelu vytvoříme nabídku se všemi našimi skladbami. Hodnota opoisek každého prvku nabídky bude jméno interpreta následované pomlčkou, následovanou názvem skladby (např. April Smith – Bright White Jackets). Tím, že uvedeme

oba důležité střípky informace o hledaném videu, pomůžeme zpřesnit výsledkyhledání na YouTube.

Když uživatel vybere skladbu a stiskne tlačítko Vyhledat, načte aplikace stránku sobsahem do obsahového panelu. Tento formulář předá stránce s obsahem informace ointerretovi a skladbě ve formě parametru GET. Stránka s obsahem použije tento parametr

pro vyhledání videa na serveru YouTube. Stránka vybere ze seznamu výsledkůvyhledávání první, nejvíce relevantní, video a zobrazí ho.

Hlavní stránka

Hlavní stránka je uložena v souboru s názvem videoteka.html. Zde je definovánorozdělení stránky na rámce. Tato stránka bude velmi jednoduchá, pouze definuje rozložení

rámců, které použijeme.

<html>

<head>

<meta http-equiv=“Content-Type“ content=“text/html; charset=utf-8“ />

<title>Má videotéka

</head>

<frameset rows=“10%,90%“>

Navigační panel

Obsahový panel


151

<frame src=“navigace.php“ name=“Navigace“ />

<frame src=““ name=“Obsah“ />

</frameset>

</html> Tento kód definuje, jak bude naše stránka vypadat. Použijí se dva rámce. Rámec snavigační stránkou, s názvem Navigace, zaujímá 10 % z celkové výšky stránky. Rámec sobsahovou stránkou, s názvem Obsah, zaujímá zbylých 90 % z celkové výšky. Při prvnímotevření stránky se vždy načte pouze seznam skladeb do navigační stránky. Navigační stránka Navigační stránka je uložena v souboru s názvem navigace.php. Tato stránka bude používat balíky File_XSPF a XML_RSS pro získání informací o skladbách z kanálů Top Tracks a Recent Tracks serveru Last.fm. Jejich spojením vytvoříme obsah nabídkynavigační stránky.

<?php

require_once (‘File/XSPF.php‘);

require_once (‘XML/RSS.php‘); Na začátku se ke skriptu připojí balíky File_XSPF a XML_RSS.

$poleSkladeb = array(); Vytvoříme pole pro uložení všech skladeb. Potřebujeme ho, protože pracujeme se dvěma kanály – Top Tracks a Recent Tracks. Oba kanály jsou v jiném formátu. Zprvního z nich získáme s využitím balíku File_XSPF pole objektů skladeb. Z druhého pak pomocí balíku XML_RSS získáme asociativní pole hodnot, v němž názvy elementůfigurují jako klíče prvků pole.

// kanál Top Tracks

$objXspf =& new File_XSPF();

$objXspf->parseFile(‘http://ws.audioscrobbler.com/1.0/user/

ShuTheMoody/toptracks.xspf‘);

$kanalTopTracks = $objXspf->getTracks(); Nejdříve vytvoříme pole objektů skladeb z kanálu Top Tracks (jenž je ve formátu XSPF) pomocí balíku File_XSPF.

// kanál Recent Tracks

$rss =& new XML_RSS(‘http://ws.audioscrobbler.com/1.0/user/

ShuTheMoody/recenttracks.rss‘);

$rss->parse();

$kanalRecentTracks = $rss->getItems(); Následně vytvoříme asociativní pole z druhého kanálu, Recent Tracks (jenž je veformátu RSS), pomocí balíku XML_RSS.

Vytvoření mashupu


152

Kapitola 4: Naše vlastní videotéka

foreach ($kanalTopTracks as $skladba) {

$poleSkladeb[] = $skladba->getCreator() . „ - „ .$skladbagetTitle();

} Použijeme metody getCreator a getTitle objektů skladeb pro vytvoření řetězce ve tvaru „Interpret – Skladba“, a uložíme ho do pole $poleSkladeb.

foreach ($kanalRecentTracks as $polozka) {

$tempSkladba = htmlentities($polozka[‘title‘], ENT_COMPAT, ‘UTF-8‘);

$poleSkladeb[] = str_replace(‘&ndash;‘, „-“, $tempSkladba);

} Ve výchozím stavu tento kanál RSS obsahuje elementy title, jejichž hodnoty již jsou ve tvaru „Interpret – Skladba“. Můžeme tedy tyto hodnoty přímo použít a vložit je do pole $poleSkladeb. Přesto musíme nejdříve provést drobné úpravy. Protože data pochází z dokumentu XML, jsou některé znaky zakódovány. Jedním z takovýchto znaků je také znak pomlčky, nacházející se mezi jménem interpreta a názvem skladby. Z tohoto důvodu zavoláme funkci jazyka PHP s názvem htmlentities, která převede speciální znaky použité v dokumentu XML na ekvivalentní entity jazyka HTML. V tomto případě se z pomlčky uvedené v souboru RSS stane entita &nd ash;. Takto upravená hodnota se uloží do proměnné s názvem $tempSkladba. Nanásledujícím řádku se nahradí entity &ndash; běžným znakem pomlčky a výsledek se uloží do pole $poleSkladeb.

$poleSkladeb = array_unique($poleSkladeb);

sort($poleSkladeb); Konečně pak upravíme seznam do podoby již je možno prezentovat. Funkce array_ unique eliminuje duplicitní skladby nacházející se v obou kanálech, Top Tracks i Recent Tracks. Funkce sort setřídí seznam podle abecedy. Tím jsme dokončili potřebnýúvodní programový kód v jazyce PHP a můžeme začít s kódem v jazyce HTML.

?>

<?= ‘

<html>

<head>

<meta http-equiv=“Content-Type“ content=“text/html; charset=utf-8“ />

<title>Výběr

</head>

<body>

<form method=“GET“ action=“obsah.php“ target=“Obsah“>

<select name=“vyber“>

<?php foreach ($poleSkladeb as $klic => $hodnota) { ?>

<option value=“

<?php } ?>

</select>

<input type=“submit“ value=“Vyhledat“ />

</form>

</html>


153

Před samotným začátkem kódu HTML opět vypíšeme deklaraci XML pro specifikaci

kódování této stránky. Následující kód HTML vytvoří formulář. Tento formulář používá

metodu GET pro předání vybrané položky nabídky skriptu obsah.php. Cílovýmrámcem tohoto formuláře je rámec s názvem Obsah. Pro vytvoření nabídky použijeme pole

$poleSkladeb, které jsme vytvořili dříve.

Na závěr přidáme tlačítko, které zahájí načtení videa. Po něm následují koncovéznačky elementu form a html.

Obsahová stránka

Naše obsahová stránka, s názvem obsah.php, se načte při odeslání dat formulářem vnavigační stránce. Formulář odešle jméno interpreta a název skladby skriptu obsah.php jako

parametr s názvem vyber. Stránka obsah.php načte tento parametr, předá ho rozhraní

API serveru YouTube a zobrazí výsledek.

<?php

require_once (‘Services/YouTube.php‘);

// parametry pro YouTube

$idVyv = ‘VÁŠ IDENTIFIKÁTOR VÝVOJÁŘE‘;

$znacka = $_GET[‘vyber‘];

// výsledek dotazu na server YouTube

$poleVidei = array();

$prvniVideo = null; Začneme jednoduchou inicializací. Ke skriptu připojíme balík Services_YouTube,inicializujeme proměnnou $idVyv, obsahující identifikátor vývojáře nutný pro přístup krozhraní API serveru YouTube, a proměnnou $znacka, do které uložíme hodnotuparametru vyber získaného z formuláře. Následně vytvoříme pole $poleVidei pro uložení výsledků vyhledávání. Poté sedeklaruje proměnná s názvem $prvniVideo. Vyhledávání může přinést, a často také přinese, více výsledků s nejvíce relevantním výsledkem uvedeným jako prvním. Proměnná $prvni Video bude obsahovat nejvíce relevantní výsledek.

$youtube = new Services_YouTube($idVyv, array(‘usesCache‘ => true));

$videa = $youtube->listByTag($znacka);

$poleVidei = $videa->xpath(‘//video‘);

$prvniVideo = $poleVidei[0]; První tři řádky tohoto kódu pracují stejně jako v případě příkladu s balíkem Services_ YouTube – vytvoří se objekt Services_YouTube, zavolá se jeho metoda listByTag avýsledky se analyzují pomocí jazyka XPATH.

Vytvoření mashupu


154

Kapitola 4: Naše vlastní videotéka

Nyní máme pole všech výsledků. Protože se zajímáme pouze o nejvíce relevantní

výsledek, vybereme ho z pole coby prvek s indexem 0 a uložíme ho do proměnné

$prvniVideo. Kód v jazyce PHP je připravený a můžeme začít s kódem jazyka HTML.

?>

<?= ‘

<html>

<head>

<meta http-equiv=“Content-Type“ content=“text/html; charset=utf-8“ />

<title>Obsah

</head>

<body>

<h1>Výsledky vyhledávání na serveru YouTube

<?php if ($prvniVideo) { ?> V kódu jazyka HTML narazíme na příkaz if jazyka PHP. Tento podmíněný blok ifkontroluje, jestli je proměnná $prvniVideo nastavena.

Název: <?= $prvniVideo->title ?>

<object width=“425“ height=“350“>

<param name=“movie“ value=“http://www.youtube.com/v/

$prvniVideo->id ?>“></param>

<param name=“wmode“ value=“transparent“>

<embed src=“http://www.youtube.com/v/

type=“application/x-shockwave-fl ash“ wmode=“transparent“

width=“425“ height=“350“></embed>

</object>

<p>

<a href=““>

$prvniVideo->title ?> na YouTube</a>

</p> Pokud je proměnná $prvniVideo nastavena, použijeme ji pro vytvoření obsahu stránky. Jedná se o objekt, který má tři atributy, jež v této části použijeme:

X title – název videa na serveru YouTube.

X id – unikátní identifikátor videa na serveru YouTube.

X url – URL stránky s videem na serveru YouTube. Atribut id je obzvláště důležitý. Každá stránka s videem na serveru YouTube obsahuje vzorový kód, který můžeme zkopírovat do naší webové stránky a vložit tak do ní video. Video se tak stane součástí stránky a bude ho možné přímo z ní přehrávat. Vzorový kód se skládá z elementu object, dvou elementů param a elementu embed. Tento kód jsme přenesli do naší aplikace. Přepíšeme však pevně vložené identifikátory hodnotouatributu id našeho objektu.


155

<?php } else { ?>

Nebyly nalezeny žádné výsledky

<?php } ?>

</body>

</html> Přidáme blok else pro zobrazení hlášky Nebyly nalezeny žádné výsledky, pro případ, že YouTube nenajde žádné video odpovídající zadaným kritériím. Na závěr uzavřeme elementy body a html. Všechny tři zmíněné soubory uložte do přístupné oblasti webového serveru. Nyní můžete otevřít v prohlížeči stránku videoteka.html a začít mashup používat. Používání mashupu Používání mashupu je velmi jednoduché. Otevřete v prohlížeči stránku videoteka. html.

Používání mashupu


156

Kapitola 4: Naše vlastní videotéka

Poté, co stránku videoteka.html otevřete, zobrazí se stránka podobná té znázorněné na

předchozím obrázku. V horním rámci se načte stránka navigace.php a na základěobsa

hu daných kanálů ze serveru Last.fm se vytvoří nabídka.

Klepněte na nabídku. Zobrazí se seznam skladeb ze dvou uvedených kanálů. Vyberte

požadovanou skladbu a stiskněte tlačítko Vyhledat.


157

Můj první výběr, skladba skupiny Tangerine, nevedl k žádným výsledkům. Vobsaho

vé stránce se proto zobrazí chybová zpráva. Nejedná se o nic překvapivého, protože se

jedná o malou, začínající kapelu z Pittsburghu, Pennsylvanie. Jakmile budoupopulár

nější, počet jejich fanoušků vzroste a některý z nich snad něco přidá na YouTube.

Pojďme vybrat o něco známější skupinu a skladbu.

Používání mashupu


158

Kapitola 4: Naše vlastní videotéka

Náš další výběr, skladba Atmosphere, jejímž autorem je Joy Division, byl úspěšnější.

V tomto případě někdo na YouTube uploadoval videoklip k této skladbě. Stisknutím

tlačítka Play zahájíte přehrávání videa, aniž byste opustili mashup.

Skvělou věcí na tomto mashupu je uživatelská podstata serveru YouTube. Nelze si být

jist tím, jaký výsledek bude vyhledávání mít. V případě předchozího hledání jsme mohli

vidět oficiální videoklip, který na YouTube někdo nahrál. V mnoha ostatních případech

uvidíme živá vystoupení, která někdo nahrál videokamerou a poté uploadoval. Někdy

se setkáme s kreativním uživatelem, který si ke skladbě již hledáme, vytvořil své vlastní

video. Jindy nemusí mít video se skladbou žádnou spojitost, pouze tu, že skladba hraje

na jeho pozadí. Např. pokud jsem zadal klasiku v podobě skladby Death or Glorysku

piny Clash, bylo nalezeno jediné video, slideshow fotek Daniela Radcliffa,představite

le Harryho Pottera, které někdo vytvořil.


159

Shrnutí

V tomto mashupu jsme použili dvě rozdílná rozhraní API – jedno serveru proukládá

ní videí s názvem YouTube, druhé hudebního serveru Last.fm. Podívali jsme se na tři

rozdílné formáty souborů založené na formátu XML těchto stránek – formát XSPF pro

playlisty, RSS pro publikaci často aktualizovaných informací a vlastní formát na bázi

XML serveru YouTube. Vytvořili jsme mashup, který získal informace o skladbách ze

serveru Last.fm a na jejich základě vyhledal video na serveru YouTube.

Pokud bychom se rozhodli vytvořit naše vlastní parsery pro tyto tři formáty, trvalo by

to mnohem více času než tomu bylo teď. Ukázali jsme si, že PEAR (PHP Extension and

Application Repository) již nabízí parsery, které můžeme použít. Jeden pro každý ze tří

formátů. Pomocí balíků PEAR jsme byli schopni vytvořit objektově orientované abstrakce

těchto formátů, s jejichž pomocí jsme snadno dokončili naši aplikaci.

Shrnutí




       
Knihkupectví Knihy.ABZ.cz - online prodej | ABZ Knihy, a.s.
ABZ knihy, a.s.
 
 
 

Knihy.ABZ.cz - knihkupectví online -  © 2004-2018 - ABZ ABZ knihy, a.s. TOPlist