yahoo pipes

Upload: bubblegun84

Post on 19-Jul-2015

211 views

Category:

Documents


0 download

TRANSCRIPT

Trabajo DirigidoI.T.T. Telemtica

Creacin de Mashups con

Yahoo!Pipes

Alma Collado Snchez, 100038945.1

- ndice Pginas: 1. Introduccin........................................................ 3 1. Crear un Pipe............................................... 3 2. Compartir un Pipe......................................... 3 2. El Editor.............................................................. 4-18 1. La Librera................................................... 4-17 1. Sources................................................ 5-6 2. User Inputs........................................... 7 3. Operators.............................................. 8-11 4. URL...................................................... 12 5. String................................................... 12-14 6. Date..................................................... 14-15 7. Location................................................ 15 8. Number................................................. 16 9. Deprecated............................................ 16-17 10. My Pipes................................................ 17 11. Favorites................................................ 17 2. El Lienzo....................................................... 18 3. El Depurador.................................................. 18 4. Guardando y ejecutando el Pipe....................... 18 3. Ejemplo detallado................................................. 19-29 4. Glosario.............................................................. 30 5. Referencias......................................................... 31

2

1. IntroduccinYahoo! Pipes es un servicio web de Yahoo! Que, a travs de un atractivo y sencillo entorno grfico, permite combinar y manipular feeds de distintas pginas web de acuerdo a ciertos parmetros, filtrarlos, utilizar servicios de terceros, etc. Nos da la facilidad de crear aplicaciones de acuerdo a nuestras necesidades y compartirlas con los dems. Un ejemplo sencillo, imaginemos un diario que nos permita suscribirnos a cada una de sus secciones, si nos interesan las de economa, poltica y deportes tendramos 3 suscripciones distintas, sin embargo, Yahoo! Pipes nos permite combinarlas para tener una sola, solo tendramos que crear un Pipe que cumpla nuestros requisitos y se nos asignar un URL y un feed para agregarlo a nuestro lector favorito. 1. Crear un Pipe Crear un Pipe con Yahoo!Pipes es algo sencillo ya que la interfaz es completamente grfica, solo hay que tener una cuenta en Yahoo! y un poco de imaginacin. Para ver paso a paso la creacin de un Pipe y la utilidad de cada uno de los mdulos que nos ofrece del programa ir al apartado: 'Ejemplo detallado' (pags.19-28). 2. Compartir un Pipe Una vez que se ha construido el Pipe podremos guardarlo en nuestro servidor con el nombre que queramos. Los Pipes ofrecen salidas en formato RSS 2.0, RSS 1.0 (RDF), JSON y Atom. Tambin podemos publicarlo y compartirlo con el resto del mundo, permitiendo a otros usuarios clonarlo, aadir mejoras o utilizarlo como un componente de sus propias creaciones. Estar disponible en http://pipes.yahoo.com. Solo el creador puede aceder a la lista de sus Pipes (My Pipes). En caso de que no se quiera compartir la URL del Pipe, permanecer privado y nadie tendr acceso al mismo.

3

2. El Editor1. La LibreraEl panel situado a la izquierda del editor es la librera, muestra los mdulos disponibles agrupados en categoras segn su funcionalidad: Sources, son fuentes de datos (Yahoo Search, Flickr, etc) que devuelven un feed RSS. User inputs, mdulos para que el usuario (lector del pipe) ingrese datos (texto, nmeros, localizacin, fechas, etc.) Operators, operadores para manipular los feeds: unir, contar, traducir, filtrar, etc. Url, permite construir URLs en base a ciertos 'inputs' (que pueden ser, por ejemplo, del usuario). String, para manipular cadenas de texto. Date, para definir y dar formato a las fechas. Location, convierte cadenas de texto a localizaciones geogrficas. Number, proporciona operaciones aritmticas bsicas. Favorites, donde se almacenan tus Pipes favoritos creados por otra gente. Deprecated, estos mdulos seguirn funcionando aunque dejemos de usarlos por haber introducido nuevos mdulos mejorados. My Pipes, pipes creados anteriormente cuya salida podemos utilizar como entrada de otros mdulos. El mdulo Pipe Output es la salida de nuestro pipe, es decir, lo que el usuario ver. Para utilizar uno de estos mdulos en nuestro Pipe simplemente tenemos que arrastrarlo al lienzo o pinchar en la flecha que aparece a la derecha de su nombre.

