Začíname s Picasa Web API
Nedávno sa mi prisnilo silné slovné spojenie skutková podstata. Rozmýšľajúc nad jeho významom mi napadol tento blog. Jeden celý dlhý rok bol naložený vo formaldehyde. Počas hybernácie blogu som pozabudol nato, aký bol dôvod jeho vzniku. A práve skutková podstata mi pripomenula, že Picasa Web Albums a súvisiaca Flash/Flex knižnica bola tá pohnútka. Aby som začal túto skutkovú podstatu napĺňať, skúsim spraviť prvý krok a rozbehnúť sa niekam. Kam dobehneme sám ešte neviem. Dúfam len, že to nebude šprint na 100 metrov, ale poriadny maratón.
Čo je to Picasa Web Albums Data API?
Pod týmto označením sa skrýva rozhranie, ktoré umožňuje integrovať službu Picasa Web Albums (ďalej len PWA) do vašich webov a aplikácií. Rozhranie umožňuje vytvárať albumy, zasielať a sťahovať obrázky, komentáre k obrázkom a tisíc ďalších vecí.
Niektoré z mála vecí, ktoré využívajú PWA Data API:
- Aplikácie na jednoduché uploadovanie obrázkov zo zariadení, desktopových aplikácií a ostatných webových služieb
- Mobilný klienti na prezeranie a uploadovanie obrázkov do PWA
- Integrácia PWA s blogovacími nástrojmi k jednoduchému zdielaniu obrázkov na vašich blogoch
- Digitálne foto rámiky
- …
Pre stručný prehľad je k dispozícii video:
Domovská stránka PWA Data API: http://code.google.com/apis/picasaweb/
A čo je to Picasa Flash API?
Pod týmto názvom sa skrýva klientské rozhranie, ktoré umožňuje čo najjednoduchšie pristupovať priamo k PWA pomocou Flash Player-a. Picasa Flash API (ďalej len PFA) je read-only Actionscript 3 rozhranie k Picasa Web Albums. Umožňuje listovať v používateľských albumoch, obrázkoch, komentároch, tagoch alebo vyhľadávať obrázky v Picasa komunite.
Domovská stránka Picasa Flash API: http://code.google.com/p/picasaflashapi/
Aký je teda rozdiel?
- Picasa Web Albums Data API je rozhranie k službe Picasa Web Albums od Google.
- Picasa Flash API je Flash/Flex knižnica.
- Pomocou Picasa Flash API posielate requesty z Flash Player-a na Picasa Web Albums Data API rozhranie.
- Picasa Web Albums Data API žije na serverovej strane Google, Picasa Flash API beží u klienta.
Ako s tým súvisí Picasa?
Výborná otázka. Picasa je desktopový klient pre Mac, Linux alebo Windows. Picasa slúži na jednoduchú a rýchlu organizáciu, úpravu a odovzdávanie vašich fotografií na web. Áno, Picasa je tiež len klient (a naviac výkonný), ktorý okrem iných vlastností, možností a funkcií taktiež využíva Picasa Web Albums Data API napr. k odovzdávaniu obrázkov na web.
Prezeranie a vyhľadávanie
Poďme si to hneď všetko vyskúšať :). Každý url request smerom na PWA má nasledovnú schému:
http://<api_url>/<collection_type>/<projection_type>/<context>?<parameters>
Začnime s jednoduchým receptom - zoznamom používateľových albumov. Nato aby sme získali tento zoznam potrebujeme nasledovné ingrediencie:
1. Adresa Picasa Web Albums Data API:
Môžeme použiť adresu “http://picasaweb.google.com/data” alebo jej alias “http://photos.googleapis.com/data”. Ja radšej používam tú druhú. Dôvodom je crossdomain.xml súbor, ktorý musí byť načítaný do Flash Player-a pred akýmkoľvek iným requestom smerom na PWA (knižnica to spraví automaticky za vás). Týmto si zabezpečíme, že PWA neodmietne našeho klienta a Flash Player spracuje PWA odpoveď. Viac k tejto téme je popísané tu. A keďže crossdomain.xml súbor sa nachádza na http://photos.googleapis.com/data/crossdomain.xml, používam radšej ten druhý tvar. Ak by sme pristupovali k PWA cez prvú adresu, môžeme listovať pomocou PFA aj privátne albumy v prípade, že sme prihlásený cez browser do google účtu, pretože koláčik obsahuje adresu http://picasaweb.google.com/data a PWA nám vráti aj naše vlastné privátne albumy.
2. Collection type:
Keďže PFA je read-only, budeme používať iba “/feed”. Collection type “/media” by sme využili pri zápise dát z klienta smerom na server, napríklad pri aktualizácii alebo pri odovzdávaní fotografií.
3. Projection type:
Máme opať niekoľko možností. V prípade, že použijeme “/base”, odpoveď z PWA bude základný Atom feed bez akýchkoľvek rozširujúcich elementov. Tento typ projekcie je read-only. My však chceme dostať z PWA aj dodatočné informácie o fotografiách ako napr. ich veľkosť, adresy náhľadov atď. a preto budeme používať Projection type “/api”. Ak by nám Google v budúcnosti umožnil zapisovať do PWA z Flash Player-a, Projection type “/api” je nato pripravené (read-write).
4. Context:
Posledná prísada je hodnota, ktorá definuje aké zdroje chceme na PWA používať. Podľa tohto kontextu rozdeľujeme requesty na:
- User-based feed: /user/<userid>
- Contacts-based feed: /user/<userid>/contacts
- Album-based feed: /user/<userid>/albumid/<albumid>
- Photo-based feed: /user/<userid>/albumid/<albumid>/photoid/<photoid>
- Community search feed: /all
- Featured photos feed: /featured
Po správnom zmiešaní ingrediencií pre zoznam albumov užívateľa dostaneme nasledovné url: http://photos.googleapis.com/data/feed/api/user/thisispinkfu
PWA nám odpovie nasledovne (skrátene kvôli prehľadnosti):
<feed ...>
<id>http://photos.googleapis.com/data/feed/api/user/thisispinkfu</id>
<title>thisispinkfu</title>
...
<entry>
<id>http://photos.googleapis.com/data/entry/api/user/thisispinkfu/albumid/5296410852174025857</id>
...
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/photos/2007#album"/>
<title>Pinholes</title>
<summary>Sharan STD-35 and Diana pinholes</summary>
.
.
.
</entry>
<entry>
...
</entry>
...
</feed>
Albumy sa vracajú späť v <entry> elementoch, kde každý <entry> element obsahuje metadáta k albumu ako napr. počet fotografií v albume, náhľad albumu, názov atď…
Aby ste nemuseli pracne vytvárať url requesty na PWA a následne parsovať štrúdle odpovedí, pomôže vám Picasa Flash API, ktorá za vás request vytvorí, sparsuje odpoveď a vráti ju zabalenú v pekne otypovanom objekte :)
Zoznam albumov by sme pomocou PFA získali nasledovne: // vytvorime instanciu servisu var service : PicasaService = new PicasaService();
// zavolame servisnu metodu, ktora vrati responder
// responder vysle pri uspesnej odpovedi z PWA data event
var responder : PicasaResponder = service.albums.list("thisispinkfu");
responder.addEventListener(PicasaDataEvent.DATA, onGetAlbumsComplete);
// po uspesnej odpovedi
function onGetAlbumsComplete(evt : PicasaDataEvent) : void
{
var item : AlbumEntry;
// prejdeme vsetky <entry>
for(var a : int = 0; a < evt.data.entries.length; a++)
{
item = evt.data.entries[a] as AlbumEntry;
// a vypiseme nazov albumy a jeho linku na picasaweb stranku
trace(item.title.value + " (" + item.links[1].href + ")");
}
}
Výstupom z funkcie je zoznam albumov s ich názvom a priamou linkou na picasaweb stránku:
(GET) http://photos.googleapis.com/data/feed/api/user/thisispinkfu
Pinholes (http://picasaweb.google.com/thisispinkfu/Pinholes)
Redscale (http://picasaweb.google.com/thisispinkfu/Redscale)
Stockholm (http://picasaweb.google.com/thisispinkfu/Stockholm)
Instants (http://picasaweb.google.com/thisispinkfu/Instants)
...
Ďalšími možnosti PWA je napríklad:
- vyhľadávanie obrázkov s v komunite na základe query a napr. tagov
- použitie geografických hraníc pre obmedzenie výsledkov vyhľadávania na určitú zemepisnú oblasť
- limitovanie vyhľadávania na “obľúbené” fotografie
- …
V stručnosti sme si spravili prehľad čo je to Picasa Web Albums Data API, čo je to Picasa Flash API, načrtli sme ich možnosti a obmedzenia a vytvorili krátky príklad, ako získať zoznam všetkých albumov od Picasaweb používateľa.
Nakoniec už len krátky odkaz na nádherný screen saver, ktorý využíva Picasa Flash API: http://www.inspirit.ru/exchange/ascii_saver/
Blog comments powered by Disqus