Tutorial de SimplePie

SimplePie es una librería PHP muy popular que permite parsear Feeds del tipo RSS o Atom. Tiene todos los métodos necesarios para obtener todos los datos del Feed, incluso permite hacer cache de feeds para acelerar las consultas.

simplepie

Empezando con SimplePie
Lo primero es descargar la librería desde la página oficial en SimplePie Download la cual en estos momentos esta en la versión 1.1.3, extraemos el archivo donde encontramos el archivo simplepie.inc el cual es el archivo que contiene las funciones necesarias para leer feeds. Luego creamos un archivo PHP en donde incluimos este archivo:

El siguiente paso es crear una instancia de la clase SimplePie, luego utilizamos el método set_feed_url para asignar el feed que deseamos leer y con el método set_cache_location definimos la carpeta donde se guardarán los archivos temporales de cache.

$feed = new SimplePie();
$feed->set_feed_url("http://blog.unijimpe.net/feed/");
$feed->set_cache_location("cache");
$feed->init();
$feed->handle_content_type();

Hasta este punto ya tenemos los datos del feed en la variable $feed, lo siguiente es mostrar cada ítem del feed. Para ello hacemos un recorrido por cada elemento del feed, haciendo un foreach por cada elemento devuelto por el método get_items,

<strong><?php echo $feed->get_title(); ?></strong><br />
<em><?php echo $feed->get_description(); ?></em>
<ul>
	<?php foreach ($feed->get_items() as $item) { ?>
	<li>
		<a href="<?php echo $item->get_link(); ?>">
			<?php echo $item->get_title(); ?>
		</a>
		<br />
		<?php echo $item->get_description(); ?>
	</li>
	<?php } ?>
</ul>

En donde hemos utilizado get_description para obtener un resumen de cada post, si deseamos obtener el post completo se puede utilizar get_content. Pueden ver el ejemplo funcionando en /simplepie/parser.php.

Ahora si aplicamos estilos y formateamos los resultados devueltos por SimplePie podemos lograr excelente resultados, incluso podemos incluir un formulario para que los visitantes ingresen el feed que desean leer. Pueden ver un ejemplo mucho mas completo en /simplepie/.

demo-simplepie

Pueden ver el listado completo de funciones disponibles para extraer los datos del Feed en la documentación oficial SimplePie: API Reference. Finalmente les dejo los archivos fuente de estos ejemplos para que hagan sus pruebas.

[download id=»13″ autop=»false»]

Comentarios Total 11 comentarios

caos30
Publicado: 31/05/2009 2:12 am

Te lo has currado! Gracias por tu tiempo… me viene que ni al pelo!!! Esto es un tutorial ;)

sergi

Illi.Pro
Publicado: 31/05/2009 9:39 am

Un excelente tutorial, se entendió a la perfección! Gracias!

fredy
Publicado: 01/06/2009 4:22 pm

Holas amigo unijimpe tenia una duda tube viendo la documentacion de simplepie pero no logre encontrar el metodo que me obtenga la imagen que va en algunos post, bueno y veo q tu si lograste obtenerlo en devPlanet, espero que me guie amigo unijimpe y gracias de ante mano.

fredy
Publicado: 03/06/2009 5:09 pm

ya pues amigo unijimpe una ayudita o una ligera guia px como haces sobre las imagenes con simplepie creo q tu lo redimencionas(thumbs) y o guardas, ya px unijimpe no seas malo una atudita como puedo hacer asi como tu isite en devplanet

unijimpe
Publicado: 04/06/2009 11:25 am

Hola, efectivamente SimplePie no tiene una funcion para extraer las imagenes, lo que hago es utilizar una expresion regular para encontrar todas las imagenes (estan entre los tags <img> y son archivos jpg o gif) luego ello no enlazo directamente las imagenes para no hacer hotlinking y copio estas imagenes a mi servidor. Luego aprovechando que ya tengo las imagenes, creo un thumbnail y las optimizo en calidad.

Agel
Publicado: 14/06/2009 3:20 pm

Hola, pues esta muy bien explicado, lo que no puedo lograr hacer es enlazar dos feeds, o sea, feeds de distintas urls, alguna opcion para ello? o solo se puede agergar un feed por configuracion??

Saludos y gracias por el tuto.

fredy
Publicado: 13/08/2009 1:09 am

Holas amigo, te tengo uan consulta mira toy traando de hacer mostrar 2Rss una de «Espn deporte» y otra de «depor.pe» y hacer que se ordene por tiempo uso este metodo $item->get_date(‘y-n-j H:i:s’); pero tengo un problema:
1.- no me da el tiempo especificado en el rss, me da con la zona horaria del hosting eso para el caso de depor.
2.- en el caso de Espn deportes me da una fecha que no se como se genera me da año 1969, una fecha muy equivoca que es muy diferente al que en el archivo rss.
por favor me podrias ayudar a que se ordene con la fecha y hora original, habra que hacer algun filtro. Gracias de ante mano.

etzekiel
Publicado: 22/11/2010 5:49 pm

Se podrá solo mostrar los 4 últimos feeds? jeje : P saludos!

Growstudio
Publicado: 10/10/2011 10:43 pm

Para colocar solo los últimos 4 feeds usamos esta función:


get_item_quantity(4);
for ($x = 0; $x get_item($x);
?>

rikardo
Publicado: 10/05/2012 12:59 pm

quiero saber como hago para sacar el tiempos de duración de los vídeos de youtube seque tienes q ver con un archivo de functions.php y el simplepie.inc la idea es hacerlo como sale en la function feed2txt($document){
$search = array(‘@]*?>.*?@si’, // Strip out javascript
‘@]*?>.*?@siU’, // Strip style tags properly
‘@<[\/\!]*?[^]*?>@si’, // Strip out HTML tags
‘@@’ // Strip multi-line comments including CDATA
);
$text = preg_replace($search, ‘ ‘, $document);

$excerpt_length = 20;
$words = explode(‘ ‘, $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, ‘[…]’);
$text = implode(‘ ‘, $words);
}
return trim($text);
}
pero no se como hago haver si me ayudan se agredeeria mucho!

Geno
Publicado: 22/01/2013 7:35 am

Hola amigo te quería pedir una ayudadita… acabo de bajar lo codigos del tutorial pero me tiran una infinidad de errores podrías hacharle una revisada porfii muchas gracias.

Saludos =)

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)