Exemplo completo - Picasa

<< Click to Display Table of Contents >>

Navigation:  ASP.NET > Dicas avançadas > Google Picasa >

Exemplo completo - Picasa

Previous pageReturn to chapter overviewNext page

Objetivo

 

Projeto completo de visualizador de albuns de uma conta do Picasa

 

Tela principal - álbuns

 

picasa1

 

Tela visualizando fotos de um álbum

 

 

picasa2

 

 

Default.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2.Default" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

  <style type="text/css">

      .album

       {

          float: left;

          width: 250px;

          display: inline;

          float: left;

          margin: 10px;

          text-align: center;

       }

       

      .album img

       {

          margin-top: 10px;

          padding: 4px;

          border: 1px solid black;

       }

       

      .album h3

       {

          line-height: 0.1em;

       }

       

      .album p

       {

          line-height: 0.4em;

       }

  </style>

</head>

<body>

  <form id="form1" runat="server">

  <div>

      <asp:ListView ID="lvAlbuns" runat="server">

          <ItemTemplate>

              <div class="album">

                  <a href='Album.aspx?id=<%# Eval("id") %>'>

                      <asp:Image ID="ImgMiniatura" ImageUrl='<%# Eval("imagem") %>' runat="server" BorderStyle="None" />

                  </a>

                  <h3>

                      <a href='Album.aspx?id=<%# Eval("id") %>'>

                           <%# Eval("titulo") %></a>

                  </h3>

                  <p>

                      <strong>

                           <%# Eval("data") %></strong> (<%#Eval("nfotos") %>

                       fotos)</p>

              </div>

          </ItemTemplate>

      </asp:ListView>

  </div>

  </form>

</body>

</html>

 

 

Default.aspx.cs

 

using System;

using Google.Picasa;

using Google.GData.Photos;

using System.Data;

 

namespace WebApplication2

{

  public partial class Default : System.Web.UI.Page

   {

      private DataTable tabela;

 

      protected void Page_Load(object sender, EventArgs e)

       {

          // popula a tabela com os alguns do usuario

           GetAlbuns();

 

          // toca tudo para o ListView

           lvAlbuns.DataSource = tabela;

           lvAlbuns.DataBind();

       }

 

      private void Add(string id, string titulo, string imagem, int nfotos, DateTime data)

       {

          // função auxiliar para ajudar a inserir dados

          DataRow dr = tabela.NewRow();

           dr["id"] = id;

           dr["titulo"] = titulo;

           dr["imagem"] = imagem;

           dr["nfotos"] = nfotos;

           dr["data"] = data.ToString("dd-MMM-yy");

           tabela.Rows.Add(dr);

       }

 

      private void GetAlbuns()

       {

          // cria as colunas e tipos

           tabela = new DataTable();

           tabela.Columns.Add(new DataColumn("id", Type.GetType("System.String")));

           tabela.Columns.Add(new DataColumn("titulo", Type.GetType("System.String")));

           tabela.Columns.Add(new DataColumn("imagem", Type.GetType("System.String")));

           tabela.Columns.Add(new DataColumn("nfotos", Type.GetType("System.Int32")));

           tabela.Columns.Add(new DataColumn("data", Type.GetType("System.String")));

 

          // insere dados

           ObterAlbunsPicasa();

 

          // ordena por data desc

          DataView v = tabela.DefaultView;

           v.Sort = "data desc, titulo asc";

           tabela = v.ToTable();

       }

 

      // lista todos os álbuns do usuário

      private void ObterAlbunsPicasa()

       {

          // obtem os albuns

          AlbumQuery query = new AlbumQuery(PicasaQuery.CreatePicasaUri(Logon.USUARIO_PICASA));

          PicasaFeed feed = Logon.GetPicasaService().Query(query);

 

          // percorre cada album

          foreach (PicasaEntry entry in feed.Entries)

           {

               Google.Picasa.Album album = new Google.Picasa.Album();

               album.AtomEntry = entry;

              // adiciona num table

               Add(album.Id, album.Title, (string)entry.Media.Thumbnails[0].Attributes["url"], (int)album.NumPhotos, album.Updated);

           }

       }

   }

}

 

