miércoles, 17 de abril de 2013

Revisando: YQL - Yahoo! Query Language

  • Yahoo! Query Language [Wikipedia]
  • Yahoo! Query Language [Presentacion]
  • YQL Guide - Yahoo! Developer Network  [PDF]
  • Recuperando datos de otro sitio web con YQL [Videos]
  • Tutorial de YQL y jQuery [Video]
  • Tutorial de YQL y jQuery [Articulo]
  • Using Yahoo! Pipes and the YQL Module [Video]



Yahoo! Query Language [Wikipedia]

Fuente: translate.googleusercontent.com

Yahoo! Query Language (YQL) es un SQL -como lenguaje de consulta creado por Yahoo! como parte de su red de desarrolladores .YQL está diseñado para recuperar y manipular los datos de las API a través de una única interfaz Web, lo que permite mashups que permiten a los desarrolladores crear sus propias aplicaciones. [1]

Inicialmente lanzado en octubre de 2008 con el acceso a la API de Yahoo, [2] 02 2009 vio la adición de abrir las tablas de datos de terceros, como Google Reader , el tutor y el New York Times . [3] Algunas de estas API todavía requieren una clave de API para acceder a ellos.El 29 de abril de 2009, Yahoo introdujo la capacidad de ejecutar las tablas de datos construidas a través YQL mediante JavaScript se ejecutan en servidores de la compañía de forma gratuita. [3]

Referencias
  1. Pérez, Juan Carlos (29 de abril de 2009). "Yahoo extiende YQL Plataforma Query Data Web" . PC World .
  2. Kolakowski, Nicholas (29 de abril de 2009). "Yahoo lanza YQL Ejecutar, actualizaciones YSlow" . eWeek .
  3. O'Dell, Jolie (2 de mayo, 2009) "Los desarrolladores: Never Mind the APIs, Aquí está YQL Ejecutar" . ReadWriteWeb .
Enlaces externos
Véase también



Yahoo! Query Language [Presentacion]

Fuente: slideshare.net

Transparencias que muestran la mayor parte de los aspectos del Yahoo! Query Language así como sentencias de uso.


Usado en el Curso de Extensión Universitaria "Desarrollo de aplicaciones web mediante servicios web y APIs abiertas" de la Universidad de Oviedo: http://directo.uniovi.es/postgrado/cabecera_ep.asp?Curso=2008&IdPrograma=5187



YQL Guide - Yahoo! Developer Network [PDF]

Fuente: google.com.ar/ 




Recuperando datos de otro sitio web con YQL

Fuente: youtube.comyoutube.com

 Parte 1/2

Ejemplo de recuperación de datos desde otro sitio web usando YQL



Parte 2/2




Tutorial de YQL y jQuery

Fuente:  youtube.com 

En este tutorial vamos a aprender como utilizar YQL de Yahoo! para mostrar informacion de cualquier pagina web en nuestras aplicaciones de internet usando nuestra herramienta favorita jQuery.

Consola de YQL:

Si desean obtener o visualizar el código fuente:




YQL - Tutorial de YQL con Jquery

Fuente: blog.ikhuerta.com 

Hace ya mucho tiempo que me debía una revisión de la gran API de YQL, un sistema amigable montado por yahoo y destinado a rescatar mediante peticiones muy parecidas a las queries de cualquier sistema SQL muchas de las informaciones más comunes que solemos necesitar en nuestros desarrollos web actuales: Rss, Twiiter, Facebook, Flickr, Búsquedas, etc...

Después de probarlo puedo decir que se trata de una API muy cómoda y versatil, que aglutina y simplifca multitud de servicios web. Además dispone de un gran añadido que hará las delicias de cualquier amante de javascript: devuelve las peticiones tanto en XML como en jsonp. Recordemos que este último nos permite hacer el famoso ajax crossdomain y por lo tanto nos va a permitir mostrar en nuestras web todos estos datos solo usando javascript.

YQL puede llamarse desde cualquier lenguaje servidor e incluso el propio yahoo nos informa de como hacer llamadas a YQL mediante CURL en PHP, pero en esta primera aproximación trabajaremos exclusivamente con javascript bajo el framework jquery.

La llamada pública a YQL

YQL tiene dos entornos en los que usarase: público y privado -dentro del privado hay varios niveles pero de momento nos vale así-. Cuando usamos llamadas públicas no necesitamos identificarnos y las llamadas son tan simples como cargar una url con variables informadas. Sin embargo de esta forma no podemos acceder a datos privados de los distintos servicios, por lo tanto estamos limitados mucho más en cantidad de opciones. De momento trabajaremos solo con esto, pero si queremos sacarle partido de verdad a la API de YQL deberemos echarle algún día un vistazo a como identificarnos en los servicios.

La llamada a YQL pública se forma de esta manera:

Para llamadas XML:

http://query.yahooapis.com/v1/public/yql?q=[[Query Buscada]]&format=xml&env=http%3A%2F%2Fdatatables.org%2Falltables.env

Para llamadas jsonp:

http://query.yahooapis.com/v1/public/yql?q=[[Query Buscada]]&format=json&callback=[[Funcion de Callback del json]]&env=http%3A%2F%2Fdatatables.org%2Falltables.env

Esto significa que en Jquery podemos hacer llamadas a YQL con un código como el que sigue:

$.getJSON("http://query.yahooapis.com/v1/public/yql?q=[[Query Buscada]]&format=json&callback=?&env=http%3A%2F%2Fdatatables.org%2Falltables.env",function(jsonData){
  //Acciones con el objeto jsonData que contendrá los datos solicitados})

Sencillo, ¿no? Solo nos quedará entonces aprender a hacer las queries y sabertodo lo que podemos llegar a sacar con esta API.

Las Queries de YQL

Las Queries de YQL son realmente muy parecidas a las de SQL. Como estamos trabajando con la forma pública tan solo tenemos que preocuparnos de los selects (no vamos a conseguir hacer Inserts, Updates o Deletes por esta vía). Así que nada tan simple como sentencias de este tipo:

SELECT * FROM [[Nombre Tabla]] WHERE [[Campo]] = '[[Valor]]'

Así que tan solo nos falta conocer las distintas tablas que existen en este sistema y por que campos podemos igualar el WHERE de la Query.

Yahoo ha habilitado el dominio datatables.org donde se tratan las distintas tablas existentes al tiempo que se aporta un sistema con el que la comunidad puede ir creando las suyas. Así que no hay un número de tablas fijas, estas son cada vez más a medida que los distintos sistemas van entrando en datatables.

También han habilitado una consola para desarrolladores de YQL en la que podemos ir lanzando directamente ahí nuestras queries hasta que encontremos lo que deseemos.

Al entrar la consola se abre directamente con la orden "show tables" que nos permitirá ver todas las tablas públicas actualmente. Son realmente muchísimas. Algunas son bastante inútiles pero al mirarlas enseguida empezaremos a encontrar cosas conocidas como: Flickr, Facebook, Foursquare, Twitter, Friendfeed, thumblr, Imdb, LastFM, Seomoz, Slideshare, Vimeo, Youtube, etc. Además, sorprendentemente, también encontramos como tabla servicios del propio Google como Search, Picasa, Analytics, Stock, Translate, Reader, Etc. y Otro tanto con los servicios de Microsoft, incluido Bing.

Todos estos servicios pueden accederse con YQL -y si trabajasemos identificados con muchos se puede también interactuar-, ¿no es impresionante?

Ahora solo tenemos que escoger el servicio que más nos guste y lanzar queries hasta encontrar la información que busquemos. Para saber con que campos jugar para hacer la query podes lanzar la orden "desc [[Nombre de tabla]]" para ver todos sus campos o usar el bloque de la esquina inferior derecha de la consola, buscar nuestra tabla y clickar en "desc".

Seguidamente incluyo algunas de las queries más interesantes que he encontrado en un primer recorrido rápido. Eres libre de incluir las tuyas en los comentarios.

Para disponer del RSS de este blog:

SELECT *
FROM rss
WHERE url = 'http://feeds2.feedburner.com/ikhuerta'

Lo que en jquery nos quedaría:

$(".yql-feed").click(function(){
  $.getJSON("http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM rss WHERE url = 'http://feeds2.feedburner.com/ikhuerta'&format=json&callback=?",function(data){
        var html = "
    ";
        html += "
  • " + data.query.results.item[0].title + "
  • ";
            html += "
  • " + data.query.results.item[1].title + "
  • ";
            html += "
  • " + data.query.results.item[2].title + "
  • ";
            html += "
    "
            $(html).dialog({title : "Rss de ikhuerta"});
      });
      returnfalse});


    Para hacer una búsqueda en Google:

    SELECT *FROM google.search
    WHERE
    q = "ikhuerta"
    AND hl = "es"
    AND gl = "es"

    En Jquery:

    $(".yql-googlesearch").click(function(){
      $.getJSON("http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM google.search WHERE q = 'ikhuerta' AND hl = 'es' AND gl = 'es'&format=json&callback=?&env=http%3A%2F%2Fdatatables.org%2Falltables.env",function(data){
            var html = "
      ";
            html += "
  • " + data.query.results.results[0].title + "
  • ";
            html += "
  • " + data.query.results.results[1].title + "
  • ";
            html += "
  • " + data.query.results.results[2].title + "
  • ";
            html += "
    "
            $(html).dialog({title : "Buscando 'ikhuerta' en Google"});
      });
      returnfalse});


    SELECT *
    FROM google.translate
    WHERE q="YQL no está mal"AND source="es"AND target="en"

    En Jquery:

    $(".yql-googletranslate").click(function(){
      $.getJSON("http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM google.translate WHERE q='YQL no está mal'AND source='es' AND target='en'&format=json&callback=?&env=http%3A%2F%2Fdatatables.org%2Falltables.env",function(data){
            var html = "
      ";
            html += "
  • " + data.query.results.translatedText + "
  • ";
            html += "
    "
            $(html).dialog({title : "Traduciendo de español a inglés"});
      });
      returnfalse});


    Buscando pisos en venta en Barcelona por menos de 250.000€

    SELECT *
    FROM nestoria.search
    WHERE country = 'es'AND place_name="Barcelona"
    AND price_max = '250000'

    En Jquery:

    $(".yql-nestoria").click(function(){
      $.getJSON("http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM nestoria.search WHERE country = 'es' AND place_name='Barcelona' AND price_max = '250000'&format=json&callback=?&env=http%3A%2F%2Fdatatables.org%2Falltables.env",function(data){
            var html = "
      ";
            html += "
  •  " + data.query.results.listings[0].title + "
  • ";
            html += "
  •  " + data.query.results.listings[1].title + "
  • ";
            html += "
  •  " + data.query.results.listings[2].title + "
  • ";
            html += "
    "
            $(html).dialog({title : "Resultados Nestoria"});
      });
      returnfalse});


    Recoger el timeline de un usuario de twitter:

    SELECT *FROM twitter.user.timeline
    WHERE screen_name='@ikhuerta'

    En Jquery

    $(".yql-twitter").click(function(){
      $.getJSON("http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM twitter.user.timeline WHERE screen_name='@ikhuerta'&format=json&callback=?&env=http%3A%2F%2Fdatatables.org%2Falltables.env",function(data){
            var html = "
      ";
            html += "
  • ikhuerta: " + data.query.results.statuses.status[0].text + "
  • ";
            html += "
  • ikhuerta: " + data.query.results.statuses.status[1].text + "
  • ";
            html += "
  • ikhuerta: " + data.query.results.statuses.status[2].text + "
  • ";
            html += "
    "
            $(html).dialog({title : "Twitter @ikhuerta"});
      });
      returnfalse});


    Buscar el vídeo del kakapo en youtube:

    SELECT *FROM youtube.search
    WHERE query='kakapo'

    En Jquery:

    $(".yql-youtube").click(function(){
      $.getJSON("http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM youtube.search WHERE query='kakapo'&format=json&callback=?&env=http%3A%2F%2Fdatatables.org%2Falltables.env",function(data){
            var html = "
      ";
            html += "
  • " + data.query.results.video[0].title + "
  • ";
            html += "
  •  " + data.query.results.video[1].title + "
  • ";
            html += "
  • " + data.query.results.video[2].title + "
  • ";
            html += "
    "
            $(html).dialog({title : "Búsqueda en Youtube"});
      });
      returnfalse});


    Y bueno, creo que ya son suficientes ejemplos, ¿no? Simplemente terminar indicando el código jquery completo que se ha usado para hacer este post. Notese que para mostrar las ventanas de dialogo hay que incluir también jquery UI. Mira el código jquery para usar YQL en este link.



    Using Yahoo! Pipes and the YQL Module

    Fuente:  youtube.com 

    In this talk from YUIConf 2011, YQL engineer Paul Donnelly demonstrates the features of the Yahoo! Pipes editor and explains how you can use Pipes and YQL to power your web apps, create mashups, and more.




    Artículos Relacionados:


    Descripción sobre cómo usar la aplicación Scholar-Scirus-Elis realizada con Yahoo Pipes para encontrar y hacer el seguimiento de los artículos que citan a una determinada publicación (http://pipes.yahoo.com/cites/scholars ...

    Vigilancia tecnológica [Wikipedia] - Que es la Vigilancia Tecnológica. - Introducción a la Vigilancia Tecnológica. - Vigilancia Tecnológica y el Software Libre - Universidad de Costa... - Guías sobre vigilancia tecnológica. - Algunas Herramientas de software para la Vigilancia Tecnológica.