Cómo crear una galería de fotos usando la API de Flickr

Flickr es, sin lugar a dudas, el sitio web de fotografía más grande y mejor de Internet. Hay muchos widgets, insignias y complementos que le permiten mostrar sus últimas fotos de Flickr en su sitio web, pero lo llevaremos un paso más allá tocando Flickr e integrando su galería de fotos en su sitio web, brindándole una galería de fotos que es muy fácil de actualizar.


Crearemos esta galería de fotos utilizando la API de Flickr y phpFlickr. Si las letras 'A, P & I' son suficientes para infundir miedo en tu corazón, no te preocupes, lo tomaremos despacio y te daremos ejemplos completos de código que puedes copiar..

Flickr también lanzó recientemente el App Garden, que es un escaparate de herramientas, juguetes y sitios que utilizan la API de Flickr para ofrecer algo útil o divertido. Una vez que se familiarice con el uso de la API, puede dejar que su imaginación evoque una nueva forma de usarla y enviar su aplicación..

Para este tutorial, supongo que ya tiene una cuenta de Flickr y acceso a un servidor que ejecuta PHP y PEAR.

El contorno

  • Obtener una clave de API de Flickr
  • Descarga los archivos de phpFlickr
  • Construye una página de galería para mostrar nuestras miniaturas (con paginación)
  • Haga una página de fotos para mostrar nuestras fotos (con navegación anterior y siguiente)

Paso 1 - Obtener una clave API de Flickr

Su clave API es su propia serie única de números y letras que le otorgan acceso a los servicios de Flickr. Vaya aquí: http://www.flickr.com/services/apps/create/apply/

Aquí debe decidir si va a utilizar Flickr con fines comerciales o no comerciales. Flickr proporciona buenas explicaciones sobre lo que debe elegir, lo más probable es que necesite una clave API no comercial, que es lo que estoy eligiendo para esta demostración..

Sigue los pasos y completa todos tus datos..

Luego se le presentará su clave única, que aparecerá como una serie de números y letras al azar, como:

También verás un número llamado 'Secreto'; Ignora eso por ahora. Para este ejercicio solo necesitamos la llave; Toma nota de ello ya que lo necesitaremos pronto.

Si usa la API para crear una herramienta o un sitio geniales más adelante, es posible que desee enviar y presentar cualquier cosa que construya en el jardín de aplicaciones de Flickr. Puede hacer clic en 'Editar detalles de la aplicación' para completar la información.

Preste especial atención a las sugerencias y los consejos que se brindan en los Términos de uso de la API y en las Normas de la comunidad. Si lo abusa, lo perderá..

Ahora a las cosas emocionantes ...

Paso 2 - Descarga phpFlickr 

phpFlickr es un proyecto de Dan Coulter. Es una clase escrita en PHP que actúa como un contenedor para la API de Flickr. Los archivos procesan los datos proporcionados por Flickr y devuelven matrices en PHP, que utilizamos para mostrar nuestras fotos.

Necesitamos descargar los archivos que luego incluiremos en nuestra página web y haremos todo el trabajo complicado por nosotros. Visite phpflickr.com o vaya directamente a la página de descarga en Google Code. En esta demostración, usaremos el archivo zip: phpFlickr-2.3.1 (zip)

Descargar y descomprimirlo. Para este tutorial, solo necesitamos la carpeta PEAR y el archivo phpFlickr.php. Sube los archivos a tu directorio web

Paso 3 - Configuración básica y configuración simple  

Ahora tenemos todo lo que necesitamos para conectarnos con Flickr y recuperar nuestras fotos. Haremos dos páginas: una para mostrar nuestras miniaturas y otra para mostrar la foto. Todo el código estará disponible como páginas completas al final del tutorial..

Todos estos ejemplos de código funcionan sobre la base de que sus archivos están en la raíz de su servidor, o todos en la misma carpeta. Antes que nada, necesitamos crear una carpeta de caché para que phpFlickr funcione correctamente. Cree una carpeta llamada 'caché' en su directorio web y asígnele permisos de escritura (CHMOD 777).

