CL-YAHOO is a Common Lisp interface to the Yahoo! API, a web API which enables searching the web through yahoo. Web-search, image-search, spelling, news-search, local search (searching for business in your area), contextual search, and term extraction are supported.

Current version is 0.5.

It requires S-XML and TRIVIAL-HTTP.

Tested on SBCL, Clisp, and ACL 6.2, on RH9/x86.

Author: Martin Elster



Searching the web for Lisp, returning 2 results starting at result number 3:

(ysearch :web :query "lisp" :type 'any :results 2 :start 3)

This query returns a list of objects, each representing the results of the search. To see the "summary" field of the first response from yahoo, use the following:

CL-USER> (summary (first (ysearch :web :query "lisp" :type 'any :results 2 :start 3 :adult-ok 1)))
"... The benefits of Common Lisp and CLISP. why is ANSI Common Lisp such a great programming environment? ..."

Searching for a lisp jpg image;

(ysearch :image :query "lisp" :format 'jpg)

Checking spelling:

CL-USER> (ysearch :spelling :query "improbabble")

Finding the phone number of three pizza joints in zip code 94306:

CL-USER> (mapcar #'phone (ysearch :local :query "pizza" :results 3 :zip 94306))
("(650) 494-2928" "(650) 424-9400" "(650) 326-6552")

Term extraction:

CL-USER> (yahoo:ysearch :term-extraction :context "Italian sculptors and painters of the renaissance favored the Virgin Mary for inspiration." :query "madonna")
("italian sculptors" "virgin mary" "painters" "renaissance" "inspiration")


I'm using SBCL 1.0.2 on Ubuntu Edgy and ran into problems getting Web search to work:

CL-USER> (asdf:oos 'asdf:load-op :cl-yahoo)                                                                                    
CL-USER> (use-package :cl-yahoo)                                                                                               
CL-USER> (ysearch :web :query "lisp" :type 'any :results 2)
XML parser encountered eof before end of entity.                                                                               
   [Condition of type S-XML:XML-PARSER-ERROR]                                                                                  
 0: [ABORT] Return to SLIME's top level.                                                                                       
 1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" {CC416A9}>)                                               
  0: (S-XML::RESOLVE-ENTITY                                                                                                    
      #<SB-SYS:FD-STREAM for "a constant string" {B477469}>                                               
      "invalid value: uri -"                                        
      #<HASH-TABLE :TEST EQUAL :COUNT 6 {B47C031}>                                                                             
     <!-- uncompressed Sat Mar  3 16:16:03 PST 2007 -->
  1: (S-XML::PARSE-TEXT                                                                                                        
      #<SB-SYS:FD-STREAM for "a constant string" {B477469}>

I tried to email the author, but the email bounced.

-- 2007.03.04, Marc Abramowitz

I'm getting the same problem in Allegro Lisp 8.0. It looks like Yahoo doesn't like something about the HTTP request, but I can't figure out what.

-- 2007.06.08, Mike Travers