Flickr – Buscar fotos por Tag com ActionScript

Vamos a um exemplo de uso da API do Flickr, bem simples pois a API do Flickr é realmente simples (isso não quer dizer que ela não é poderoza).

Aqui está o resultado de pouco código:

This movie requires Flash Player 9

Em primeiro lugar você vai precisar de uma api_key e pode conseguir neste link “Solicitar uma nova chave API“. Com sua KEY em mão vamos chamar a api buscando uma tag:
http://api.flickr.com/services/rest/?api_key=[SUA-API-KEY]&method=flickr.photos.search&tags=[TAG]

O resultado esperado é este:

1
2
3
4
5
6
7
<rsp stat="ok">
<photos page="1" pages="10" perpage="100" total="1000">
    <photo id="3411384625" owner="[email protected]" secret="74167a8895" server="3374" farm="4" title="_MG_0611" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="3411401933" owner="[email protected]" secret="46c095f827" server="3585" farm="4" title="_MG_0641" ispublic="1" isfriend="0" isfamily="0" />
    ...
</photos>
</rsp>

Vamos entender o link, rest é o formato que você deseja receber a resposta, atualmente o Flickr suporta 5 formatos (REST, XML-RPC, SOAP, JSON e PHP), usamos o rest porque o ActionScript trabalha muito bem com ele (XML). api_key é a chave que você solicitou acima. method, é o método de busca (você pode encontrar muitos no link da API, http://www.flickr.com/services/api/). E por fim tags que é um parâmetro pelo qual você busca.

Agora que temos o XML de resposta podemos construir links para as fotos, para a página de galeria do usuário encontrado, para o perfil do usuário entro outros. O link que eu acho mais importante é o da imagem e para consegui-lo basta concatenar alguns dados presentes no XML dessa forma:

http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}.jpg

http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}_[mstb].jpg

http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{o-secret}_o.(jpg|gif|png)

O que é mstb?
s) quadrado pequeno 75×75.
t) miniatura, 100 no lado mais longo.
m) pequeno, 240 no lado mais longo.
-) médio, 500 no lado mais longo.
b) grande, 1.024 no lado mais longo (existe apenas para imagens originais muito grandes).
o) imagem original, jpg, gif ou png, dependendo do formato de origem.
Na página URLs da origem da foto você encontra tudo bem explicado.

Veja no exemplo abaixo o link (do primeio nó ‘photo’) para a imagem:
http://farm4.static.flickr.com/3374/3411384625_74167a8895.jpg

Agora tudo isso com ActionScript (Load do XML e parse para gerar o link):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var apiKey:String = "[SUA-API-KEY]";
var tag:String = "arduino";

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, onComplete);
var url:String = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=" + apiKey + "&tags=" + tag;
trace("URL: ", url);
xmlLoader.load(new URLRequest(url));

function onComplete(event:Event):void
{
    var xmlData:XML = new XML(event.target.data);
    if (xmlData.@stat != "ok")
    {
        trace("ERROR: " + xmlData.err.@msg);
        return;
    }
   
    for (var i:uint = 0; i < xmlData.photos.photo.length(); i++)
    {
        var photo:Object = {
            id:xmlData.photos.photo[i].@id,
            owner:xmlData.photos.photo[i].@owner,
            secret:xmlData.photos.photo[i].@secret,
            server:xmlData.photos.photo[i].@server,
            farm:xmlData.photos.photo[i].@farm,
            title:xmlData.photos.photo[i].@title
        };
        photo.url = "http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + ".jpg";
        trace("Imagem: ", photo.url);
    }
}

Repare que você pode adicionar dois parâmetros no link para controlar a paginação das fotos (page e perpage).

Conteúdo relacionado:
Flickr API: http://www.flickr.com/services/api/
XML ActionScript 3.0: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/XML.html


Posts relacionados:

  1. JPGEncoder (AS3) com AMFPHP
  2. JPEG Encoder (AS3) + FluorineFx .NET Flash Remoting Gateway
  3. Fluorine, uma alternativa de Flash Remoting com ASP.NET
  4. Vector em AS3 para Flash Player 10
  5. Regra de três simplificada (Map do Processing)

  1. free ping site…

    [...]Flickr – Buscar fotos por Tag com ActionScript 3.0 | Bruno Soares[...]…

  2. Adobe For Mac disse:

    Adobe For Mac…

    [...]Flickr – Buscar fotos por Tag com ActionScript 3.0 | Bruno Soares[...]…

Leave a Reply