Pipes con entrada

¿Para qué sirve un pipe con entradas de datos, si hay que ir a la página de Pipes para introducir los datos a mano? Hemos visto que podemos pasar nuestros valores a través de una URL (con un GET de HTTP); esto nos permite la automatización necesaria para añadir un elemento más a la cadena.

Vamos a preparar un bookmarklet sencillo. Un bookmarklet es una URL de protocolo javascript: que contiene código ejecutable (escrito en… Javascript, claro). Huelga decir que lo probaré en Firefox, y si funciona en Explorer 😉 pues mejor que mejor. Allá va.

javascript:
    void(
        q0=prompt('BOE-Búsqueda en título:','igualdad')
    );
    if(q0)
        location.href='http://pipes.yahoo.com/pipes/pipe.run?
        _id=sOW2lOvS2xGGAgtA1vC6Jw&_render=rss&titulo='+
        escape(q0)

El código del bookmarklet se escribe todo en una misma línea, pero lo presento dividido e indentado para que se vea mejor la estructura. Además de presentarlo en una sola línea se procura que quede lo más comprimido posible (como un Perl one-liner) para encajar en la limitación de longitud de una URL en un favorito… alrededor de 2000 caracteres en Explorer (otros no tienen esas limitaciones).

Se trata de un código muy sencillo, en el que podríamos añadir más variables y llamadas a prompt para introducir más parámetros de entrada; lo fundamental es escapar, es decir, realizar un URL encoding mediante la función escape, el valor de lo introducido en las cajas de entrada a la hora de componer la URL (línea location.href). Aquí está, para añadirlo a los favoritos: bookmarklet BOEv2.

¿El BOE por RSS? (4ª parte)

Los parámetros de entrada de un pipe determinan, de un modo automático, la interfaz que Yahoo generará para acceder a él. Pero, ¿qué ocurre si queremos usar el pipe sin abrir su página correspondiente en el navegador?

La respuesta es a la vez obvia y brillante: ¡podemos pasar los parámetros en la URL del pipe, como un método GET! Eso significa que si la URL de nuestro pipe es:

http://pipes.yahoo.com/pipes/pipe.info
?_id=sOW2lOvS2xGGAgtA1vC6Jw

… Podremos concatenar (usando el nombre que dimos antes al parámetro de entrada):

&_render=rss&titulo=igualdad

para pasar un valor para el parámetro de entrada titulo, sin tener que pasar por la interfaz de Yahoo. En realidad estamos pasando otro parámetro dentro de la query: _render, con valor “rss”, además de nuestro parámetro. Esto le indica a Pipes que genere salida en forma de fuente RSS, y no una interfaz HTML convencional. La URL completa sería esta.

Naturalmente, si tuviéramos más módulos de entrada de datos en nuestro pipe, pasar los correspondientes valores a través de la URL sería tan sencillo como concatenar más parámetros con “&” en el formato “nombre=valor”. Sólo deberemos tener la precaución de escapar los valores que queramos pasar (formalmente, aplicarles un URL encoding).

Esto, claro, me da una idea…

¿El BOE por RSS? (3ª parte)

And now, for something completely the same!

Una característica interesante de Pipes es que dispone de módulos de entrada. Éstos permiten introducir datos en el flujo de un pipe. Los hay de varias clases:

  • URLs (URL Input).
  • Números (Number Input).
  • Ubicaciones geográficas (Location Input).
  • Texto (Text Input).
  • Fechas (Date Input).

Usaremos uno de los más sencillos (el de texto) para darle vidilla al pipe que creamos antes. Para empezar, podemos clonarlo. En la pantalla de edición, basta con pulsar el botón Save a Copy. Así no romperemos nada. Sobre la copia, añadimos un módulo Text Input y lo configuramos con los valores:

  • Name: “titulo”. Este es el nombre del parámetro de entrada que estamos creando.
  • Prompt: “Palabra a buscar”. Aparecerá como nombre del módulo, y en su ejecución a través de la interfaz de Pipes.
  • Position: (en blanco, no es necesario). Determina el orden de aparición del parámetro en la interfaz de Pipes al ejecutar el programa, en el caso de que haya varios.
  • Default: “igualdad”. El valor por defecto del parámetro. Así empezó esta historia.
  • Debug: “ley”. Un valor para probar en la pantalla de edición. Buscando en el BOE, la palabra ley asegura muchas respuestas.

Conectamos la salida del Text Input con la entrada del valor del parámetro llamado dato[1] (no la del mismo parámetro, que si no la liamos) del primer URLBuilder. Sabemos que es ése y no otro porque hemos mirado la URL de búsqueda del BOE y, más o menos, la entendemos… ¡Y ya está! Podemos probar nuestro pipe, tras guardarlo y (opcionalmente) publicarlo aquí.