Torre de Babel

Cómo crear mashups con Yahoo! Pipes

by Francisco Charte.

La empresa precursora de la catalogación de contenidos en Internet, Yahoo!, te ofrece un servicio gratuito con el cual podrás construir elaborados resultados a partir de uno o más feeds RSS, Atom o RDF. Actualmente la práctica totalidad de los sitios web que se renuevan con cierta frecuencia, como los que ofrecen noticias de actualidad, las bitácoras y las de muchas empresas, disponen de un servicio que facilita los nuevos contenidos, en versión completa o abreviada, en los formatos RSS, Atom o RDF. De esta forma es posible obtenerlos de manera agregada, con aplicaciones específicas, sin necesidad de visitar cada una de las páginas de forma individual. El resultado es un ahorro de tiempo y la obtención de los contenidos que interesan o, al menos, que proceden de los sitios que interesan. Es habitual que mediante nuestro lector RSS estemos suscritos a múltiples feeds de diferentes temas que nos interesen, obteniendo la suma de contenidos de todos ellos. Con Yahoo! Pipes es posible ir un paso más allá, siendo la agregación de contenidos solamente una de sus posibilidades. Lo más interesante son los filtros y el hecho de que el resultado obtenido de una fuente puede ser utilizado para buscar contenidos en otra.

Introducción

Yahoo! Pipes es una aplicación tipo AJAX, lo que significa que solamente necesitarás de tu navegador para ejecutarla. Basta con introducir el URL http://pipes.yahoo.com e iniciar sesión, utilizando para ello las credenciales de Yahoo! si cuentas con ellas. Tendrás un usuario y una contraseña si, por ejemplo, utilizas Yahoo! Groups. De lo contrario, no tienes más que registrarte en ese mismo momento, es un proceso gratuito, sencillo y rápido.

La aplicación consta funcionalmente de dos partes bien diferenciadas: un diseñador de Pipes, que aprenderás a utilizar si lees el resto de este artículo, y un motor que ejecuta esas Pipes para ofrecerte el resultado que generen. Una Pipe es una tubería, de ahí que hagamos referencia a ellas en femenino.

El diseñador facilita la construcción de las Pipes a partir de una serie de componentes prefabricados, que irás colocando sobre una superficie y conectando entre sí mediante la técnica de arrastrar y soltar. Cada componente tiene una finalidad concreta: recuperar el contenido de una fuente, ordenar las entradas, unir entradas de varios feeds, traducir los contenidos, filtrarlos, etc.

La ejecución de una Pipe llevará a cabo todas las tareas establecidas en el diseño, generando un resultado que será el que se muestre en el navegador. En el sitio de Yahoo! Pipes hay infinidad de diseños hechos por otros usuarios, diseños que pueden ser tanto ejecutados como clonados para crear otros a partir de ellos, modificándolos o ampliándolos.

Para ejecutar una Pipe no tendrás más que elegirla, de la lista que se ofrece en el propio sitio antes indicado, como harías clic en cualquier hipervínculo. La ejecución del diseñador, por el contrario, exige que nuestro navegador tenga unas ciertas características. Si utilizas Mozilla Firefox o Internet Explorer 7 o posterior no tendrás ningún problema, pero algunas antiguas versiones de navegadores, como Opera, no son capaces de ejecutar correctamente esta aplicación AJAX o, dicho de otra forma, la aplicación no está diseñada para funcionar adecuadamente en ese navegador.

Lo primero que debes hacer, por tanto, es abrir tu navegador, ir a Yahoo! Pipes, hacer clic en el enlace Sign in que está en la parte superior derecha de la página e introducir tu nombre de usuario y contraseña para iniciar sesión. A partir de este momento ya puedes tanto examinar diseños de otros usuarios como crear los tuyos propios. Estos últimos estarán siempre accesibles en el apartado My Pipes.

Tuberías y aplicaciones

