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!

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á.
q nooo, tonto xDDD
sí, me imaginaba que no tenías permiso para editar la librería, de todas maneras sí se puede hacer, metiendo una copia en el /lib. ya te echaré un cable (ya te dije que me lo tenía que mirar, no me lo puedo saber todo =:-P)
de todas maneras estoy viendo, no sé si es cosa de la API o de la librería, pero da algunas URL's mal, asume que el username es el directorio, y no siempre coinciden... habrá que mirarlo, pero para media horita no está mal, ¿no?
Con esta librería se pueden subir fotos? yo no conseguí hacerlo. Al final acabé haciéndolo con rflickr.
Por cierto, no sea usté cruel con jorge, es joven e inocente (y usa safari). En el pecado lleva la penitencia.
No, no se puede (que yo sepa). De hecho es bastante "espartana". Pero para el "modo lectura" me pareció más simple que rflickr. Es lo de siempre, simplicidad contra potencia. Hay que valorar lo que necesitas en cada caso =;-)