Flickr API per .NET
Premessa
Le risorse messe a disposizione dalla rete per facilitare lo sviluppo delle applicazione sono veramente notevoli.
In nome del web 2.0 molte API permettono di decentrare lo sviluppo usufruendo di servizi che sarebbe impegnativo implementare.
Oltre a questo si ha il vantaggio di diffondere in rete il proprio nome dando la possibilità ai navigatori di usufruire delle
informazioni del proprio sito, in diverse modalità.
Flickr
In questo articolo vedremo come integrare nel proprio sito le foto che si sono condivise su Flickr. Inoltre visto che
questo sito, come la maggior parte di quelli da noi costruiti, è in ambiente .NET abbiamo deciso di verificare l'efficacia
di una delle numerose librerie segnalate dagli sviluppatori di Flick stesso.
Quindi per prima cosa è necessario scaricare la libreria (vedi link nel box a lato) e copiarla nella nostra
directory BIN. La libreria è compatibile con tutte le versioni di .NET superiori alla 1.1+. L'unica dll da copiare è FlickR.dll
dalla sottodirectory "Release"
A questo punto non resta che richiedere una API key a flick (lo trovate in http://www.flickr.com/services/api/keys)
Il codice sottostante mostra come richiedere tutte le foto pubbliche legate ad un account (togliendo il pcounter
non si limita la richiesta solo alle prime due foto).
Imports FlickrNet
Dim apikey As String = "-- Sostituisci con la tua API KEY --"
Dim f As Flickr = New Flickr(apikey)
Flickr.CacheDisabled = True
Dim searchOptions As PhotoSearchOptions = New PhotoSearchOptions()
searchOptions.UserId = "-- Sostituisci con il tuo ID"
Dim myphotos As Photos = f.PhotosSearch(searchOptions)
Dim pcounter As Integer
Dim out As New StringBuilder
Dim frm As String = "<img alt="""" src=""{0}"" />"
For Each p As Photo In myphotos.PhotoCollection
out.Append(String.Format(frm, p.WebUrl))
pcounter += 1
If pcounter > 1 Then ' Just for test
Exit For
End If
Next
Me.LiteralOut.Text = out.ToString
Per conoscere il vostro userID, che NON è vostro nome visualizzato, andate sull'icona del vostro profilo e lo troverete nelle
proprietà: qualcosa tipo http://l.yimg.com/www.flickr.com/images/buddyicon.jpg#123456@N04. Il vostro userID è la parte finale dopo #.
Di seguito il risultato nel caso dell'account Softgens.
Nota importante
Durante l'upload della prima versione del programma nell'ambiente di produzione potreste imbattervi nell'errore
Access to the path '(path locale)\FlickrNet' is denied
Questo problema è dovuto ad un errata impostazione della cache che, non essendo stata impostata, lavora nella directory
di default (probabilmente /BIN): l'accesso vietato genera l'errore. Per risolvere il problema potete, come nell'esempio,
disabilitare la cache o seguire le indicazioni sul forum CodePlex.
Photosets
Con Flickr è possibile dividere le proprie foto in diversi album chiamati photoset. Il nostro secondo esperimento sarà quello
di estrarre solamente le foto di un determinato utente contenute appunto in un photoset.
La lista sottostante mostra tutti i photoset dell'utente Softgens.
| |
PhotosetId: 72157606592532329
Url:
OwnerId:
PrimaryPhotoId: 2740546111
Secret:
Server: 3284
Farm: 4
NumberOfPhotos: 7
Title: The village: Cinque Terre
Description: The village Bed & Breakfast
PhotosetThumbnailUrl: http://farm4.static.flickr.com/3284/2740546111_ce97a77750_t.jpg
PhotosetSquareThumbnailUrl: http://farm4.static.flickr.com/3284/2740546111_ce97a77750_s.jpg
PhotosetSmallUrl: http://farm4.static.flickr.com/3284/2740546111_ce97a77750_m.jpg
|
PhotosetId: 72157605904551214
Url:
OwnerId:
PrimaryPhotoId: 2307572268
Secret:
Server: 3285
Farm: 4
NumberOfPhotos: 3
Title: Memories
Description: New and old friends
PhotosetThumbnailUrl: http://farm4.static.flickr.com/3285/2307572268_6e2a5fd302_t.jpg
PhotosetSquareThumbnailUrl: http://farm4.static.flickr.com/3285/2307572268_6e2a5fd302_s.jpg
PhotosetSmallUrl: http://farm4.static.flickr.com/3285/2307572268_6e2a5fd302_m.jpg
|
PhotosetId: 72157605904542666
Url:
OwnerId:
PrimaryPhotoId: 2626342582
Secret:
Server: 3012
Farm: 4
NumberOfPhotos: 2
Title: Cats lover
Description: Just cats
PhotosetThumbnailUrl: http://farm4.static.flickr.com/3012/2626342582_951c080a7f_t.jpg
PhotosetSquareThumbnailUrl: http://farm4.static.flickr.com/3012/2626342582_951c080a7f_s.jpg
PhotosetSmallUrl: http://farm4.static.flickr.com/3012/2626342582_951c080a7f_m.jpg
|
Con un piccolo loop e sempre possibile estrarre tutte le foto appartenenti ad un determinato Photoset
Dim myPhotoSet As Photoset = f.PhotosetsGetPhotos(myphotosets.PhotosetCollection(0).PhotosetId.ToString)
For Each p As Photo In myPhotoSet.PhotoCollection
out.Append(String.Format(frm, p.ThumbnailUrl))
Next
Me.LiteralPhotoset.Text = out.ToString