Ahora construiremos una página que muestra nuestras miniaturas y tiene una paginación simple. En la galería de ejemplos, esto es index.php, y se ve así.

Antes de continuar, debemos establecer dos variables principales en el archivo config.php.

Abre config.php. Verá que solo pide dos cosas: su clave de API y su nombre de usuario de Flickr.

Primero, ingrese su clave API: el largo conjunto aleatorio de números y letras que Flickr le dio anteriormente. Mantenga su información dentro de las comillas.

// inserte su clave API $ key = "INGRESE SU CLAVE FLICKR API AQUÍ";

Ahora para tu nombre de usuario de Flickr; este no es su nombre de usuario de inicio de sesión de Yahoo ni su nombre de pantalla de Flickr, sino el nombre de usuario que usa para Flickr. Para volver a verificar, inicie sesión en Flickr y busque en la parte superior de la página donde dice "Iniciar sesión como ...", ese es su nombre de usuario. Así que declaremos nuestro nombre de usuario como una variable:

// ingrese su nombre de usuario de Flickr $ username = "SU NOMBRE DE USUARIO DE FLICKR AQUÍ";

Guarde los cambios en config.php y cárguelo, no debería volver a necesitar ese archivo.

Paso 4 - Construyendo la página de miniaturas

En la propia página. Aquí hay un desglose de lo que estamos haciendo en la parte superior de la página, que indica todo listo para la acción:

Vamos a incluir algunos enlaces Anterior y Siguiente con un poco de código más abajo en la página. Las miniaturas que vamos a mostrar dependen de la página en la que estemos, por lo que ejecutamos una simple sentencia if que tomará el número de nuestra página. Si hay una consulta 'fpage' en la url, úsala. Si no, estamos en la página uno..

 

A continuación, incluimos el archivo principal de phpFlickr que contiene todo lo que necesitamos para comunicarnos con Flickr..

// inclue el archivo principal require_once ('phpFlickr.php');

Ahora iniciamos una nueva clase del archivo phpFlickr usando nuestra clave API que obtuvimos anteriormente.

 // Encienda la clase principal de phpFlickr $ f = new phpFlickr ($ key);

phpFlickr utiliza el almacenamiento en caché para acelerar el proceso. Hay opciones de usar una técnica de base de datos, pero para este tutorial usaremos la opción de carpeta de caché más simple. Necesitamos una carpeta llamada 'caché' que se pueda escribir, lo que significa que el sistema tiene acceso a ella y puede alterar su contenido. Para ello, configure los permisos de las carpetas en 777 a través de su programa FTP. Luego agregamos esta línea para habilitarlo:

$ f-> enableCache ("fs", "cache");

Llamamos al método people_findByUsername que devuelve una matriz:

$ result = $ f-> people_findByUsername ($ username);

De esa matriz, también necesitamos su ID de usuario única (su ID de Flickr que se parece a esto: 11221312 @ N00, declarada aquí como $ nsid), que tenemos:

// toma nuestra identificación de usuario única de la matriz $ result $ nsid = $ result ["id"];

A continuación, llamamos al método people_getPublicPhotos, que nuevamente devuelve una matriz que llamaremos $ fotos. En esta línea, también estamos pasando por nuestra identificación que obtuvimos en la línea anterior ($ nsid). NULL se refiere a la opción 'extras' que no nos interesa en este momento. También estamos indicando el número de miniaturas que queremos mostrar (21), y estamos pasando a través de la página para comenzar en (página $) que se relaciona con la variable $ page desde la parte superior de la página:

 $ photos = $ f-> people_getPublicPhotos ($ nsid, NULL, NULL, 21, $ page);

El último bit que necesitamos para configurar la página es un poco de información que necesitamos para que funcione la paginación. Accedemos a la matriz $ photos que creamos anteriormente, y extraemos el número total de páginas, más la cantidad total de fotos en nuestra galería de fotos:

