Imágenes Flickr en tu Web con PHP y MagpieRSS

baluart4 Octubre 2006 - 11:34pm 9 comentarios
Enviar por Email Imprimir

Imágenes Flickr en tu Web con PHP y MagpieRSS

Una de esas clases que son recomendadas por todos, tanto por su facilidad de uso como por su potencia, es sin duda Magpie RSS. En este artículo vamos a ver como emplearla para crear una sencilla Galería de imágenes (almacenadas en Flickr) en nuestra web.

Para ello vamos a crear una pequeña función PHP (muy sencilla) que nos permitirá:

  • Actualizar la galería conforme se suban las fotos a flickr
  • Parsear cualquier feed de Flickr (tags, grupos, pools, usuarios, etc.)
  • Mostrar el número de imágenes que deseemos, y
  • Cambiar las dimensiones de las fotos (recuerde que Flickr ofrece distintos tamaños)

Y todo, únicamente modificando tres valores.

Pueden ver el ejemplo final (con unos toques de de color).

Sobre MagpieRSS

MagpieRSS es una clase muy potente y ese es el motivo por el cual aún sigue en boga a pesar de existir otras muy buenas clases PHP para el mismo fin. Desde hace buen tiempo la vengo utilizando, incluso en el blog publique un sencillo lector RSS, que con el cambio de servidor ha dejado de funcionar, pero que pronto corregiré. Si tienen interés sobre como crear un lector de RSS con MagpieRSS, xlwebmasters ha publicado un sencillo tutorial.

Sobre Flickr, sus feeds y su API

Flickr se ha convertido en un modelo de aplicaciones web 2.0 y como digna embajadora de ello, comparte su API con todos los usuarios que quieran emplear sus servicios en su propio dominio. De esta manera, reutilizando la API de flickr, se pueden crear muchísimas aplicaciones interesantes: Galerías, Mashups, Flogs y más.

Sin embargo, el uso de esta API la dejaremos para luego; porque además, Flickr proporciona feeds para casi todo lo que almacena: Hay feeds para los usuarios, para los tags, para los grupos, para los pools, para los comentarios, para las noticias. Si hay un feed que no proporciona Flickr es únicamente interesting, pero esto también tiene su solución.

La Función PHP: mostrarImagenesFlickr()

Esta función es muy sencilla y cada línea del script esta comentada, por lo que no voy a extenderme explicándola. Sólo mencionar algunos puntos para comprender como utilizar Magpie RSS, algo de expresiones regulares, como se cambia el tamaño a las imágenes y como se imprime el html.

  1. Uso de Magpie RSS: Para saber como parsear RSS, primero hay que conocer como se estructura. Este artículo publicado en vfpnetwork lo explica claramente.
  2. Expresiones regulares: Cómo verán, la función utiliza expresiones regulares. Principalmente porque la URL de la imagen a mostrar, viene dentro de un texto de descripción en los feeds. Por lo que utilizaremos la función preg_match() para ubicar la URL de la imagen y recuperarla. También, dejamos la opción para que recuperen (si lo necesitan) el nombre del autor de la imagen y su email.
  3. Cambiando las dimensiones de las imágenes: Si son usuarios de Flickr sabrán que ésta proporciona 5 distintos tamaños por cada imagen, los cuales tienen similar URL con la única diferencia de tener uno ó dos caracteres adicionales ó distintos al final del nombre (por ejemplo: _s ó _m). Este artículo publicado en tyrannosaurusreflex lo explica claramente.
    Por ello, para hacer los cambios de tamaño, simplemente utilizaremos la función str_replace() y dado el valor que le proporcionemos, cambiará los caracteres necesarios.
  4. Imprimir el html: Desde su inicio, la función mostrarImagenesFlickr() va almacenando los valores y etiquetas HTML en una variable, llamada oportunamente: $html, para ello se hace uso del operador “.=”.

Cómo reutilizar el código

La función mostrarImagenesFlickr() de por sí se liga a la clase MagpieRSS, por lo que no será necesario invocarla. Simplemente basta con dar los valores a las variables claves de la función y llamarlla. Añade esto en el fichero que mostrará la galería:

<?php
require_once("flickr_fns.php");

     $feed = 'URL_DEL_FEED';
     $dimension = "cuadrado";
     $numero = 16;

motrarImagenesFlickr($feed,$dimension,$numero);
?>

Cómo ven, es muy sencillo parsear feeds y crear cosas interesantes con ellos. Si no han descargado el código fuente para que lo prueben, pueden hacerlo del enlace de abajo. Espero les sirva.

Enlace | Ejemplo de Galería Flickr
Descargar | Código fuente

Comentarios

Imagen de 85bytes.com

umm descargue el codigo y no hay nada... haber si verificas la descarga mennnn

Imagen de Balú

Acabo de verificar la descarga y todo esta perfecto. Por cierto, si usas IE debes deshabilitar el filtro de popups para la descarga. Si usas FF no tendrás ningún inconveniente. Si continua el problema házmelo saber.Saludos.

Imagen de Pablo
Pablo

Warning: main(../Connections/connBlog.php) [function.main]: failed to open stream: No such file or directory in /home/baluart/public_html/descarga/descarga.php on line 2

Fatal error: main() [function.require]: Failed opening required '../Connections/connBlog.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/baluart/public_html/descarga/descarga.php on line 2

Imagen de baluart
baluart

Estamos renovando nuestro sitio, por ello los enlaces rotos. Ya esta todo resuelto. Saludos, y espero te suscribas al blog para que recibas más notas como esta.

Saludos.

Imagen de Diego Plencovich

mmm una pregunta, se puede hacer que muestre todas las fotos de mi galeria flickr paginada? osea mostrar unas 12 fotos aprox por pagina.

gracias

Imagen de Anonymous
Anonymous

Se agradece, excelente trabajo.
recomendaría un poco de documentación, es mi primer trabajo con flickr y tuve que cabecearme algo entendiendo como hacerlo con tags y no con grupos.
se agradece.

Imagen de masydeas

Tengo un problema extraño... Se muestran las fotos perfectamente, pero si introduzco alguna foto en Flickr no se muestra en la galeria de fotos(no se actualiza), y si por el contrario las elimino, se me mantiene en la galeria el nombre de la foto pero sin foto. (k lio no? jejeje)
He estado haciendo experimentos y si cambio, por ejemplo, el QueryString del idioma en la ruta del link se me actualiza pero si pongo el anterior se vuelve a ver mal...

$feed = 'http://api.flickr.com/services/feeds/photos_public.gne?id=33423502@N05&lang=eDs-us&format=rss2';

No entiendo que sucede, si me pueden ayudar. Gracias

Imagen de joan blanch
Imagen de gusta chang
gusta chang

Si necesito que el api me devuelva mas de 20 elementos? Fijate que intente cambiar la variable $numero a 30 pero el api solo me devuelve los primeros 20 elementos

Tutoriales

Cómo descargar videos de VK.com
En este artículo voy a explicar como descargar videos y películas...
Descargar Facebook Móvil Gratis
Por si aún no lo han hecho, es posible descargar Facebook Móvil...
Cómo generar tráfico web con las redes sociales - Paso a Paso
Muchas empresas están publicando contenidos como la forma de crear...

Artículo Recomendado

3 Tips cruciales para recuperar archivos eliminados
¿Te imaginas perder el trabajo de toda una semana en tan solo unos segundos? Todos hemos pasado por este problema. Quizás eliminamos por error un archivo importante o lo borramos sin pensar que era valioso para otro... más