Album.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Album.aspx.cs" Inherits="WebApplication2.Album" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

  <style type="text/css">

      .foto

       {

          float: left;

          width: 250px;

          display: inline;

          float: left;

          margin: 10px;

          text-align: center;

       }

       

      .foto img

       {

          margin-top: 10px;

          padding: 4px;

          border: 1px solid black;

       }

       

      .foto p

       {

          line-height: 0.4em;

       }

  </style>

</head>

<body>

  <form id="form1" runat="server">

  <div>

      <asp:ListView ID="lvFotos" runat="server">

          <ItemTemplate>

              <div class="foto">

                  <a href='<%# Eval("url") %>'>

                      <asp:Image ID="ImgMiniatura" ImageUrl='<%# Eval("miniatura") %>' runat="server" BorderStyle="None" />

                  </a>

                  <p>

                      <a href='<%# Eval("url") %>'>

                           <%# Eval("titulo") %></a>

                  </p>

              </div>

          </ItemTemplate>

      </asp:ListView>

  </div>

  </form>

</body>

</html>

 

Album.aspx.cs

 

using System;

using Google.GData.Photos;

using System.Data;

 

namespace WebApplication2

{

  public partial class Album : System.Web.UI.Page

   {

      private DataTable tabela;

 

      protected void Page_Load(object sender, EventArgs e)

       {

          if (Request.QueryString["id"] == null)

           {

               Response.Write("Nenhum ID passado por parâmetro");

           }

          else

           {

               CriarTabela();

               GetFotosPicasa();

 

              // toca tudo para o ListView

               lvFotos.DataSource = tabela;

               lvFotos.DataBind();

           }

       }

 

      private void Add(string titulo, string url, string miniatura)

       {

          // função auxiliar para ajudar a inserir dados

          DataRow dr = tabela.NewRow();

           dr["titulo"] = titulo;

           dr["url"] = url;

           dr["miniatura"] = miniatura;

           tabela.Rows.Add(dr);

       }

 

      private void CriarTabela()

       {

          // cria as colunas e tipos

           tabela = new DataTable();

           tabela.Columns.Add(new DataColumn("titulo", Type.GetType("System.String")));

           tabela.Columns.Add(new DataColumn("url", Type.GetType("System.String")));

           tabela.Columns.Add(new DataColumn("miniatura", Type.GetType("System.String")));

       }

 

      // função retornar as fotos de um álbum com base em seu ID

      public void GetFotosPicasa()

       {

          // pesquisa pelas fotos usando um PhotoQuery

          PhotoQuery queryfoto = new PhotoQuery(PicasaQuery.CreatePicasaUri(Logon.USUARIO_PICASA, Request.QueryString["id"]));

          PicasaFeed feedfoto = Logon.GetPicasaService().Query(queryfoto);

 

          // pra cada foto, joga num datatable

          foreach (PicasaEntry entry in feedfoto.Entries)

               Add(entry.Title.Text, (string)entry.Media.Content.Attributes["url"], (string)entry.Media.Thumbnails[1].Attributes["url"]);

       }

   }

}

 

Logon.cs

 

using Google.GData.Photos;

 

namespace WebApplication2

{

  public static class Logon

   {

      private static PicasaService service;

      public const string USUARIO_PICASA = "cabanha.guinther";

      private const string SENHA_PICASA = "guinther123";

       

      // esta rotina retorna um "service" que conectar no servico do picasa usando usuário e senha

      public static PicasaService GetPicasaService()

       {

          if (service == null)

           {

               service = new PicasaService("Picasa");

               service.setUserCredentials(USUARIO_PICASA, SENHA_PICASA);

           }

          return service;

       }

   }

}