4

Leyenda:Entrada del mdulo

SourcesFetch CSV Module

Salida del mdulo

items

Inicialmente acrnimo de 'Comma-Separated Value', es un formato de documento de texto en el que cada lnea es un nuevo registro y cada campo del registro est separado por una coma. Permite variaciones, por ejemplo, que la separacin sea un espacio, un punto y coma, una barra vertical ('|'), etc. Normalmente en este tipo de ficheros, la primera entrada es el nombre de las columnas, si no es as el mdulo permite saltar tantas filas como sean necesarias hasta encontrarlos. Feed Auto-Discovery Moduleitems

Permite buscar los feeds RSS de una pgina web difciles de localizar a simple vista. Permite introducir varias URLs en un mismo mdulo y como pueden devolverse varios feeds, normalmente, la salida est unida a un mdulo Loop con un Fetch Feed Sub-Module. Fetch Feed Moduleitems

Sirve para especificar varios feeds RSS de noticias como entrada a nuestro Pipe. Este mdulo entiende feeds en formatos RSS, Atom y RDF. Fetch Data Moduleitems

Permite obtener datos de fuentes tipo XML y JSON convirtindolos en un feed RSS o fusionndolos con el resto de datos de nuestro Pipe. Se puede acceder solo a una parte de esos datos, para ello hay que introducir la ruta de la informacin necesaria en el campo 'Path to item list', separando cada elemento con un punto ('.') Fetch Site Feed Moduleitems

Es una alternativa ms simple al Feed Auto-Discovery Module que devuelve una lista con todos los feeds encontrados en una pgina pero no los trae. Este mdulo busca los feeds y trae solo el primero.

5

Flickr Module

items

Flickr es una web de almacenamiento y comparticin de fotografas. Este mdulo permite buscar fotografas por palabras clave y localizacin geogrfica. Google Base Moduleitems

Google Base es un servicio que permite a cualquiera crear y publicar informacin. Los datos se separan en categoras: servicios, trabajo, viajes, etc. Introduciendo palabras clave o localizacin y proximidad podemos buscar trabajo, cines cercanos donde ponen la pelcula que queremos ver, etc. Item Builder Module Permite asignar valores a los atributos de los items. Yahoo! Local Moduleitems items

Yahoo! Local es un servicio que permite buscar un servicio en un determinado rea solo con un un String de bsqueda, una localizacin y un radio entre 1 y 20 millas. Yahoo! Search Moduleitems

Yahoo! Search es un motor de bsqueda de internet de propsito general. Este mdulo te permite personalizar tu bsqueda, limitndola a unas webs determinadas o aadiendo otro tipo de restricciones opcionales. Fetch Page Moduleitems

Sirve para traer el cdigo fuente de una pgina web en formato String. Si solo necesitamos una parte del cdigo podemos cortarlo mediante los campos 'Cut content from' hasta 'to'. Este mdulo solo sirve para pginas en formato HTML de hasta 200k.

6

User InputsDate Input Moduledatetime

Para que el usuario introduzca una fecha directamente o utilizando la herramienta de calendario. La salida del mdulo es de tipo es datetime, y est separado en nueve campos: hour, timezone, second, month, minute, utime, day, day_of_week, year. Location Input Modulelocation

Para que el usuario introduzca una localizacin geogrfica. La salida del mdulo es de tipo location, y est separada en todos o algunos de estos campos, dependiendo de la exactitud de los datos introducidos: country, street, lat, postal, state, city, lon, quality. Number Input Modulenumber

Permite al usuario especificar un nmero como entrada del Pipe. Este mdulo se conecta a otros mdulos que precisan una entrada de tipo numrico, como Truncate, Filterm Yahoo! Local, Google Base y Simple Math. Private Text Input Moduletext

Para que el usuario introduzca informacin privada, como identificadores, contraseas o nombres de usuarios. Para evitar que nadie, a parte del creador del Pipe, vea el valor introducido en debug o default se ponen como 'private' . Text Input Moduletext