$ pages = $ photos [fotos] [páginas]; // devuelve el número total de páginas $ total = $ fotos [fotos] [total]; // devuelve cuantas fotos hay en total?>

Observe que estamos cerrando la sección de PHP aquí con?> Ahora tenemos todo lo que necesitamos para obtener las primeras 21 miniaturas de nuestra galería de fotos de Flickr y mostrarlas. Continuaremos con la página ahora, agregando algunos html, usando PHP para mostrar las imágenes e incluiremos algunos enlaces de paginación simples. Así que vamos a empezar escribiendo algunos html básicos..

     Nettuts Flickr Gallery Demo   

Mi galeria de fotos

Nada fuera de lo común aquí; simplemente configurando el html e iniciando un área para las miniaturas. El siguiente paso es llenar nuestro div llamado 'pulgares' con nuestras miniaturas así:

Tenga en cuenta que estamos abriendo PHP de nuevo con

Usaremos un bucle foreach para recorrer la matriz $ photos y llegar al elemento photo ($ photo), que contiene la información que necesitamos para las miniaturas..
Vea los comentarios en el código para una explicación de lo que está pasando:

 buildPhotoURL ($ photo, "Square"). "\" width = \ "75 \" height = \ "75 \" alt = \ "$ photo [title] \" /> "; // close echo echo" "; // end loop?> 

Ya casi hemos terminado con la página principal. Lo más probable es que tengas más de 21 fotos en Photostream; así que tendremos que agregar un poco de paginación con algunos enlaces Anterior y Siguiente para que podamos pasar a las siguientes 21 miniaturas. Los enlaces se ven así:

 Este código se basa en la línea que teníamos en la parte superior que llama a la variable $ page. Cuando nuestro código llama a las fotos de Flickr, también usa la variable $ page para saber dónde comenzar. Mire hacia atrás en la línea donde llamamos 'people_getPublicPhotos' y verá que también pasamos la variable $ page allí. . Ese valor es la columna vertebral de este pequeño arreglo de paginación. Abriremos un párrafo con el id de 'nav', abriremos las etiquetas PHP y definiremos nuestras variables 'atrás' y 'siguiente':

A continuación, manejamos los enlaces 'Anterior' y 'Siguiente' reales al verificar que no estamos en la primera o la última página, el cierre de php y la etiqueta 'p'.

// si no es la primera página si ($ page> 1) echo "« Prev"; // si no es la última página if ($ page! = $ pages) echo"Siguiente »";?> 

Ahora nos referimos a algunos valores que teníamos al principio para mostrar un poco más acerca de dónde estamos en la galería:

 Página $ página de $ páginas

"; eco"

$ fotos totales en la galería

";?>

Y para cumplir con los términos de Flickr y terminar la página, agregaremos:

 

Este producto utiliza la API de Flickr pero Flickr no lo respalda ni certifica..

Eso es todo lo que necesitamos para crear una página que muestre las últimas 21 fotos como miniaturas con una simple navegación Anterior / Siguiente. Al igual que la página de inicio en la demo. A continuación: la página que muestra nuestra foto..

Paso 5 - Construye una página para mostrar fotos individuales

Ahora que tenemos nuestras miniaturas, necesitamos una página para mostrar la imagen completa cuando se hace clic en una. Aquí está el código para photo.php, que los enlaces de miniaturas. Comenzamos esta página de manera similar a la página de índice, pero en lugar del número de la página, queremos el ID de la foto que se ha pasado en la URL de nuestra página de miniaturas:

enableCache ("fs", "cache");

Ahora necesitamos reunir información de Flickr sobre la foto, como el número de identificación de la foto, sus dimensiones, dónde se encuentra en relación con otras fotos (contexto) y la url de la imagen..