El concepto de tubería o (pipe) procede del sistema operativo UNIX. La denominación procede de la analogía clara entre un canal de comunicación, que envía los resultados que produce un programa hasta la entrada de otro, y una tubería que conecta esos mismos dos elementos, trasladando lo que sale de uno hasta otro. Ese proceso puede repetirse, de forma que la salida del segundo programa puede ser a su vez, mediante otra tubería, utilizada como entrada por un tercer programa.

Yahoo! Pipes traslada este mecanismo de comunicación entre procesos a la web, pero básicamente no hay diferencias respecto al funcionamiento de una serie de programas conectados entre sí mediante tuberías. La diferencia más obvia es que no es necesario utilizar una línea de comandos para escribir los nombres de los programas y conectarlos, porque esta tarea se efectúa visualmente desde el diseñador de Pipes.

Un comando Unix como cat temp1 temp2 | sort -n | head -5, asumiendo que los archivos temp1 y temp2 almacenan temperaturas de dos días de un cierto lugar, daría como resultado las cinco temperaturas más bajas. El comando se compone de tres partes conectadas entre sí mediante el símbolo de tubería de Unix, de forma que la salida de cat se lleva hasta sort y la de este programa hasta head.

Noticias arcaicas

Una vez que tienes una idea general de cómo funciona Pipes, lo que más te interesará será aprender a utilizar esta aplicación para hacer tus propios diseños. Comenzarás con un caso bastante sencillo, en el que vas a agregar las noticias de dos sitios que visitas habitualmente para obtenerlas combinadamente en una misma página. A continuación, en pasos posteriores, aprenderás a establecer el orden en que aparecen las entradas resultantes y a filtrarlas.

Los sitios seleccionados están relacionados con la paleontología, evolución y temas similares. Lo primero que tienes que hacer es ir a esas páginas, o cualesquiera otras que visites con asiduidad, y localizar el enlace que te facilita el feed de noticias en formato RSS, Atom o RDF. Anota el URL, para utilizarlo después en Pipes, o bien cópialo al portapapeles y de esta forma podrás pegarlo directamente cuando lo necesites.

A continuación inicia sesión en Yahoo! Pipes, haz clic en el enlace My Pipes y a continuación selecciona la opción Create a pipe. Si es la primera vez que utilizas Pipes posiblemente el diseñador te invitará a que veas cómo están construidos algunos ejemplos, todos ellos en inglés. Haz clic en el botón OK que hay en la parte inferior de la ventana de bienvenida, de esta forma te encontrarás ante el editor de Pipes.

El editor de Pipes

El núcleo de Yahoo! Pipes lo forma el editor o diseñador que facilita la composición y manipulación de los flujos de contenidos. Este editor, como se aprecia en la figura inferior, divide el espacio de trabajo en varios paneles. En la parte superior se disponen dos grupos de botones que facilitan tareas que irás conociendo poco a poco.

El panel de la izquierda contiene los distintos módulos o componentes que puedes usar en los diseños, agrupados según su funcionalidad. El grupo abierto por defecto es Sources, en el que se encuentran los módulos encargados de obtener los contenidos desde Yahoo! Search, Google, Flickr o cualquier otro lugar que te interese. La parte inferior de este mismo panel contendrá una descripción del módulo que se encuentre seleccionado en el editor.

La zona central del editor, que muestra el mensaje drag modules here, será tu superficie de trabajo. Sobre ella irás colocando los módulos, moviéndolos a donde te interese y estableciendo las conexiones adecuadas entre ellos.

Debajo de la superficie del diseñador está el área de depuración, en la que aparecerán mensajes diversos a medida que trabajes sobre el proyecto. Al probar la Pipe, por ejemplo, en esta zona se indicará el número de entradas recuperadas y sus títulos.

Fíjate en que los distintos paneles del editor están separados entre sí por unos bordes que puedes ajustar según necesites, ampliando o reduciendo el espacio asignado a cada zona. Por regla general, especialmente cuando tus diseños empiecen a ser de cierta complejidad, siempre necesitarás el mayor espacio posible en la superficie de trabajo, para poder ir colocando los módulos y conectándolos entre sí.

