Initiation au YQL - Open Hack Day

Image illustrant l'article : Initiation au YQL - Open Hack Day

Initiation au YQL - Open Hack Day

par Korben -

Aaaah j’ai dormi un peu, puis j’ai pris une bonne douche et j’y suis retourné ! Certains dorment, d’autres sont partis mais les plus acharnés sont encore debout en train de coder leurs petites surprises. Ambiance quoi !

Bon, moi maintenant je vais vous parler du YQL (prononcez : Ouaye-Qiou-Elle). Mais qu’est ce que ça peut bien être ce machin là ?

Le YQL (Yahoo Query Language) est un langage similaire au SQL qui permet de requête, filtrer, ordonner et combiner des données diverses non pas en provenance d’une base classique mais d’internet tout entier.

Les fichiers de données YQL sont en fait de gros fichiers XML qu’il est possible d’interroger en une seule ligne et bien sûr comme c’est ouvert, chacun peut proposer sa “base” YQL au monde entier.

Mais comme un bon exemple vaut 100 explications, voici une commade YQL qui permet de récupérer un XML contenant les référence de photos sur Flickr contenant le texte “openhacklondon”

select * from flickr.photos.search where text=“openhacklondon”

Si vous voulez tester la chose, une console de test est disponible à cette adresse.

On peut aussi récupérer la météo (ouèèèè trop super !)

select * from weather.forecast where location=“FRXX0076”

FRXX0076 étant le code de Paris.

Bon donc, vous l’aurez compris, il est possible d’interroger tous les services Yahoo! ce qui est déjà pas mal (Flickr, Upcoming, Maps, News…etc) mais pas seulement !!! De nombreuses bases sont maintenant “ouvertes” en YQL et chacun est libre de créer les connecteurs / convertisseurs (appelez ça comme vous voulez) pour mettre n’importe quelle donnée structurée à disposition de n’importe quel développeur utilisant le YQL.

Je prend pas exemple Twitter qui est requêtable de cette façon

use ‘http://www.icanhaslayout.com/twitter.search.xml' as twitter.search; select * from twitter.search where q=‘korben’;

Cela veut dire que je déclare twitter.search comme ma source de données, puis avec un simple SELECT en YQL, je l’interroge pour rechercher les derniers twitt sur le net qui contiennent le mot “korben”.

Et il existe des centaines de fichiers de définition YQL sur le net. J’en ai trouvé ici (qui sont les mêmes que là). Il suffit ensuite de les déclarer et de les utiliser. Par exemple pour connaitre mon dernier Twitt, il suffit d’appeler cette source YQL exterieur et de faire un simple SELECT * .

use ‘http://github.com/spullara/yql-tables/raw/a2f518a10ccdca99658f14bee9101b77d7b4cf08/twitter/twitter.user.status.xml' as twittertable; select * from twittertable where id=‘korben’

(Mais sinon, Yahoo les intègre au fur et à mesure dans leur “annuaire” de tables YQL, permettant ainsi de raccourcir les requêtes. Du coup, ma requête ci dessus fonctionne aussi comme ceci : select * from twitter.user.status where id=‘korben’)

Un autre exemple parce que le YQL c’est vraiment fun, c’est par exemple LastFM. J’ai choppé une clé LastFM pour pouvoir utiliser leur API et ensuite, avec un petit bout de YQL j’ai pu récupérer toutes les pages étant taggées comme French Rock :

select * from lastfm.tag where tag=‘french rock’ and api_key=‘f7a9005d79ec9352d8a0aa417bda5039’

Et j’en passe… Amazon, Imdb, Friendfind, New York Times, Slideshare, Bit.ly…etc Les possibilités sont infinies car même si une source YQL n’existe pas, vous pouvez la créer de toute pièce. Je pourrais par exemple très bien imaginer mettre à disposition mes articles de cette manière afin que vous puissiez intégrer ces derniers directement dans vos applications (ne me demandez pas pour quoi faire).

Bien sûr tout ceci devient très fun quand on commence à faire des jointures. Il est ainsi possible d’utiliser Flickr + le service de geocoding de Yahoo pour demander par exemple toutes les infos des photos Creative Commons qui ont été prise à Londres :

select * from flickr.photos.info where photo_id in (select id from flickr.photos.search where woe_id in (select woeid from geo.places where text=‘london,uk’) and license=4)

Et ainsi, réaliser de vrais mashup comme cette outil qui associe images en provenance de Flickr et Yahoo! Maps.

Génial non ?

Allez un dernier pour la route :

select * from search.web where query in (select title from rss where url=“https://korben.info/feed" | truncate(count=1)) limit 10

Avec cette requête, je fais une recherche globale sur le net en utilisant le titre du dernier article disponible dans le flux RSS de Korben.info. Cela me renvoie alors les 10 premiers résultats donnés par le moteur de recherche de Yahoo.

Bref, comme pour BOSS, j’espère que ça vous a intéressé. Je vous met à dispo les slides de Christian Heilmann et je vous invite a aller faire un tour sur le site YQL.

[YQL - Christian Heilmann Open Hack London presentation](http://www.slideshare.net/Korben00/yql-christian-heilmann-open-hack-london-presentation?type=presentation%20"YQL%20-%20Christian%20Heilmann%20Open%20Hack%20London%20presentation")