Lo scopo è quello di visualizzare delle foto presenti in Flickr nel proprio sito web.
La dll di riferimento con le relative API per far ciò la possiamo trovare qui:
http://www.codeplex.com/Wiki/View.aspx?ProjectName=FlickrNet

1) Il primo passo consiste nel registrarsi in Flickr e prendere la proprio chiave di attivazione per utilizzare le api. La pagina di partenza è questa : http://www.flickr.com/services/api/keys/apply .

2) Scaricare la Dll Flickr.Dll
Utilizzando Visual Studio, si aggiunge la dll ai riferimenti Project –> Add References

3) Possiamo iniziare la costruzione della nostra semplice applicazione

Costruiamo una semplice classe MyFlickrPhoto per le foto che andremo a riprendere:

using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;


[Serializable]
public class MyFlickrPhoto
{
private string _title;
public string Title
{
get { return _title; }
set { _title = value; }
}
private string _webUrl;
public string WebUrl
{
get { return _webUrl; }
set { _webUrl = value; }
}
private int _num;
public int Numero
{
get { return _num; }
set { _num = value; }
}
}

La proprietà Title rappresenta il titolo della Foto, WebUrl il suo indirizzo per visualizzarla e Numero  il numero progressivo.

Struttura della pagina Aspx

<body style="font-size: 11px;">
<form id="form1" runat="server">
<div>
<asp:GridView ID="grdFlickr" CellPadding="4" CellSpacing="0" runat="server" AllowPaging="True"
AutoGenerateColumns="False" OnPageIndexChanging="grdFlickr_PageIndexChanging" PageSize="25">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%# Eval("Numero")%> - <%# Eval("Title")%> - <%# Eval("WebUrl")%>
<br />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings Position="TopAndBottom" />
</asp:GridView>
</div>
</form>
</
body>

Logica della Pagina

public partial class _Default : System.Web.UI.Page
{
public string apikey = "Chiave di flickr";
public List<MyFlickrPhoto> l = new List<MyFlickrPhoto>();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Mi riprendo la lista di tutte le foto
l = PopolaLista();
// Popolo un ViewState
ViewState["MyList"] = l;
// Popolo il gridview
Popola();
}
}


private List<MyFlickrPhoto> PopolaLista()
{
Flickr flickr = new Flickr(apikey);
List<Photos> myPh = new List<Photos>();
PhotoSearchOptions options = new PhotoSearchOptions();
options.Tags = "frontignano"; // tag di ricerca

// possibile specificare anke la ricerca per UserID
//options.UserId = "USER ID FLICKR"
options.PerPage = 100; // Foto per "pagina"
// Mi riprendo tutte le foto
Photos AllPhoto = flickr.PhotosSearch(options);

// Collection di tutte le foto
PhotoCollection mergedCollection = new PhotoCollection();
// Ciclo su tutte le pagine della classa Photos
for (int p = 1; p <= AllPhoto.TotalPages; p++)
{
// Seleziona la pagina
options.Page = p;
//Aggiungo la collezione di foto della pagina alla collection che le conterr tutte
mergedCollection.AddRange(flickr.PhotosSearch(options).PhotoCollection);
}
// Pulisco la lista che andr a popolare la griglia
l.Clear();

// Ciclo sulla collection
for (int i = 0; i < mergedCollection.Length; i++)
{
// valorizzo la mia classe
MyFlickrPhoto p = new MyFlickrPhoto();
p.Numero = i + 1;
p.Title = mergedCollection[i].Title;
p.WebUrl = mergedCollection[i].ThumbnailUrl;
// la inserisco nella lista
l.Add(p);
}
// restituisco la lista appena creata
return l;
}
protected void grdFlickr_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grdFlickr.PageIndex = e.NewPageIndex;
Popola();
}
private void Popola()
{
// Popolo con il ViewState
grdFlickr.DataSource = (List<MyFlickrPhoto>)ViewState["MyList"];
grdFlickr.DataBind();
}
}

0 commenti