Widget do Submarino com YQL

Meu último post foi uma tentativa de explicar o funcionamento da Yahoo Query Language. No final falei da possibilidade de se fazer um Widget do Submarino com a YQL e agora volto para implementar o prometido.

YQL


Como eu disse existe um post explicando a YQL, porém aqui vai uma explicação rápida:

A YQL pode ser usada para buscar dados nas APIs do Yahoo (Flickr, Delicious, Placemaker, Maps, ...), nas APIs do DataTables (Twitter, Amazon, GeoLocation, ...) ou em qualquer outro documento da web (página HTML).

Para mostrar como a busca em um documento qualquer da web é feita, escrevi o seguinte código:

[sourcecode lang="sql" gist="123439"]
select * from html where url="http://www.submarino.com.br/busca?q=ipod" and xpath="/html/body/div/div[2]/div/div/div/div/div/div/div[2]/div/div/div/ul/li/div/a[3]"
[/sourcecode]

Para testar use o console da YQL ou veja teste dessa busca. O YQL vai retornar o conteúdo pedido em XML ou JSON.

JSONP

"JSON with Padding" é uma técnica que permite o carregamento assíncrono de informações de um domínio externo.

Toda biblioteca de JavaScript que se preze possui ...

YQL - Yahoo Query Language

YQL é uma linguagem que permite buscas nas bases de dados do Yahoo ou em documentos especificados pelo desenvolvedor.

Uma boa maneira de entender o uso dessa linguagem é ver um pouco de código.

JS-Placemaker - geolocate texts in JavaScript é uma demonstração de como utilizar a YQL para buscar informações em uma API do Yahoo chamada Placemaker.
Dê uma olhada no código.

O exemplo usou o Placemaker, porém as outras APIs do Yahoo também podem ser buscadas.

Vamos a outro exemplo, dessa vez utilizando dados de outra API.

API do Twitter pelo Yahoo! YQL

Para quem nunca usou a API do Twitter existe um guia sobre a API.

Twitts de Usuário

Para ver alguns twitts de um certo usuário existe o método statuses/user_timeline. A entrada para ele é o ID do usuário.

Como especificado, uma requisição HTTP para esse método se parece com:
http://twitter.com/statuses/user_timeline.xml?user_id=12345

No YQL é tão simples quanto:

select * from twitter.user.timeline where id=12345

Faça o teste YQL Console

twitter

Esse exemplo utilizou a tabela do Twitter que faz parte do projeto DataTables. Projeto que reúne várias tabelas ...

Yahoo! Web Services - apresentação das APIs

No #brhackday08 o foco dos desenvolvedores do Y! já parecia ser o de abrir a sua API.

Parte do Yahoo Open Strategy, SearchMonkey e BOSS foram os destaques das apresentações, mas uma serie de outros serviços da empresa foram apresentados para os desenvolvedores.

API do Yahoo!

O termo é realmente vago para quem nunca olhou a lista de serviços (web services) que a empresa oferece.

Pipes e SearchMonkey são possivelmente os mais conhecidos. Mas outros produtos do Y! para desenvolvedores são interessantes.

Pipes


O serviço permite a criação de mashups entre outras fontes de dados. O fluxo de dados extraídos das paginas pode ser construído usando uma interface visual bem legalzinha.

yahoo pipes screenshot

SearchMonkey


SearchMonkey é a ferramenta que permite modificar o visual da busca do Yahoo!
As informações que aparecerão nos resultados da buscas podem ser extraídas das paginas usando XPath.

Exemplo de resultado da busca com SearchMonkey:

Search Monkey funcionando

BOSS


Busca aberta. API que retorna os resultados da busca do Yahoo! em JSON ou XML.
É possivel facilmente "re-rankear" os resultados antes de mostrar para o usuário adicionando novas regras.

Music


Essa API pouco conhecida abre possibilidades interessantes para criação de ...

YUI Compressor / Yahoo Rocks!

Eu sempre gostei do trabalho dos desenvolvedores do Yahoo!. Há algum tempo atrás desenvolvi um pouco com o SearchMonkey e comecei a acompanhar mais de perto o trabalho em projetos como o Hadoop

Hoje quando fui atualizar minhas versões do YUI Compressor (ferramenta para comprimir JavaScript e CSS) deparei com uma frase que resume o motivo pelo qual aprecio o trabalho dos engenheiros que trabalham lá:


Change Log
YUI Compressor 2.4.1, 2008-10-28
--------------------------------

+ Use preferentially lower case letters for obfuscated variable names. Since JavaScript keywords use lower case letters most often, this improves the efficiency of any compression algorithm (gzipping) used after minification.

Ou em português:


Histórico de mudanças
YUI Compressor 2.4.1, 28/10/2008
--------------------------------

+ Usa preferencialmente letras minusculas para nomes de variáveis ofuscados. Como a maioria das keywords de JavaScript usam minusculas, isso melhora a eficiência de qualquer algoritmo de compactação usado após a minificação.

Foda. Olha o detalhe que pegaram: as funções da linguagem JavaScript quase sempre estão em minusculas, então se eles usarem minusculas quando substituírem outros textos as chances de conter caracteres repetidos aumenta.
Como o principio de qualquer ...

SearchMonkey Monkey

Comecei a fazer algumas extensões para a busca do Yahoo! (SearchMonkey) lá no Y! Hackday. Decidi não submeter nenhuma delas ao concurso de hacks. Tinha até me arrependido mas passou quando percebi o quanto elas estavam cruas durante a tarde.

Apesar de algumas pessoas dizerem o contrario (em alguns pontos com razão), as possibilidades com o SearchMonkey são muito maiores do que se espera de um produto que abre ao usuário a customização dos resultados de busca. Com tantas possibilidades eu só fui descobrir algumas coisas agora, um tempão após o evento terminar.

Abaixo as 3 extensões que fiz entre ontem e hoje (para adicionar é necessário estar logado no Yahoo!).

GitHub



Adicionar

MySpace



Adicionar

Downloads



Adicionar

Mas a melhor de todas que vou mostrar não foi feita por mim. O Maurício vem trabalhando a algum tempo em cima dessa que ruleia bastante:

BuscaPé



Adicionar

About Me