Google Data API – Picasa

Introdução

Com o crescimento da tecnologia e da internet hoje é muito comum ver as pessoas querendo acessar seus arquivos pessoais como fotos, e-mails, vídeos, agenda em qualquer lugar e em qualquer momento, com isso veio o grande crescimento das ferramentas para gerenciamento e armazenamento desses tipos de informações, o Google é uma dessas empresas.

Em muitos casos estamos desenvolvendo aplicações que precisamos acessar alguns desses serviços que estão na nuvem, e por esse motivo o Google criou uma API (Application Programming Interface) chamada Google GData que facilita a integração das nossas aplicações com esses serviços.

Essas APIs, no estilo REST, se baseiam no Atom Publishing Protocol (AtomPub), que usa o formato de distribuição padrão Atom para representar os dados e HTTP para manipular a comunicação, a API disponibiliza interface com a maioria de seus serviços, entre elas:

  • Blogger
  • Calendar
  • Contacts
  • Google Analytics
  • Picasa Web Albums
  • YouTube

Como ter acesso a API Google GData

Qualquer desenvolvedor pode ter acesso a API de forma gratuita, temos duas opções para ter acesso a API:

  1. Baixar o arquivo .msi que contém as DLLs e alguns exemplos para executar
  2. Baixar todo código fonte da API juntamente com os exemplos e compilar gerando as DLLs

Para ambas opções temos que acessar o seguinte endereço http://code.google.com/p/google-gdata/

Primeiros Passos

Primeira passo que devemos fazer para usar a API é adicionar as referências para duas DLLs básicas da API que são Google.GData.Extensions.dll e Google.GData.Client.dll

Integrando com o Picasa

Vamos criar um exemplo de como integrar uma aplicação ASP NET MVC com o serviço de fotos Picasa, vamos adicionar a referência para a DLL Google.GData.Photos.dll, as referências do projeto deve ficar como a figura abaixo:

Para usar esse serviço temos quer ter um usuário e senha no Google, sempre que vamos chamar algum método da biblioteca temos que primeiramente fazer o login e depois podemos recuperar os seus álbuns, veja abaixo.

[sourcecode language=”csharp”]
private PicasaService Login()
{
PicasaService picasaService = new PicasaService("Picasa");
picasaService.setUserCredentials("USUARIO", "SENHA");
return picasaService;
}

public ActionResult Index()
{
PicasaService picasaService = Login();

AlbumQuery query = new AlbumQuery();
query.Uri = new Uri(PicasaQuery.CreatePicasaUri("USUARIO"));

PicasaFeed picasaFeed = picasaService.Query(query);

List lstAlbum = new List();
if (picasaFeed != null && picasaFeed.Entries.Count > 0)
{
foreach (PicasaEntry entry in picasaFeed.Entries)
{
Album _album = new Album();
string[] albumID = entry.EditUri.Content.Split(‘/’);
_album.Id = albumID[albumID.Length-1];
_album.Title = entry.Title.Text;
_album.Description = entry.Media.Description.Value;
_album.Qtde = int.Parse(entry.GetPhotoExtensionValue(GPhotoNameTable.NumPhotos));
_album.Capa = entry.Media.Thumbnails.ElementAt(0).Url;
lstAlbum.Add(_album);
}
}

return View(lstAlbum);
}
[/sourcecode]

Podemos observar que primeiramente temos que fazer o login com uma conta do Google e depois fazemos uma query usando o objeto AlbumQuery para pesquisar todos os álbuns disponíveis no Picasa, após recuperamos as informações dos álbuns e adicionamos em uma lista para ser exibida em nossa view. Veja na figura abaixo a listagem dos álbuns.

Agora vamos implementar o método que vai trazer todas as fotos de um determinado álbum, veja na listagem 2 o código responsável por receber o código do álbum e recuperar todas as fotos:

[sourcecode language=”csharp”]
public ActionResult RecuperarFotosAlbum(string id)
{
PicasaService picasaService = Login();

PhotoQuery query = new PhotoQuery();
query.Uri = new Uri(PicasaQuery.CreatePicasaUri("USUARIO", id));

PicasaFeed picasaFeed = picasaService.Query(query);

List<Photo> lstPhoto = new List<Photo>();
if (picasaFeed != null && picasaFeed.Entries.Count > 0)
{
foreach (PicasaEntry entry in picasaFeed.Entries)
{
Photo _photo = new Photo();

string[] albumID = entry.MediaUri.Content.Split(‘/’);
_photo.PhotoId = albumID[albumID.Length – 1];
_photo.AlbumId = id;
_photo.Title = entry.Title.Text;
_photo.Description = entry.Media.Description.Value;
_photo.Url = entry.Content.Src.Content;
_photo.UrlThumb = entry.Media.Thumbnails.ElementAt(1).Url;
lstPhoto.Add(_photo);
}
}

return View(lstPhoto);
}
[/sourcecode]

Como podemos ver a lógica segue a mesma, primeiramente fazemos o login e depois realizamos uma query usando o objeto PhotoQuery passando o ID do álbum (que recuperamos no método anterior) veja na figura abaixo o resultado

 

Agora vamos implementar o método que vai recuperar os comentários de uma determinada foto, para isso temos que passar o código do álbum e o código da foto, veja o código abaixo:

[sourcecode language=”csharp”]
public ActionResult RecuperarComentariosFoto(string albumId, string photoId)
{
PicasaService picasaService = Login();

CommentsQuery query = new CommentsQuery();
query.Uri = new Uri(PicasaQuery.CreatePicasaUri("chicodrummer", albumId, photoId ));

PicasaFeed feed = picasaService.Query(query);

List<Comment> lstComment = new List<Comment>();
foreach (PicasaEntry entry in feed.Entries)
{
Comment _com = new Comment();
_com.Title = entry.Title.Text;
_com.Comentario = entry.Content.Content;
lstComment.Add(_com);
}

return View(lstComment);
}
[/sourcecode]

Realizamos uma query usando o objeto CommentsQuery passando o ID do álbum e o ID da foto.

O próximo post vai ser sobre YouTube

Aquele abraço!

Sobre Leandro Prado

Leandro Silveira Prado é Premier Field Engineer na Microsoft especializado em Application Lifecycle Management.