Ruby vs. Flickr
Este artículo se iba a titular Ruby & Flickr, pero le he cambiado el título en homenaje a la pelea tan absurda que me traigo desde hace unos 20' con la gema de Flickr para Ruby (una de ellas, hay varias). Que ya he solucionado, eso sí de una manera un poco guarra. Pero la culpa no ha sido mía, lo juro.
Va de cómo conectar con Flickr desde cualquier aplicación Ruby, con Rails en la cabeza, pero no necesariamente. Va dedicada a Jorge que, como toda persona con un punto de genialidad, no puede evitar empezar las cosas por el final =;-)
Lo prime, instalar la gema:
$ sudo gem install flickr --include-dependencies
En verdad lo prime era conseguir una API key de Flickr, aquí.
Lo segun es editar la librería. No, amigos, no he bebido. Parece ser (lo he aprendido en la pelea que os mencionaba) que es la única forma de que se use nuestra API key en vez de la que viene por defecto (que para más información no funciona). Para añadir algo de confusión, en teoría se le puede pasar la API key como parámetro, pero sólo la usa en la primera conexión. Después vuelve a usar la que viene por defecto, que como ya he dicho no va. Cosas del software experimental.
Pues eso, que cojáis vuestro editor favorito y abráis la librería. En Linux está en /usr/lib/ruby/gems/1.8/gems/flickr-1.0.0/flickr.rb. El que use algún otro engendro (ya saben que Todos Los Sistemas Operativos Menos El Mío Son Basura (tm)), que lo hubiera pensado antes =;-)
En cuanto abráis el archivo y bajéis un poco, váis a ver dónde tenéis que sustituir la API key.
Ya estamos listos para escribir nuestra próxima obra de arte de la Web 2.0. Si os leéis esta documentación, y si queréis profundizar un poco más, ésta otra, no hace falta más explicación. Pero como nos conocemos, pondremos algunos ejemplos =;-)
Este script, ejecutado en un terminal, nos dará una lista del título, autor y URL de las últimas 10 fotos etiquetadas como Ruby:
require 'rubygems'
require_gem 'flickr'
flickr = Flickr.new
photos = flickr.tag('ruby')
photos[0..9].each do |photo|
puts "#{photo.title} (#{photo.owner.username}): #{photo.url}"
end
Si a alguien le ha parecido difícil, que sepa que está expulsado de clase.
Otro ejemplo, ahora para Rails, que sé que lo estáis deseando. Vamos a sacar en chiquitín las últimas 6 fotos de un usuario, por ejemplo.
Es muy parecido. En el controlador creamos la variable:
flickr = Flickr.new
@photos = flickr.users('jorge.hipster').photos[0..5]
Y en la vista, por ejemplo:
<% @photos.each do |photo| -%>
<a href="<%= photo.url %>"><img src="http://www.lacoctelera.com/<%= photo.source('Square') %>" alt="<%= photo.title %>" /></a>
<% end -%>
O, si os gusta más con helpers (como a mí, cuando me dejan =;-) ):
<% @photos.each do |photo| -%>
<%= link_to(image_tag(photo.source('Square'), :alt => photo.title), photo.url %>
<% end -%>
Ale chavales, ¡a quemar esa API!



jorge dijo
jajajaja que cabrón!
leía y leía y mi los colores me salían :D
que forma más cruel de ridiculizar a un diseñata con ganas de aprender cosas, eh? ;)
gracias! lo pondré en práctica... lástima que dreamhost no me deje hacer la mitad de las cosas que dices que debo hacer :S pero alguna forma habrá.
20 Noviembre 2006 | 11:58 PM