Tutte le immagini Explore di Flickr (aggiornato)
by Michele
Flickr, il famoso servizio di condivisione di immagini on-line, ha creato una sezione chiamata Explore. Explore presenta le immagini che hanno ricevuto il maggior numero di visite e commenti nella giornata odierna. Per questa sezione, attualmente, non è previsto nessun metodo nella API di Flickr.
Per vedere la lista completa di tutte le foto più belle della giornata ho scritto una libreria Ruby chiamata “flickrexplore.rb” che permette di scaricare tutte e 500 le immagini. Il numero complessivo di immagini è presentato in 50 pagine da 10 immagini per ognuna. Questo script cerca in maniera automatica tutte le pagine e restituisce una collezione di oggetti che rappresentano le singole immagini.
Per presentare le immagini ho preparato una piccola applicazione con Ruby On Rails. Ecco in dettaglio come ho fatto:
Ho creato il progetto e il controller con i seguenti comandi:
rails flickrexplore ruby script/generate controller flickr
Ho aggiunto il metodo explore al controller flickr:
require 'date'
require 'flickrexplore'
class FlickrController < ApplicationController
def explore
flickrexplore = DayExplorePhotosGrabber.new
@photos = flickrexplore.grab()
now = DateTime::now()
@title = now.strftime('%Y/%m/%d')
end
end
Poi ho creato il file explore.rhtml nella directory delle viste:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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" xml:lang="it" lang="it" dir="ltr">
<head>
<title>Flickr Explore <%= @title %></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
a img { border: none}
</style>
</head>
<body>
<h1>Explore photos for <%= @title %></h1>
<% @photos.each do |photo| %>
<a href="http://www.flickr.com/photos/<%= photo.author %>/<%= photo.photoid %>/" title="<%= photo.title %>"><img src="http://static.flickr.com/<%= photo.server %>/<%= photo.photoid %>_<%= photo.secret %>_s.jpg" alt="<%= photo.title %>" /></a>
<% end %>
</body>
</html>
Ecco il risultato:
Ancora una volta sono estremamente sorpreso della velocità con cui si possa creare dal nulla un’applicazione web. Gli strumenti di generazione di Rails sono veramente fantastici!
Se volete utilizzare la libreria in altri ambiti potete scaricarla da qui: flickrexplore.rb – 2Kb
AGGIORNAMENTO:
Con i consigli di riffraff ho ridotto di circa 15 righe il codice della libreria.

Commenti
Semplicità di Ruby
Ancora una volta mi scopro affascinato (spaventato?) dalla semplicità di Ruby. Black-bird, in arte Michele, ha realizzato una libreria in Ruby per navigare l’explore di Flickr.
Ok, la stessa cosa si può fare anche con PHP, Perl, ASP (si dai anche i…
ho dato un’occhiata proprio ultraveloce.. ma credo potrebbe interessarti delle mini osservazioni:
A occhio puoi ridurre la libreria a 25 righe senza diventare troppo oscuro
I tuoi consigli sono sempre benvenuti
Considera che ho iniziato da poco con Ruby e il mio codice che ho scritto è molto più simile a Java e Python. Mi ricordo ancora quando scrissi i primi script con Python, sembrava codice Java tradotto riga per riga
Ho applicato tutte le modifiche che mi hai consigliato meno che quella della
open-uriperchè a me serve un vero client HTTP. L’unica cosa che mi lascia perplesso è l’operatore||=che non ho trovato da nessuna parte, sai dove posso cercare in particolare ?non mi viene in mente nessun punto dove se ne parli, ma è soltanto una di quelle cose dove sostituisci
foo = foo [operatore] bar
con
foo [operatore]= bar
(come “x+=1″ o “x*=2″)
In ruby esiste un operatore “||” allora puoi scrivere
x = x || default #se x è nil o false il risultato dell’or logico è “default”
ma anche
x ||= default
Potresti ancora voler usare esplicitamente un test del tipo:
x= default if x.nil?
se magari “false” fosse un valore valido per x.
[...] Un feed di queste foto è indispensabile, anzi fondamentale. Per questo motivo ho realizzato uno script Ruby che ogni x minuti si collega alle pagine Explore e “cattura” le informazioni sulle ultime foto creando un feed Atom. All’inizio questo feed era posizionato all’interno di questo sito ma credo che in futuro, questa soluzione potrebbe darmi problemi di banda. Sono convinto che un feed del genere potrebbe interessare parecchia gente. [...]