Consumindo serviços do Flickr com Java no Netbeans

30 09 2010

Este blog possui um novo domínio agora jamacedo.comclique aqui para acessá-lo!

O site de hospedagem e compartilhamento de imagens Flickr disponibiliza para os desenvolvedores acesso as suas funcionalidades através de uma API de serviços REST. Com esta API o desenvolvedor pode soltar a imaginação e criar novos aplicativos, inclusive interagindo também com outros serviços disponíveis na web. Quem estiver interessado em conhecer os aplicativos criados utilizando a API do Flickr pode acessar o App Garden. Este site é uma iniciativa da própria empresa para reunir os aplicativos que utilizam o Flickr.

Mas por que eu precisaria do Netbeans para consumir os servicos do Flickr?

Não, você não precisa do Netbeans para utilizar os serviços. Entrentanto, a IDE disponibiliza um esquema de drag and drop que facilita muito algumas parte do trabalho. Nós veremos neste tutorial como utilizar este esquema para ter acesso a álbuns e fotos de forma simples e rápida.

Lembrando que o Netbeans auxilia no acesso à serviços de diversas outras APIs como por exemplo, Facebook, Google, Delicious, Twitter, Yahoo e muitas outras que não serão tratadas neste post. Porém a estratégia utilizada nas demais APIs é semelhante e você podera tomar como base este tutorial para trabalhar com outros serviços.

1º Passo

A primeira coisa a se fazer é criar uma conta no Yahoo(caso você já não tenha) para ter acesso ao Flickr. Ter acesso ao Flickr é importante porque você precisará registrar um aplicativo no App Garden.

2º Passo

Com acesso ao Flickr você deve ir a esta página para Criar um novo aplicativo. Precisamos desta etapa porque o Flickr só fornece permissão para uso dos serviços se a aplicação tiver uma chave e um segredo específicos para ela. O Flickr não cobra nada para registrar a aplicação e fornecer a chave. Nós utilizaremos esta chave e o segredo alguns passos a frente.

Ao acessar a página de criação de aplicativo você verá o seguinte:

flickrRegistroApp

Como nosso objetivo não é comercial escolha a opção SOLICITAR UMA CHAVE NÃO COMERCIAL.

3º Passo

Agora escolha um nome para sua aplicação, forneça uma pequena descrição, aceite os termos de compromisso e clique em ENVIAR. Após enviar você terá acesso a sua chave e seu segredo da mesma forma que a figura abaixo:

flickrRegistroApp2

Anote a chave e o segredo em algum lugar para usarmos logo mais.

4º Passo

Vamos partir para o Netbeans agora.

Crie um Novo Projeto Java para desktop.

5º Passo

Agora crie uma classe com um método main.

Testaremos os serviços dentro deste método. Será nele que  iremos arrastar e soltar um método do serviço do Flickr.

6º Passo

Agora vá até a aba Serviços que fica ao lado das abas Arquivos e Projetos   abaservicos e busque o seguinte nó da árvore Flickr –> Photo Service –> services –> rest –> photosets_getList e arraste e solte o método photosets_getList para dentro do método main da classe que você criou. Aparecerá a seguinte tela:

turservicosflickr

Apenas clique em OK pra que os códigos necessários terminem de ser gerados.

Após o OK será gerado o seguinte código para você:

import org.netbeans.saas.flickr.FlickrPhotoService;
import org.netbeans.saas.RestResponse;

public class Main {

    public static void main(String[] args) {

        // início do código que será gerado -------------------------
        try {
            String userId = null;

            RestResponse result = FlickrPhotoService.photosetsGetList(userId);
            if (result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class) instanceof flickr.photoservice.flickrresponse.Rsp) {
                flickr.photoservice.flickrresponse.Rsp resultObj = result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class);
            }
            //TODO - Uncomment the print Statement below to print result.
            //System.out.println("The SaasService returned: "+result.getDataAsString());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // fim do código que será gerado -------------------------------
    }
}

O objeto resultObj é responsável, neste caso, por conter a lista de todos os álbuns de um usuário. É este objeto que iremos manipular.

Para termos acessos a lista dos álbuns, podemos utilizar este objeto da seguinte forma:

resultObj.getPhotosets().getPhotoset()

Este método retorna uma lista de álbuns.

Para testar, vamos listar na tela o id de todos os albuns do seu Flickr da seguinte forma:

import org.netbeans.saas.flickr.FlickrPhotoService;
import org.netbeans.saas.RestResponse;

public class Main {

    public static void main(String[] args) {

        // início do código que será gerado -------------------------
        try {
            String userId = null;

            RestResponse result = FlickrPhotoService.photosetsGetList(userId);
            if (result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class) instanceof flickr.photoservice.flickrresponse.Rsp) {
                flickr.photoservice.flickrresponse.Rsp resultObj = result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class);
                // listagem do id de todos os albuns
                for (int i = 0; i < resultObj.getPhotosets().getPhotoset().size(); i++) {
                    System.out.println("Album com id = " + resultObj.getPhotosets().getPhotoset().get(i).getId());
                }

            }
            //TODO - Uncomment the print Statement below to print result.
            //System.out.println("The SaasService returned: "+result.getDataAsString());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // fim do código que será gerado -------------------------------
    }
}

Antes de executar é necessário configurar o arquivo .properties responsável pela autenticação, utilizando a chave e o segredo que você pegou no Flickr. Este arquivo foi gerado automaticamente e se encontra no pacote org.netbeans.saas.flickr com o nome flickrphotoserviceauthenticator.properties. Preencha este arquivo com a sua chave e seu segredo.

Pronto, agora ao executar a sua classe será exibida esta tela:

tut

Antes de clicar em OK é necessário copiar o link e colar no navegador para que o site do Flickr dê a permissão para acessar seu serviço.

Ao executar o link no browser aparecerá a seguinte tela:

tut2

Escolha a opção OK, EU AUTORIZO e depois volte para a execução no Netbeans e clique em OK no JDialog de autorização.

Dessa forma seus álbuns serão listados no console do Netbeans.

Dicas

  • O método photosets_getPhotos disponível no serviço é útil para buscar o id e título das fotos de um álbum, neste caso é necessário passar o id do album para conseguir utilizar o método.

A dica está na forma de acessar a lista de fotos. É necessário utilizar o objeto resultObj como é apresentado em seguida:

resultObj.getPhotoset().getPhoto().get(i).getId();

  • O método photos_getInfo disponível no serviço encontra a descrição e o título de uma foto passando o id da foto. Para acessar essas informações você pode utilizar o objeto resultObj da seguinte forma:

resultObj.getPhoto().getDescription();
resultObj.getPhoto().getTitle();

  • O método photos_getSizes disponível no serviço encontra as urls (uma para cada tamanho) de uma foto. O uso deste método precisa também do id da foto. Através dele você pode exibir as fotos na sua aplicação. O objeto resultObj deve ser utilizado da seguinte forma:

resultObj.getSizes().getSize().get(0).getSource();
resultObj.getSizes().getSize().get(1).getSource();
resultObj.getSizes().getSize().get(2).getSource();
resultObj.getSizes().getSize().get(3).getSource();
resultObj.getSizes().getSize().get(4).getSource();

Cada posição da lista retornada é um tamanho diferente da foto.

Conclusao

Este tutorial mostrou os passos necessários para acessarmos a API do Flickr.  Vimos como é simples consumir serviços com o auxilio do Netbeans. A partir deste tutorial você pode explorar outros serviços para construir diversos tipos de aplicações customizadas.


Ações

Informação

Uma resposta

30 09 2010
Tweets that mention Consumindo serviços do Flickr com Java no Netbeans « José Alexandre Macedo Blog -- Topsy.com

[...] This post was mentioned on Twitter by JoséAlexandreMacedo, JoséAlexandreMacedo. JoséAlexandreMacedo said: Consumindo serviços do Flickr com Java no Netbeans: http://wp.me/pBXUk-4K [...]

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s




Seguir

Obtenha todo post novo entregue na sua caixa de entrada.