In questo capitolo daremo uno sguardo ai principali servizi offerti da Yahoo. Vedremo solo i principali moduli disponibili, per un elenco completo si esegua:
# gem search --remote yahoo
Alcuni servizi richiedono l'utilizzo di un "application ID" che si può richiedere gratuitamente sul developer network di Yahoo e che va poi specificato all'interno delle applicazioni.
Cominciamo con l'esaminare YahooSearch, che implementa il servizio di ricerca di Yahoo e precisamente la versione 1 di Yahoo Web Search e la versione 3 di Yahoo Local Search.
La libreria yahoo-search fa parte del progetto più ampio RC Tools, mentre possiamo trovare le API di Yahoo, nella versione globale o locale, sempre disponibili nel developer network. Per poter utilizzare questo servizio è necessario ottenere prima un application ID.
Come esempio effettuiamo una ricerca e poi utilizziamo i risultati per creare una pagina HTML con BlueCloth
:
require 'rubygems' require 'bluecloth' require 'yahoo/web_search' APP_ID = "YourYahooApplicationID" query = ARGV[0] ys = Yahoo::WebSearch.new APP_ID results, avail, returned, position = ys.search query str = "## Search for _#{query}_n" results.each do |res| str << "[__#{res.title}__](#{res.url}) n" str << "#{res.summary} n" str << "#{res.url} - #{res.cache_size} bytes - [Cached](#{res.cache_url})nn" end bc = BlueCloth::new(str) puts bc.to_html
La struttura è molto intuitiva: prima creiamo un oggetto di tipo WebSearch
utilizzando il nostro application ID, poi effettuiamo la ricerca con il metodo search
passando come unico argomento la parola da cercare. È anche possibile passare come parametro il numero di risultati desiderati, il valore di default è 10.
Fatto questo creiamo la stringa da passare a BlueCloth
utilizzando gli attributi dei risultati restituiti che sono istanze della classe Yahoo::WebSearch::Result
.
Se abbiamo utilizzato una ricerca locale (LocalSearch
), i risultati che otteniamo sono arricchiti da attributi come indirizzo, città, numero di telefono, latitudine, longitudine e così via.