Un elemento imprescindible en el diseño de cualquier Pipe será el módulo, o módulos puesto que pueden ser varios, que aporte el contenido sobre el que se trabajará para generar el resultado. Estos módulos se encuentra en el grupo Sources y se caracterizan porque establecen una comunicación con un servidor remoto, efectúan una solicitud y almacenan la respuesta obtenida para su posterior tratamiento.

De los módulos de contenido existentes cuatro de ellos son de carácter específico, en el sentido de que están preconfigurados para trabajar sobre un cierto servicio: Yahoo! Search, Yahoo! Local, Google Base y Flickr. Con ellos es posible efectuar una búsqueda en la web, localizar viviendas, trabajos o imágenes, respectivamente. Estos módulos, al ser introducidos en un diseño, solicitan directamente el tipo de bien que quiere localizarse, la distancia a la que debe encontrarse de un punto, el número de imágenes a obtener, etc. Muchos de esos datos se pueden introducir manualmente, en los recuadros de texto dispuestos a tal fin, o bien se recuperados de otros módulos.

Recuperación de las entradas

Partiendo de la superficie vacía que se obtiene al iniciar un nuevo proyecto, lo primero que vas a hacer es recuperar las entradas de las bitácoras en que estás interesado. Para ello recurrirás al módulo Fetch que, a diferencia de los restantes del grupo Sources, es de tipo genérico, por lo que permite obtener contenidos de cualquier fuente. Haz clic sobre el botón Fetch para agregar el módulo al diseño.

Los componentes de Pipes aparecen como pequeñas ventanas flotantes sobre la superficie de trabajo, con un título y sus botones para minimizar y cerrar. Puedes colocarlos donde quieras sencillamente arrastrándolos, como harías con cualquier ventana. Observa que al mismo tiempo que el módulo Fetch ha aparecido otro llamado Pipe Output. Éste será el encargado de recoger los resultados del diseño y enviarlos al navegador.

En principio el módulo Fetch tiene un apartado en el que puede introducirse el URL del que se obtendrán las entradas. Según se indicó antes, puedes copiarlo en el portapapeles desde la página original y pegarlo aquí. Puesto que te interesa recuperar noticias de dos sitios, tendrás que hacer clic en el botón que muestra un icono con el signo +, a la izquierda del título URL, para añadir un nuevo URL. Repite la operación para añadir tantas fuentes como quieras.

Conexión de los módulos

En este momento tu diseño se compone de dos módulos, uno que recupera los contenidos y otro que es el encargado de enviar el resultado al navegador, pero no existe conexión alguna entre ellos. Si ejecutases la Pipe en este momento, por tanto, no obtendrías nada.

Todos los módulos de Yahoo! Pipes cuentan con uno o más puntos de conexión, en unas ocasiones de entrada, situados en la parte superior, y en otros de salida, colocados en la parte inferior de la ventana que representa al módulo. Hay otros conectores, de menor tamaño, que aparecen en el interior de las ventanas y que hacen posible que campos como el URL del que se obtendrán los contenidos, que ahora has escrito manualmente, puedan ser obtenidos de otros módulos.

La conexión entre dos módulos cualesquiera, o para ser más exactos entre dos conectores, se lleva a cabo mediante la técnica de arrastrar y soltar. En este caso puedes colocar el puntero del ratón sobre el conector que hay en la parte inferior del módulo Fetch, pulsar el botón principal y, sin soltarlo, desplazar el puntero hasta el conector de Pipe Output. Dicho conector aparecerá como iluminado al acercar el puntero del ratón. Al soltar verás cómo se establece la conexión.

Con los pasos dados hasta ahora ya tienes completado tu diseño, no hay más que guardarlo y comprobar que, en efecto, genera el resultado que buscabas. Haz clic en el botón Save que hay en la parte superior derecha del editor. Verás aparecer una ventana flotante en la que se solicita el nombre de la nueva Pipe, escríbelo y haz clic de nuevo en Save. Tu diseño ya está guardado.