Mdulo utilizado cada vez que necesitemos una entrada de texto en el Pipe. Muchos otros mdulos aceptan texto, los String Modules, casi todos los Source Modules, Filter, etc. URL Input Module Permite especificar al usuario la URL utilizada por el Pipe. Este mdulo puede ser unido a cualquiera de los Source Modules.url

7

OperatorsCount Moduleitems | number

Cuenta el nmero de items en el feed de entrada y lo devuelve. Filter Moduleitems | items

Permite incluir o excluir items de un feed. Con este mdulo se generan reglas que comparan los elementos del feed con los valores especificados por el creador. Por ejemplo, se puede hacer una regla que diga: 'permite los items cuya item.description contenga la palaba gatitos', u otra regla que diga: 'omite los items cuyo item.y:published sea anterior a ayer'. Se puede decidir entre permitir y bloquear, y tambin entre si un item cumple todas las reglas o solo algunas. Location Extractor Moduleitems | items

Examina el feed de entrada buscando informacin que indique una localizacin geogrfica. Si la encuentra aade un elemento 'y:location' al feed de salida. Este elemento contiene varios subelementos: lat, lon, quality, country, state, city, street, postal. Puede recoger datos de varias URLs, como maps.yahoo.com, maps.google.com, mapquest.com. Reconoce GML (Geographic Markup Language), Abbreviated GML, W3C Basic Geo, Abbreviated W3C Basic Geo, Simple GeoRSS, Yahoo! Local format y KML LookAt y Point tags. Tambin reconoce como atributos lat, long, latitud y longitud. Si se encuentra en la salida del Pipe un 'y:location', opcionalmente de representar el resultado en un mapa interactivo. Loop Moduleitems | items

Introduce la idea de submdulos. Se puede insertar un mdulo dentro de este mdulo. Cuando se conecta un feed a este mdulo, el submdulo se ejecuta una vez por cada item del feed de entrada. La mayora de los mdulos, a excepcin de User Inputs Modules y Operators Modules pueden ser submdulos. Este mdulo tiene dos opciones de manejo de los resultados, 'emit results' para que solo los datos de salida del submdulo estn incluidos en la salida del mdulo, y 'assign results to', para que los datos de la entrada original se incluyan en la salida y la salida del submdulo se asigne a un elemento nuevo o existente. Sustituye a los deprecated 'For Each: Annotate Module' y 'For Each: Replace Module'.

8

Regex Module

items | items

