Flickr on Rails

flickronrails

Para empezar a usar el API de Flickr en tus aplicaciones puedes hacerlo directamente desde el API o usando las gemas que existen disponibles, lei muchas preguntas y comentarios sobre cual era la mejor gema y mi conclusión probando ambas es simple rflickr.

rFlickr

Para aplicaciones mas grandes o elaboradas, es una fiel representación de la API de Flickr, de hecho existe poquisima documentación con respecto a rFlickr, porque con la descripción de la API basta.

sudo gem install rflickr

Recuerda que si has utilizado la gema flickr debes desinstalarla porque ocupan como base el mismo nombre de la clase, flickr.rb

Autentifica tu aplicación solo una vez

Esta opción es muy util porque guardas todas tu llaves de autentificación en un archivo el cual despues solo tienes que leerlo para obtener full permisos.

URL, FROB y Archivo de Autentificación

Primero debes obtener los datos de tus llaves en Flickr (Obtener llaves)

APIKEY


@flickr = Flickr.new(”/ruta/al/archivo/flickr.cache”,”API KEY”,”SHARED SECRET”)
@link = flickr.auth.login_link

1. Pinchando @link serás enviado a Flickr el que te pedira que autorices la aplicación, si la autorizas, flickr te enviara a la URL que seteaste como Callback URL con el Frob como parametro.

El frob es string que necesitas para generar el archivo de autentificación y olvidarte de este tema en tu aplicación.

2. En la dirección que setees como CallBack URL deberás estar esperando el frob de esta manera.


@flickr = Flickr.new(”/ruta/al/archivo/flickr.cache”,”API KEY”,”SHARED SECRET”)
@flickr.auth.getToken(params[:frob])
@flickr.auth.cache_token # En este punto, guardo el archivo.

3. Ya has completado el paso de autentificación, ahora solo debes ocuparla!.

Mostrando las fotos dentro de tus sets

El codigo que voy a poner es solo didactivo, al momento de crear tu app lo deberás refinar.


@flickr = Flickr.new(”/ruta/al/archivo/flickr.cache”,”API KEY”,”SHARED SECRET”)
@sets = @flickr.photosets.getList

for set in @sets
# set.id - set.title - set.description
@photos = @flickr.photosets.getPhotos(set.id)
for photo in @photos
img class=’foto-id’ src=’http://farm1.static.flickr.com/<%= photo.server %>/<%= photo.id %>_<%= photo.secret %>_t.jpg’ width=’100′ height=’75′ alt=’<%= photo.title %>‘
end
end

4. Para terminar, cuando estaba implementando el sistema, utilice una función de la API, photos.getSizes, que retornaba la dirección URL a los diferentes tamaños, el problema era que al iterar sobre todas las fotos y a su vez obtener el tamaño, el servidor suplicaba parar, es por eso que investigando un poco mas llegue a una descripción de la URL de la API, les dejo el link para que jueguen mas con las URL dejando de llenar al servidor con peticiones.

pd. Darse cuenta que ocupe la etiqueta img sin “<>“, lo que me dice… Nico, tienes que hacerte un css para mostrar codigo en tu pagina.

Guardado en: flickr, rails, ruby |

1 Comment

  • Friday, 14 March 2008, 4:14
    By Melisa

    Buenas,

    actualmente estoy intentando instalar la gema de rflickr pero estoy teniendo problemas. He intentado con gem install rflick y me muestra el siguiente error: ERROR: While executing gem … (NoMethodError)
    undefined method `refresh’ for #
    Tb he intentado a instalarla según la info de INSTALL_en.txt de la propia gema pero me lanza el siguiente error:
    —> lib
    —> lib/flickr
    <— lib/flickr
    lib
    —> lib/flickr
    <— lib/flickr
    lib
    mkdir -p /usr/lib/site_ruby/1.8/
    install flickr.rb /usr/lib/site_ruby/1.8/
    setup.rb:634:in `initialize’: Permission denied - /usr/lib/site_ruby/1.8/flickr.rb (Errno::EACCES)
    from setup.rb:634:in `install’
    from setup.rb:1336:in `install_files’
    from setup.rb:1335:in `install_files’
    from setup.rb:1309:in `install_dir_lib’
    from setup.rb:1498:in `traverse’
    from setup.rb:1515:in `dive_into’
    from setup.rb:1496:in `traverse’
    from setup.rb:1490:in `exec_task_traverse’
    from setup.rb:1485:in `exec_task_traverse’
    from setup.rb:1301:in `exec_install’
    from setup.rb:1000:in `exec_install’
    from setup.rb:815:in `invoke’
    from setup.rb:774:in `invoke’
    from setup.rb:1544

    La cuestión es que el site esta en un servidor compartido y estaría bien que la gema se instalara en el subdominio correspondiente.
    He metido flickr.rb y la carpeta flickr en lib pero nada, pero donde debe estar setup.rb?

    Saludos

Leave a comment