El nombre que hayas dado a tu proyecto aparecerá ahora como título de la página actual del editor, en sustitución del anterior untitled. Además, a la derecha de esa pestaña ahora verás que se muestra un enlace con el título Pipe Preview. Utilízalo para ver el resultado que genera esta Pipe. Deberías ver una página en la que aparece el título de la Pipe, una serie de opciones, el diseño simplificado en el margen izquierdo y los contenidos recuperados. Desde esta página puedes modificar el diseño, utilizarlo como base para otros, publicarlo para que puedan acceder al mismo otros usuarios, etc.

Filtros y operadores

En este primer diseño te has limitado a tomar contenidos de dos o más sitios y obtenerlos conjuntamente en una página propia, algo sencillo pero que ya te ahorrará el tener que visitar individualmente cada uno de esos sitios. Yahoo! Pipes, sin embargo, puede hacer mucho más por ti. El conjunto posiblemente más potente de módulos que ofrece Yahoo! Pipes se encuentra en el grupo Operators, con componentes que permiten ordenar las entradas, unir entradas de varios módulos fuente, eliminar los elementos repetidos, filtrar las entradas para bloquear o permitir las que cumplan ciertos criterios, traducir las entradas a otros idiomas, etc.

Aunque puedes partir de un nuevo diseño para probar algunos de estos módulos, en los pasos siguientes continuaremos con el proyecto anterior, sobre el que efectuaremos cambios discretos para adecuar el resultado que genera. Concretamente vas a establecer el orden en que deben aparecer las entradas, así como a establecer un filtro que elimine aquellas que traten temas que no te interesan.

Los filtros de Yahoo! Pipes, como los de Unix, son pequeños programas que actúan a modo de embudos o máquinas de transformación. Sobre un filtro se vuelca un contenido, que puede proceder de cualquier otro módulo, sobre el que va a trabajarse para producir una salida o resultado. El trabajo puede consistir en cambiar el orden de las entradas, eliminar aquellas en las que se encuentra un cierto texto, modificar el propio contenido de las entradas, etc.

En ocasiones dichos programas no son tan pequeños. El módulo BabelFish, por ejemplo, es capaz de traducir la entrada que se le facilite entre decenas de idiomas, generando un resultado que se puede enviar directamente al módulo de salida o bien ser procesado con anterioridad en otros módulos.

En el apartado Documentation de Yahoo! Pipes, concretamente en el URL http://pipes.yahoo.com/docs/modules, puedes encontrar una descripción detallada de cada uno de los módulos que puedes usar.

Puesto que vas a cambiar la Pipe que habías creado anteriormente, deberás volver a abrirla en el editor de Yahoo! Pipes. También puedes optar por clonar dicho diseño y crear otro nuevo a partir de él. Una opción más, interesante cuando los proyectos comienzan a ser complejos, consiste en utilizar como un módulo más, Pipes que se hayan creado con anterioridad. De todas estas opciones, en nuestro caso vamos a optar por la modificación directa dada la extrema sencillez del diseño.

A fin de ordenar y filtrar las entradas que se recuperen mediante el módulo Fetch, será necesario interrumpir la conexión directa que hay entre dicho módulo y el Pipe Output. De lo contrario no podrías intercalar otros módulos entre ellos. Para cortar una conexión haz clic sobre uno de los conectores, da igual que sea un extremo u otro de la tubería. Verás que aparece un icono con el dibujo de unas tijeras. Haz clic sobre él y la conexión desaparecerá.

Cambiar el orden de las entradas

Según que el flujo de entradas obtenido mediante módulos como Fetch proceda de una fuente RSS, Atom o RDF, cada entrada constará de unos ciertos campos entre los que suelen encontrarse el título, la fecha de publicación, una descripción o un hipervínculo asociado. Los valores de cualquiera de esos campos pueden ser utilizados para cambiar el orden de las entradas o bien para filtrarlas.

El módulo encargado de ordenar las entradas es Sort y, como el resto de operadores de Yahoo! Pipes, lo puedes encontrar en el grupo Operators. Haz clic sobre este componente y colócalo en tu diseño, entre el módulo Fetch y el módulo Pipe Output, estableciendo las conexiones adecuadas para que los contenidos recuperados por el primero pasen por Sort y de éste vayan a la salida.

