SimplePie: Parser RSS o Atom

  • 10/01/2007
  • 12:00 am
  • unijimpe

SimplePie es una librería PHP que te permite leer rápidamente y parsear Feeds del tipo RSS o Atom. Todo ello unificado en un solo objeto de forma que para el usuario es igual leer RSS o Atom (en cualquiera de sus versiones) sin cambiar ninguna linea de código.

simplepie.png

Sucede que hay varios formatos para los Feeds, RSS y Atom por ejemplo y entre ellos hay RSS 0.91, RSS 1.0, RSS 2.0, Atom 0.3, 1.0, todos ellos con una forma diferente de representar la información que brindan, entonces hacer un lector de Feeds (Algo mas genérico que un lector de RSS) es mas complicado pues tiene que ser compatible con todos estos formatos. Allí es donde entra SimplePie, pues te permite leer, hacer cache y parsear Feed de manera transparente, se encarga de verificar el formato y de obtener la información que tu deseas.

Utilización

Veamos el uso de esta librería para hacer un parser en PHP. El primer paso es descargar SimplePie el archivo con las fuentes de SimplePie. El siguiente paso es crear copiar el archivo simplepie.inc del archivo comprimido que hemos descargado a la carpeta donde hagamos nuestro nuevo proyecto, seguidamente creamos un archivo llamado reader.php donde crearemos nuestro parser de Feeds.

Entonces adjuntamos simplepie a nuestra página PHP con la función require.

PHP:
  1. <?php require("simplepie.inc"); ?>

Podemos ver una referencia completa de todas las funciones que nos brinda SimplePie en: http://simplepie.org/docs/reference/. El siguiente paso es crear un objeto del tipo SimplePie el cual lo utilizaremos para leer el feed.

PHP:
  1. $vfeed = new SimplePie();

Luego definimos la ruta del feed que vamos a leer, y llamamos a la función init() encargada de iniciar la lectura del feed. Adicionalmente llamamos a una función para tener compatibilidad de tipos de codificación de caracteres.

PHP:
  1. $vfeed = new SimplePie();
  2. $vfeed->feed_url("http://wordpress.org/development/feed/");
  3. $vfeed->init();
  4. $vfeed->handle_content_type();

Entonces el siguiente paso es obtener la información del feed:

PHP:
  1. echo "<h2>" . $vfeed->get_feed_title() . "</h2>";
  2. echo $vfeed->get_feed_link() . "<br><hr>";

Finalmente escribimos los posts, para ello obtenemos la cantidad de posts en el feed y hacemos un bucle FOR para leer todos los posts.

PHP:
  1. $vmax = $vfeed->get_item_quantity();
  2. for ($x = 0; $x <$vmax; $x++) {
  3.     $vitem = $vfeed->get_item($x);
  4.     echo "<b>" . $vitem->get_title(). "</b><br>";
  5.     echo $vitem->get_link() . "<br><br>";
  6.     echo $vitem->get_description() . "<br><br>";
  7.     echo "<hr>";       
  8. }

Uniendo todo el código tenemos:

PHP:
  1. <?php require("simplepie.inc"); ?>
  2. <html>
  3. <head>
  4. <title>unijimpe Feed Parser</title>
  5. </head>
  6. <body>
  7. <?php
  8. $vfeed = new SimplePie();
  9. $vfeed->feed_url("http://wordpress.org/development/feed/");
  10. $vfeed->init();
  11. $vfeed->handle_content_type();
  12. echo "<h2>" . $vfeed->get_feed_title() . "</h2>";
  13. echo $vfeed->get_feed_link() . "<br><hr>";
  14. $vmax = $vfeed->get_item_quantity();
  15. for ($x = 0; $x <$vmax; $x++) {
  16.     $vitem = $vfeed->get_item($x);
  17.     echo "<b>" . $vitem->get_title(). "</b><br>";
  18.     echo $vitem->get_link() . "<br><br>";
  19.     echo $vitem->get_description() . "<br><br>";
  20.     echo "<hr>";       
  21. }
  22. ?>
  23. </body>
  24. </html>

El resultado de este ejemplo es reader.php donde podemos ver que ha obtenido los datos del blog de wordpress.org. Ahora con un poco mas de tiempo se le agregan estilos, una tabla para alinear los textos y un formulario para ingresar la dirección del feed que deseamos leer y obtendremos un Lector de Feeds.

simplepie-reader.gif

Finalmente y como siempre dejamos los archivo fuente del ejemplo para que puedas practicar e investigar mas y puedas crear tu propio lector de Fees personalizado.

Posts Relacionados

Total de Comentarios: 6

Publicidad
19/01/2007
11:10 am

[...] En el lado del servidor tendremos que implementar un lector RSS en php, lo cual gracias a la clase simplepie y al tutorial del blog unijimpe esta tarea es más que sencilla. Ahora solo nos queda aprender a manejar el dom xml de los widgets para presentar en este formato los datos que recibimos del servidor en formato JSON. [...]

22/01/2007
5:23 pm

[...] SimplePie: Parser RSS o AtomSimplePie es una librería PHP que te permite leer rápidamente y parsear Feeds del tipo RSS o Atom. Todo ello unificado en un solo objeto de forma que para el usuario es igual leer RSS o Atom (en cualquiera de sus versiones) sin cambiar ninguna linea……………….Read more fuente related news here……. [...]

01/09/2007
11:07 am

[...] Mostrando la lista de vídeos Como el resultado del API es un feed, podemos utilizar SimplePie, el cual es un parser de Feeds hecho en PHP del cual hemos comentado en SimplePie: Parser RSS o Atom. [...]

05/11/2007
10:07 am

hola! muy buena la guia, me sirve para el planeta que quiero hacer :D una pregunta: hay alguna forma de hacer que aparezcan links para ver entradas anteriores? como en wordpress?

10/12/2007
6:00 am

Muchas gracias por la información.
Os lo curráis muchisimo.
Saludos!

05/06/2008
7:31 pm

Quería hacer una consulta, yo tengo una tabla en mysql en la que guardo URLs de feeds y lo que me gustaría es hacer una consulta a dicha tabla y que me vaya imprimiendo los posts que se van agregando a dichos feeds con el título, descripcion, autor, categoría y fecha que fue agregada la noticia.

Estuve usando la librería MagPie RSS y me anduvo bien hasta que agregué la opción de mostrar las categorías a la que pertenecen las noticias y me di con la sorpresa que las devuelve de la forma: Categoria1Categoria2CategoriaN de modo que es imposible separarlas, así que seguí buscando librerías hasta que di con esta, pero no sé como podría hacer eso que deseo.

Espero me puedas echar una mano, gracias de antemano.

Saludos.

Enviar Comentario

(*)

(*)