Modifica campos de un feed usando expresiones habituales ('Regular Expressions'). Hay que pensar en l como un mdulo de bsqueda y reemplazo. Se pueden crear mltiples reglas. Por ejemplo: Internet Movie Database (imdb.com) proporciona un feed diario con fechas de cumpleaos de actores (http://rss.imdb.com/daily/born/). El campo de descripcin es del tipo: In 1959, Hugh Laurie was born on this date in Oxford, Oxfordshire, England, UK Imaginemos que queremos el ao en que naci cada uno, para ello comenzamos creando un nuevo campo llamado 'birth_year'. Usamos un Rename Module y copiamos 'item.description' en nuestro nuevo campo 'item.birth_year'. En un principio, nuestro campo contiene toda la descripcin, si lo unimos a un Regex Module sabiendo que tiene el siguiente formato: In [year], [person] was born on this date in [location] Necesitamos extraer el ao, as que en nuestra regla, primero seleccionamos el campo que queremos modificar, 'item.birth_year', y despus definimos una Regular Expression: ^In\s+(\d{4}),.+ '^', cuando es el primer carcter en un Regex significa que lo que le sigue debe ser lo primero que haya en el texto que estamos buscando, es decir '^In' indica que buscamos texto cuyo inicio sea 'In'. '\s', representa un espacio en blanco El signo '+' que le sigue es un modificador, significa 'uno o ms'. Por lo que '\s+' significa 'uno o ms espacios en blanco'. Hasta ahora, '^In\s+' significa: busca cualquier String que comience por 'In' seguido de uno o ms espacios. '(\d{4},.+)', el parntesis agrupa partes de un regex para referencias posteriores. '\d{4}', representa cuatro caracteres de tipo dgito, la coma solo indica 'aade una coma' y '.+' significa 'aade uno o ms caracteres'. Si lo unimos todo, el regex busca cualquier String que comience por 'In' seguido de uno o ms espacios, seguidos de cuatro dgitos, seguidos por una coma, y despus seguidos de cualquier cosa. El formato de las reglas regex es: In [element] replace [regex pattern] with [value]. En value escribimos '$1', que hace referencia al9

parntesis descrito anteriormente (\d{4}), se crea una referencia para cada parntesis en el regex pattern. En nuestro caso solo tenemos un parntesis, as que '$1' es el valor del 'item.birth_year'. Este es el valor del ao que buscbamos. Rename Moduleitems | items

Permite renombrar elementos de un feed de etrada. Es til, por ejemplo, cuando los datos de entrada no estn en formato RSS (los elementos no estn nombrados como ttulo, link, descripcin, etc) y se quiere una salida tipo RSS, o cuando los datos de entrada contienen informacin geogrfica pero los nombres de sus elementos no estn reconocidos por el Location Extractor Module. Reverse Moduleitems | items

A veces los feeds estn ordenados segn unos criterios (fecha de publicacin, alfabeticamente, etc) y muchas veces ese orden es opuesto al que nosotros queremos. Este mdulo se encarga de dar la vuelta al orden de los datos. Sort Moduleitems | items

Ordena un feed segn un elemento del item, como el ttulo o la descripcin. Se pueden ordenar los items en orden ascendente o descendente. Split Moduleitems | dos listas idnticas de items

Recibe un feed RSS de entrada y los separa en dos feeds de salida idnticos. til cuando se quieren realizar acciones distintas en datos de un mismo feed. El Union Module es lo contrario a este. Sub-Element Moduleitems | items

A veces los datos que nos interesa extraer de un feed esn profundos en una jerarqua. Por ejemplo, tenemos los sonetos de Shakespeare como XML, William Shakespeare Sonnet 21 So is it not with me as with that Muse Stirr'd by a painted beauty to his verse, ... ... ... 10

Con este mdulo podemos extraer solo los versos descartando los niveles superiores (estrofa, ttulo, autor y soneto). Se ha selecconado 'item.STANZA.VERSE' como camino a los subelementos que nos interesan. Solo esos elementos 'VERSE' (y sus hijos) son incluidos en la salida. Tail Moduleitems | items

Devuelve los N ltimos elementos de un feed, donde N es un nmero que especifica el creador. Truncate Moduleitems | items

Devuelve los N primeros elementos de un feed. Esto permite limitar el nmero de items en el feed resultante. Es el contrario de Tail Module, que devuelve los ltimos elementos del feed. Union Modulehasta 5 fuentes diferentes de items | items

Combina items de hasta cinco fuentes diferentes en una sola lista de items. Unique Moduleitems | items

Elimina items que contienen strings duplicados. Se selecciona el elemento que hay que filtrar y se eliminan los repetidos, por ejemplo, si el feed original tiene cinco items con el mismo ttulo se puede configurar para que solo uno de estos items sea incluido en el feed de salida. Web Service Moduleitems | items

Permite enviar Yahoo!Pipes a un servicio web externo. Los datos de los Pipes son enviados como datos tipo JSON al servicio web externo que especifiquemos. El servicio web debe recibir los datos va HTTP POST en formato JSON, por ejemplo:data={ "items":[ { "title": "First Title", "link": "http://example.com/first", "description": "First Description" }, { "title": "Last Title", "link": "http://example.com/last", "description": "Last Description" }]

El servicio web debe de enviar los datos en un formato JSON similar (omitiendo 'data='), o en formato RSS XML.11

}

URLURL Builder Moduleurl

Los Pipes cogen sus datos de fuentes definidas por URLs, y mediante este mdulo se puede controlar cmo estn construidas. Por ejemplo, uno de los servicios de finanzas de Yahoo! Permite obtener noticias de diferentes empresas simplemente variando el valor del parmetro 's': http://finance.yahoo.com/rss/headline?s=yhoo (noticias de Yahoo!) http://finance.yahoo.com/rss/headline?s=gm (noticias de General Motors) Las URLs estn formadas por tres partes: - Nombre del servidor: 'finance.yahoo.com' - Ruta del recurso: '/rss/headline' (hasta la interrogacin sin incluirla) - Parmetros: 's' (el nombre del parmetro y su valor estn separados por un '=', as tenemos 's=yhoo' o 's=gm').

StringString Builder Moduletext

til cuando es necesario construir un String a partir de mltiples Substrings, algunos codificados en el Pipe, otros proporcionados tras la ejecucin del Pipe. String Regex Moduletext

Funciona igual que el Regex Module, al igual que ese mdulo acta en cada item de un feed, este acta en cada String de entrada. Regex es la abreviatura de 'Regular Expression', notacin de bsqueda de patrones compatibles para modificar textos.

12

String Replace Module

datetime, location, number, text, url | text

Proporciona una herramienta de bsqueda y sustitucin de Strings. Introducimos el String a buscar y el String por el que hay que sustituirlo. Se puede elegir entre sustituir todos los encontrados, solo el primero o solo el ltimo. String Tokenizer Moduledatetime, location, number, text, url | items

Separa un String en un array de Strings. Un delimitador, normalmente un caracter, indica las partes en que hay que separar el String de entrada. Por ejemplo, si este String : 'Uno//Dos//Tres', es la entrada del mdulo y el separador es '//' da como resultado tres items: 0- Contenido Uno 1- Contenido Dos 2- Contenido Tres Substring Moduledatetime, location, number, text, url | items

Devuelve una parte de un String. Hay que indicar la posicin del caracter inicial y la longitud del substring. Por ejemplo, si este String: 'ABCDEFG' es la entrada del mdulo, el valor 'From' es 2 y la longitud 4, devuelve el substring 'CDEF'. Hay que tener en cuenta que el primer carcter del String est en la posicin 0 y no 1. Si se introduce una longitud mayor que el tamao del String, el resultado ser un substring hasta el final del String de entrada. Term Extractor Moduledatetime, location, number, text, url | items

Analiza el texto introducido en un Pipe y busca las palabras ms relevantes. Puede devolver un solo String con todas las palabras relevantes o una lista agrupada. Si se elige que devuelva una lista, cada item ser un conjunto de palabras que el mdulo piensa que estn relacionadas, por ejemplo, si la entrada es: 'los camellos no son animales indgenas en California del Sur', el mdulo devuelve: 'camellos', 'California Sur', 'animales'. Si se elige que devuelva un solo String, la salida ser: 'camellos California Sur animales'. Este mdulo sustituye al deprecated Content Analisys Module. Translate Moduledatetime, location, number, text, url | items

Traduce un item (por ejemplo, un elemento de un feed) de un idioma a otro. Normalemte se usa como un submdulo del Loop Module, pero tambin puede traducir una entrada del usuario. Este mdulo sustituye al deprecated 'BabelFish Module'.

13

Yahoo! Shortcuts Module

datetime, location, number, text, url | items

Coge un String de entrada, analiza las palabras y las separa en categoras. Puede crear categoras de Lugar, Persona, Identificador y Concepto. Cada sub-item contiene informacin acerca de la probabilidad, posicin del carcter de comienzo y fin donde fue encontrado, y la seccin del texto que coincide con la categora. Por ejemplo, tenemos:George Washington y sus hombres pasaron un fro invierno en Valley Forge

El mdulo nos devuelve tres items: 'George Washington', en la categora de Persona con una probabilidad de 0.999738; 'fro invierno' en la categora de Concepto; y 'Valley Forge' en la categora de Lugar (incluye informacin adicional, como el Estado, pas, latitud, longitud y cdigo postal). Usado normalmente como sub-mdulo del Loop Module para analizar el campo de descripcin del feed de entrada. Private String Moduletext

Para que el usuario introduzca informacin privada, que no quiera compartir, como identificadores, contraseas o nombres de usuarios. Estos valores solo se muestran al creador del Pipe, no se copian si el Pipe es clonado (excepto por el creador).

DateDate Builder Moduledatetime

Convierte una cadena de texto en un valor de tipo datetime. Se puede elegir una fecha de la herramienta de calendario, introducir una cadena por teclado en el campo correspondiente o la salida de otro mdulo, como por ejemplo de un Text Input Module. Entiende formatos del tipo 'tomorrow', '3 days ago', '07/04/2007' y '16:31 EST'.

14

Date Formatter Module

datetime

Da formato a los valores datetime. Los especificadores empiezan con un signo de '%' seguidos por un carcter. Por ejemplo, la fecha 'February 12th, 2008 at 8:45 P.M'. Especificador %m-%d-%Y %A, %b %d, %y at %I:%M %p %D %R %B Formato de Fecha 02-12-2008 Tuesday, Feb 12, 08 at 08:45 PM 02/12/08 08:45 February

Location Location Builder Modulelocation

Convierte la descripcin de un lugar en un dato geogrfico. Reconoce direcciones, cdigos postales, cdigos de aeropuertos, nombres de ciudades y paises, etc. La salida del mdulo es una localizacin con campos separados en: ciudad, estado, pas, latitud y longitud.

15

Number Simple Math Modulenumber | number

Realiza operaciones matemticas simples, incluye suma, resta, multiplicacin, divisin, mdulo y potenciacin.

DeprecatedBablefish Moduleitems | items

Es un servicio de traduccin del lenguaje. Hay que unirlo con un feed de entrada y seleccionar la opcin de traduccin (como 'Griego a Francs' o 'Portugus a Ingls') de la lista. Este mdulo ha sido sustituido por el Translate Module. Content Analysis Moduleitems | items

Analiza cada item de un feed RSS y busca las palabras ms significativas. Se aade un nuevo elemento y:content_analysis al feed de salida. Este mdulo ha sido sustituido por el Term Extractor Module.

For Each: Anotate Module

items | items

Combina datos de dos feeds diferentes. El primer feed se mete en el mdulo unindolo al conector del extremo superior, el segundo mdulo se arrastra de la paleta de mdulos directamente al lienzo (etiquetado como 'Drop source module here') dentro del mdulo 'For Each: Annotate Module', cuando el borde est de color rojo. Este mdulo ha sido sustituido poe el Loop Module.

16

Replace Module

items | items

Incluye un 'Source Sub-module', como Yahoo!Local, Fickr o Google Base, que se ejecuta una vez por cada item en el feed. Permite elegir entre incluir todos los items resultantes de cada submdulo de bsqueda, o solo el primero. Por ejemplo, si elegimos 'all items' y el feed de entrada tiene 10 items y cada submdulo devuelve una bsqueda de 8 resultados, el feed resultante tendr 80 resultados. Si se elige 'first item' tendremos 10 resultados en el feed de salida. Este mdulo ha sido sustituido por el Loop Module.

My PipesEsta categora contiene Pipes previamente creados y guardados, que pueden ser utilizados como subPipes del Pipe que estemos creando en ese momento. Para ello, solo hay que arrastrar el mdulo al lienzo y unirlo, tambin podemos editarlo en caso de que sea necesario.

FavoritesEsta categora incluye Pipes creados por otros desarrolladores que previamente hemos marcado como favoritos. Podemos usarlos a la hora de crear nuestros Pipes.

17

2. El Lienzo Es el rea de trabajo donde se crea y se prueba el Pipe. Podemos arrastrar los distintos mdulos y organizarlos como nos parezca o pedirle al editor que lo haga por nosotros pinchando en el botn 'Layout'. Si pinchamos dos veces en la barra de ttulo de alguno de los mdulos, ste se bloquea ocultando todos sus campos, pinchando otra vez dos veces o el botn de maximizar, el mdulo vuelve a su tamao normal. Esto es til cuando se trabaja con Pipes con muchos componentes. Para que funcione nuestro Pipe hay que unir los mdulos. Para ello, pinchamos en el extremo de salida del mdulo y despus en el de entrada del mdulo siguiente. El editor pondr de color naranja los extremos compatibles. Pasando el ratn sobre cada mdulo se muestra el tipo de datos que el mdulo espera emitir y recibir. Para eliminar una unin se pincha en uno de los extremos, aparece un icono de unas pequeas tijeras. Un subPipe es un Pipe creado previamente que podemos untilizar como si fuera un mdulo y agregarlo a nuestro proyecto arrastrndolo hasta el lienzo. Aparecer como un mdulo completo que podremos modificar pinchando en 'open', se abrir en una nueva pestaa y podremos editarlo.

3. El DepuradorEl panel del depurador muestra la salida del Pipe inmediatamente debajo del mdulo seleccionado (de color naranja). Para ver la salida final del Pipe hay que seleccionar el Output Module directamente. Se puede dar a 'Refresh' para asegurarse de que el depurador est mostrando los datos correctos. Se puede usar el depurador para inspeccionar si cada segmento del Pipe est haciendo lo esperado. El depurador mostrar los ttulos de cada item en el feed, para ver el contenido de cada item con ms detalle hay que pinchar en el pequeo tringulo que aparece a la izquierda del item.

4. Guardando y ejecutando el PipeUna vez terminado nuestro Pipe lo guardamos usando el botn que hay arriba a la derecha del lienzo dndolo un nombre. Tambin podremos hacerlo visible a todo el mundo y permitir su clonacin publicndolo. Una vez guardado podremos ejecutarlo: 'Run Pipe...'. Tambin yendo a la categora 'My Pipes' y seleccionndolo de la lista.18

3. Ejemplo DetalladoEn este apartado se explica paso a paso y en detalle la creacin de un Pipe. El Pipe elegido ha sido seleccionado de entre los publicados en http://pipes.yahoo.com/pipes/pipes.popular, se encuentra exactamente en la siguiente direccin: http://pipes.yahoo.com/joelaz/iphone_musicvideos. Es un mashup de Last.fm + YouTube diseado para el iPhone. Simplemente introduciendo el nombre de usuario en Last.fm se obtiene una lista de links a videoclips en YouTube de tus artistas ms escuchados en los ltimos meses para ser visualizados en el iPhone. El cdigo fuente de la aplicacin es el siguiente:

19

Ahora vamos a analizar uno a uno los mdulos que componen la aplicacin y la salida de cada uno de ellos, as como las fuentes utilizadas (http://ws.audioscrobbler.com/ y http://audioscrobbler.com/). Podemos definir Audioscrobbler como una base de datos donde quedan almacenados los hbitos musicales de sus usuarios y mediante procesos estadsticos hacer recomendaciones, bsquedas o clasificaciones de los artistas o canciones, entre otras muchas utilidades. Para ello se emplea el API de Last.fm que se puede consultar en http://www.lastfm.es/api.

20

Text Input Module Utilizado para introducir un String en el Pipe, en este caso el nombre de usuario en Last.fm. He utilizado mi nombre de usuario, que corresponde con la salida del mdulo y la entrada del siguiente: SweetPoison84.

URL Builder Module Construye una URL a partir de unos campos de entrada. La base de nuestra URL es http://ws.audioscrobbler.com/1.0/user. Cada uno de los directorios del path se introducen en una lnea nueva del campo 'Path elements', en nuestro caso tenemos dos directorios, el primero corresponde al nombre de usuario, salida del mdulo anterior, y el segundo, 'toptracks.xml? type=3month', accede a las canciones ms escuchadas por mi en los ltimos tres meses.

Fetch Data Module Accede y extrae datos de ficheros con formato XML y JSON. Obtiene una lista de elementos en base al campo 'Path to item list'. En este caso queremos todos los datos relativos a cada track en la lista de los ms escuchados en los ltimos 3 meses. El fichero XML del que se leen los datos sera de la siguiente manera:

21

The Kooks f82f3a3e-29c2-42ca-b589-bc5dc210fa9e 1 http://www.last.fm/music/The+Kooks/_/You+Don%27t+Love+Me You Don't Love Me

Loop Module Se encarga de correr el submdulo String Builder para cada uno de los tracks de la salida del mdulo anterior. El submdulo String Builder, en este caso, construye un string a partir del atributo content de artist y del atributo name del track, aadiendo un guin entre ambos. La casilla marcada 'assign results to' indica que el string generado se le asiganar al nuevo atributo ah indicado, artisttrack. El fichero XML

generado sera de la siguiente manera: The Kooks f82f3a3e-29c2-42ca-b589-bc5dc210fa9e 1 http://www.last.fm/music/The+Kooks/_/You+Don%27t+Love+Me You Don't Love Me The Kooks - You Don't Love Me

Loop Module

Este mdulo se encarga de correr el submdulo 'Last.fm Track YouTube Search' para cada uno de los tracks resultantes de la salida del mdulo anterior. El funcionamiento del submdulo indicado se explicar en detalle a continuacin, pero, bsicamente, el resultado de su ejecucin es la URL del videoclip en YouTube. La URL resultante se le asigna a un nuevo atributo del track llamado youtube_url. El fichero XML generado sera de la siguiente manera:22

The Kooks f82f3a3e-29c2-42ca-b589-bc5dc210fa9e http://www.youtube.com/watch?v=W0Hw1Wf2UG0 1 http://www.last.fm/music/The+Kooks/_/You+Don%27t+Love+Me You Don't Love Me The Kooks - You Don't Love Me

Filter Module Este mdulo filtra los resultados del mdulo anterior. Se permitirn todos los tracks cuyo atributo youtube_url contenga el string 'http://'. En el resultado podemos ver cmo se ha reducido el nmero de resultados en 10 tracks (+26 more +16 more).

Sort Module Este mdulo ordena los resultados del mdulo anterior en funcin del valor del atributo playcount del track en orden descendente, es decir, los tracks que aparezcan en las primeras posiciones sern aquellos que hayan sido reproducidos ms veces.

23

Loop Module Este mdulo se encarga de correr el submdulo Item Builder para cada uno de los tracks resultantes de la salida del mdulo anterior. El submdulo indicado genera un nuevo elemento con dos atributos:

link: la URL del video en YouTube (youtube_url). title: el atributo generado anteriormente compuesto por el nombre del artista y el ttulo del track (artisttrack).

El fichero XML que se genera sera de la siguiente manera: http://www.youtube.com/watch?v=c4KrkVaJYwE Marea - Marea

Filter Module Este mdulo filtra los resultados del mdulo anterior. Se bloquearn todos los elementos cuyo atributo title sea '-'. Esto se hace para evitar que aparezcan resultados errneos. La salida del Pipe, Pipe Output, coincide con la de este mdulo.

24

Last.fm YouTube Search Module El cdigo fuente de este mdulo creado por el autor del Pipe es el siguiente, posteriormente se explica en detalle cada mdulo que lo compone.

25

URL Input Module Mediante este mdulo se introduce en el Pipe la URL del track en la pgina de Last.fm. En nuestro caso, para ilustrar el ejemplo, se ha elegido:

http://www.lastfm.es/music/The+Killers/_/Mr.+Brightside.

URL Builder Module

Construye una URL a partir de unos campos de entrada. La base de nuestra URL es la salida del mdulo anterior. Se aade un nuevo directorio al path, +video, mediante el campo 'Path elements'. En este nuevo path se encuentran todos los videos disponibles en last.fm del track. A continuacin se muestra una captura de pantalla de la URL formada:

26

Fetch Page Module Este mdulo se encarga de leer el cdigo fuente de la URL resultado del mdulo anterior y devolverlo como un string. En este caso se muestra el cdigo HTML de la pgina completa, 'Cut content from' text 'to' text, y procesa por separado cada uno de los vdeos mediante un delimitador que separa los strings en una secuencia de items, 'Split using delimiter' / +videos/ (esto tiene el mismo efecto que si utilizramos un String Tokenizer Module). Filter Module Este mdulo filtra los resultados del mdulo anterior. Se permitirn todos los elementos cuyo content contenga el string +1-.

Loop Module Este mdulo se encarga de correr el submdulo String Builder para cada uno de los vdeos resultantes de la salida del mdulo anterior. El submdulo Sub String, en este caso, se encarga de crear un substring a partir del string de entrada desde el carcter en la posicin 3 incluyendo los 100

27

siguientes, por ejemplo: content oq-76t0287U">