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:
- Baixar o arquivo .msi que contém as DLLs e alguns exemplos para executar
- 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!
Muitíssimo explicativo seu post.
Entretanto, não descobri como pegar a url da imagem original.
Ao fazer: entry.Content.Src.Content;
ou ainda: entry.media.content
retorna apenas a imagem no tamanho de visualização do Picasa… =T