Una vez establecida la conexión, en la lista de la izquierda del módulo Sort aparecerán los campos por lo que es posible ordenar. No tienes más que abrirla y seleccionar el que te interese. En la lista de la derecha puedes elegir entre un orden ascendente, de menor a mayor, o bien descendente, de mayor a menor.

En caso de que te interese, puedes ordenar el flujo de entradas por más de un campo. Para ello haz clic en el icono que hay a la izquierda de Sort by y verás cómo aparece una segunda fila con las mismas dos listas que acabamos de explicarte. De esta forma es posible, por ejemplo, ordenar las entradas por fecha y, dentro de cada fecha, alfabéticamente por título.

Filtrado de las entradas

Por regla general no siempre te interesarán todas las noticias procedentes de un cierto sitio, aunque la temática de éste sí te guste. Es más, puede darse el caso de que ciertos contenidos concretos no te interesen lo más mínimo, por lo que podrías ahorrar tiempo si se eliminasen durante el proceso llevado a cabo por Pipes. Para ello no hay más que agregar un filtro y definir las reglas apropiadas.

El modulo que necesitas en este caso es Filter, que puedes colocar antes o después de ordenar las entradas obtenidas con Fetch. Si lo pones antes, de forma que la salida de Fetch vaya a Filter y la de éste a Sort, eliminarás lo que no te interesa antes de proceder a ordenar las entradas, por lo que será necesario menos tiempo para efectuar la ordenación.

Un filtro consta de una o más reglas que determinarán qué entradas se permiten o se bloquean. En la primera lista del módulo Filter tendrás que elegir entre Block: bloquear las entradas, o Permit: permitir las entradas, que cumplan los criterios que definirás a continuación. Suponiendo que no quieras obtener en los resultados las entradas en cuyo título se haga referencia a un cierto tema, elige el elemento Block.

En la lista items that match tendrás que elegir entre all o any. Si eliges all se eliminarán aquellas entradas para las que se cumplan todas las reglas indicadas debajo. De esta forma podrías, por ejemplo, bloquear las noticias que contengan una cierta palabra en el título y, además, la fecha sea anterior a una dada. Con la opción any se eliminaría la entrada en el momento en que se cumpla cualquiera de las reglas, en dicho ejemplo cuando contuviese el término en el título, fuese anterior a la fecha indicada o ambas.

Cada regla se compone de uno de los campos con que cuentan las entradas, un operador y un valor de referencia. El operador puede comprobar si el campo contiene o no contiene un cierto texto, si su valor es superior o inferior a un valor determinado o incluso utilizar una expresión regular. En la imagen puedes ver cómo se ha configurado el módulo Filter para evitar las noticias que contengan en su título el término diseño inteligente.

Hechos todos estos cambios, no tienes más que volver a guardar el diseño y ejecutar la Pipe para comprobar el resultado.

Además de módulos para recuperar contenidos de distintas fuentes y para filtrar dichas entradas, Yahoo! Pipes cuenta con muchos otros como podrás ver en el panel izquierdo del diseñador.

Los componentes del grupo User inputs permiten solicitar por teclado, antes de iniciar la recuperación de contenidos, la introducción de un número, un texto, una fecha o un URL, datos que pueden ser utilizados a continuación para, por ejemplo, componer un URL de búsqueda mediante el módulo URLBuilder. De esta forma la Pipe no genera siempre el mismo resultado, sino que éste dependerá de los datos introducidos por el usuario.

El módulo String Concatenate, en el grupo String, facilita la concatenación de cadenas, mientras que Date Formatter se encarga de convertir fechas en datos textuales.

El equipo de Yahoo! Pipes sigue trabajando en el desarrollo de otros módulos, de hecho el producto actualmente (en el momento en que se escribió este artículo) se encuentra en fase de beta. Recientemente se ha añadido el módulo Regex para la evaluación de expresiones regulares. Posiblemente cuando hagas tus primeros diseños con Yahoo! Pipes ya existan módulos adicionales a los mencionados en este artículo.