Ir directamente al contenido de esta página
Como ya hicimos para el RSS de WordPress, vamos a explicar como aprovechar los feeds que proporciona Flickr para incluir sus contenidos en una página por medio de PHP.
Básicamente, el procedimiento para hacerlo es el mismo que empleamos en la entrada mencionada arriba —uso de DomDocument() y recorrido de los nodos—, por lo que sólo vamos a explicar un punto que puede ser un poco problemático si no se conoce a fondo el estándar del DOM.
Para los impacientes, ésta es la prueba con la galería de fotos que mi mujer mantiene de nuestros gatos, y éste es el código:
<ul>
<?php
$xml = new DomDocument();
$xml->load('http://api.flickr.com/services/feeds/photoset.gne?set=número_del_set&nsid=id_del_usuario&lang=es-us&format=rss2');
$root = $xml->documentElement;
$entradas = $root->getElementsByTagName('item');
for($i=0;$i<($entradas->length);$i++){
$titulo = $entradas->item($i)->getElementsByTagName('title')->item(0)->nodeValue;
$vinculo = $entradas->item($i)->getElementsByTagName('link')->item(0)->nodeValue;
$miniatura = $entradas->item($i)->getElementsByTagNameNS('*','thumbnail')->item(0)->getAttribute('url');
$fecha = $entradas->item($i)->getElementsByTagName('pubDate')->item(0)->nodeValue;
$fecha_unix = strtotime($fecha);
$fecha = strftime("%d/%m/%Y",$fecha_unix);
echo '<li><a href="'.$vinculo.'"><img src="'.$miniatura.'" width="120" height="120" alt="" /></a> <i>'.$titulo.'</i> '.$fecha.'</li>';
}
?>
</ul>
Ahora, si alguien quiere saber algo más…
El primer paso indispensable es localizar el RSS del que queremos extraer la información. Cuando se trata de una galería pública, se localiza debajo de las miniaturas:
Para la pequeña galería que quiero crear sólo voy a emplear de cada entrada del RSS el título de la imagen, la fecha en la que se publicó, el vínculo a la página de Flickr y el URL de la miniatura.
Los que ya hayan leído la entrada indicada sabrán que una vez cargado el feed por medio de DomDocument() sólo es cuestión de recorrerlo para localizar el contenido de los elementos title, link y pubDate.
Pero… ¿de dónde saco las miniaturas? ¿Cuál es el elemento definido en RSS 2.0 para etiquetarlas? Pues ninguno, no existe nada como <thumbnail>url</thumbnail>. Para incluir esa información, en Flickr han empleado un espacio de nombres —media— creado por Yahoo, y que declaran en la raíz del RSS:
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" [...] >
En éste precisamente definen thumbnail, y lo encontramos en el feed de esta manera:
<media:thumbnail url="url_de_la_miniatura" height="75" width="75" />
Como se trata de un elemento de un espacio de nombres, no podemos extraerlo del DOM por medio de getElementsByTagName() como lo hacemos para el título o la fecha, sino que tenemos que emplear getElementsByTagNameNS(), un método que necesita dos parámetros: el prefijo del espacio de nombres y el nombre del elemento. En nuestro código lo empleamos así:
$miniatura = $entradas->item($i)->getElementsByTagNameNS('*','thumbnail')->item(0)->getAttribute('url');
Como es imprescindible indicar ambos parámetros, pero el prefijo nos resulta irrelevante, empleamos el asterisco.
Y con esto, ya obtenemos todos los datos que necesitamos para integrar nuestra galería.
Tal vez alguien se preguntará: «¿por qué no emplear phpFlickr o MagpieRSS?, ¿hay algún problema con ellas?». En absoluto, son librerías muy potentes y sus autores han realizado un trabajo encomiable. No obstante, nosotros nos decantamos por la economía de medios: no estamos seguros, pero intuimos que por el principio de Pareto el 80% del empleo común de estas librerías no agota ni el 20% de sus capacidades. Si lo que se pretende es crear una aplicación que deba consumir de forma intensiva recursos de Flickr, no hay duda de que son tremendamente eficaces, ¿pero para incluir las miniaturas de una galería pública con sus respectivos enlaces? Creemos que son innecesarias.
Somos un pequeño estudio fundado en 2007 por tres amigos y que actualmente cuenta con un nutrido grupo de colaboradores, todos ellos profesionales con entre ocho y once años de experiencia en diversos aspectos del desarrollo y la programación web.
Además, Digital Icon, S.L. (N.I.F.: B84622927) es una empresa inscrita en el Registro Mercantil de Madrid, Tomo 22 436, Libro 0, Folio 20, Sección 8, Hoja M-400861, Inscripción 1, conforme a los artículos 18 del Código de Comercio y 6 del Reglamento del Registro Mercantil.
Si quiere conocer un poco mejor cómo trabajamos, puede descargar una copia del contrato que firmamos con nuestros clientes o seguirnos en Google+:
Cliente: La Fábrica
División: MovilizaWeb
Nuestro trabajo: PHP, HTML5, CSS
Cliente: Ana del Val
División: EidoWeb
Nuestro trabajo: PHP, XHTML, CSS, JavaScript
Cliente: Guiomar González
División: EidoWeb
Nuestro trabajo: PHP, HTML5, CSS, jQuery
© Digital Icon, S.L., 2007 – 2012
Comentarios
Aún no hay comentarios
¿Algún comentario?