// acceder al método getInfo, pasando la ID de la foto $ photo = $ f-> photos_getInfo ("$ id", $ secret = NULL); // pase la identificación de la foto al método getSizes para obtener las dimensiones de nuestra imagen $ photosize = $ f-> photos_getSizes ("$ id", $ secret = NULL); // queremos las dimensiones del tamaño medio que obtenemos de la matriz $ photosize en la línea anterior $ size = $ photosize [3]; // nuevamente pasando la identificación de la foto a través de nosotros obtenemos el contexto, que nos dice qué fotos son antes y después de la identificación actual $ context = $ f-> photos_getContext ("$ id"); // el método buildPhotoURL hace lo que cabría esperar: compile la URL de la foto, pasamos $ photo y el tamaño que necesitamos para devolver la URL de la imagen, por ejemplo. http://farm4.static.flickr.com/3108/3175330082_0bf4b22e47.jpg $ photoUrl = $ f-> buildPhotoURL ($ photo, "Medium"); // Esto nos dice quién es el dueño de la foto. // Esta es una parte importante que se debe incluir, ya que queremos que nuestra galería muestre solo nuestras fotos y no saque las fotos de otros usuarios; es más una explicación al respecto en las notas al final $ owner = $ photo ["owner"] ["nombre de usuario"]; // Solo queremos la foto si nos pertenece, así que si nuestro nombre de usuario es el mismo que el propietario de la foto ... escribiremos la página y la mostraremos // más información al final del tutorial si ($ username == $ owner) ?>

Ahora estamos preparados para el resto de la página con los bits jugosos.

       <?php // We access the $photo array and grab the title of the photo to use as the document title echo $photo[title]  ?>     

galería de fotos

$ foto [título]"; // La foto en sí misma, reconocerá $ photoUrl desde arriba donde construimos la url de la foto, también estamos accediendo a la matriz de $ size que preparamos anteriormente para obtener el ancho y alto // y el título una vez más // También lo vincularemos a la versión en Flickr para una buena medida echo ""; echo "\"$photo[title]\""; echo" "; // La descripción de la foto echo"

$ foto [descripción]

";?>

Ahora tenemos nuestra foto ... y ya casi terminamos. Este último bit puede parecer un poco complicado pero no te desanimes. Tiene que ver con el contexto de la foto, como en, qué foto viene a continuación en la secuencia y cuál era anterior a ella. Tal como ves en las galerías de Flickr de la gente. La razón por la que parece que hay mucho código es porque para que esto funcione mejor, tenemos que verificar si hay una foto antes o después de la foto actual. Si no lo hay, no queremos un enlace, en su lugar insertamos texto normal y una imagen ficticia (noimg.png).

 
"; else // si no, muestra el eco de la imagen de relleno en blanco"\"No";; // si hay una foto siguiente ... if ($ context ['nextphoto'] ['id']) echo""; else // si no, muestra el eco de la imagen de relleno en blanco"\"No"; ; eco"
"; eco"

"; // si hay un enlace anterior, escriba un enlace; si no, solo el texto si ($ context ['prevphoto'] ['id']) echo" «Prev"; else echo "« Prev ";; echo" | "; // si hay un enlace siguiente, escriba un enlace; si no, solo el texto si ($ context ['nextphoto'] ['id']) echo" Next »"; else echo "Next» ";; eco"

";?>

Y para terminar la página, incluiremos un enlace a la galería principal, un poco de texto para Flickr y cerraremos el html..

«Galería principal

Este producto utiliza la API de Flickr pero Flickr no lo respalda ni certifica..

¡Sostener! Una cosa más ... terminamos la instrucción if justo antes de que comience el html ... otra vez, vea las notas al final sobre por qué hacemos esto.

 

Y ahí lo tienes. Una galería de fotos para su sitio web, impulsada por su cuenta de Flickr. Eche un vistazo a la página de demostración para ver cómo se ve con un poco de marcado adicional y estilo añadido. Esta es una implementación muy básica de la API de Flickr; simplemente roza la superficie de lo que puede hacer, pero proporciona una bonita galería de fotos para su sitio / blog que puede actualizar y mantener fácilmente a través de Flickr.

NOTAS Y EXTRAS

Diviértete y muéstranos lo que se te ocurre!