miércoles, marzo 28, 2007

Otra forma de ver Flickr! - Semana 13

Decidí partir probando Flickr!, primero por que es más "entretenido" ver fotos que pelear con el HTML ;-) segundo por que me pareció interesante que a partir de una API existieran variadas implementaciones de librerías construidas sobre ella.

En particular una, FlickrNet, desarrollada en .NET y que encapsula las llamadas.

Fue bastante rápido el acceso, usando un par de ejemplos y viendo que se podía hacer, escribí una pequeña aplicación que a partir de tags, hace una búsqueda y permite ver las imágenes.

Por simplicidad, la lista muestra concatenados los nombres y las URL's, aquí va el código.

 

Imports FlickrNet
Imports System.IO
Imports System.Net

Public Class frmMain
Dim tempStr As
String
Private f As Flickr
Dim imgL As ImageList

Private Sub cmdProcess_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcess.Click

Dim opt As PhotoSearchOptions
Dim fotos As Photos
Dim foto As Photo

opt = New FlickrNet.PhotoSearchOptions
opt.Tags = txtTag.Text
opt.PerPage = 100

fotos = f.PhotosSearch(opt)
imgL = New ImageList

lstInfo.Items.Clear()
For Each foto In fotos.PhotoCollection
lstInfo.Items.Add(foto.Title & "|" & foto.SmallUrl)
Next
End
Sub

Public Sub New()

' This call is required by the Windows Form Designer.
InitializeComponent()

' Add any initialization after the InitializeComponent() call.
Dim apiKey As
String
Dim secretKey As
String

apiKey =
"..esto se pide en flickr!..."
secretKey =
"..idem.."

f = New Flickr(apiKey)
End
Sub

Private Sub lstInfo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstInfo.SelectedIndexChanged
Dim sItem As
String
Dim iPos As
Integer

sItem = lstInfo.Items(lstInfo.SelectedIndex)
iPos = InStr(sItem, "|")

'picAux.Load(Mid(sItem, iPos + 1))
picAux.Image = GetURLImage(Mid(sItem, iPos + 1))
End
Sub

Public Function GetURLImage(ByVal sURL As String) As Image
Dim imgAux As Image
Dim imgStream As Stream

imgStream = New WebClient().OpenRead(sURL)
imgAux = Image.FromStream(imgStream)
imgStream =
Nothing
Return imgAux
End
Function
End
Class

Son pocas líneas, y para usar lo único que hay que hacer primero es conseguir una API Key propia y reemplazarla en la asignación de apiKey y secretKey.


 


Ahhh, hay que pegar en el formulario un listbox (lstInfo), un PictureBox (picAux), un Textbox para el tag (txtTag) y un botón para ejecutar (cmdProcess) y voilá, tenemos un buscador mediante tags que permite visualizar la imagen.....


Nota: Si alguien decide jugar con el código anterior y agregarle funcionalidad no hay problema, al igual que el resto del sitio, está todo con Licencia Creative Commons. Pero agradecería saber de que forma lo han usado.

No hay comentarios.: