Yahoo! Search Python API Howto
I guess most of you would’ve heard the announcement by now that a Yahoo! Search Developer Network a.k.a. YSDN has been started. The idea is to build a community around Yahoo! Search by opening up search webservices (with documentation) along with mailing lists, a blog and even a wiki. I haven’t had much time to explore it, but here’s what I’ve explored so far. This is more of a ‘how i did it’ rather than ‘howto’ but oh well, let’s get on with it.
First, I got an application ID. You need a Yahoo! ID to get a appID. Since I had already logged into my mail, I didn’t need to sign in. I gave a very unimaginative name ‘qpicsearch’ – I was thinking of creating an image search GUI using PyQt. I clicked on ‘Submit Registration’ and done.
I downloaded the SDK and read the FAQ. Python is my language of choice and as you can see from the title of this post, I am concentrating on that. Then, I installed the Python API:
[code]
python setup.py build
sudo python setup.py install
[/code]
It first gave me an error that /usr/lib/python2.3/config/Makefile
was not found, so I installed the python-dev debian package, the installation then proceeded smoothly.
The pYsearch-1.0/docs/
directory has some nifty pydoc-generated documentation. It helped me get started with my first program:
[python]
!/usr/bin/env python
import sys
from yahoo.search.webservices import ImageSearch
app_id = ‘qpicsearch’ # your appid here!
searcher = ImageSearch(app_id)
searcher.query = sys.argv[1]
searcher.results = 1
results = searcher.parse_results()
for result in results:
for key, value in result.items():
print key, '->', value
[/python]
and I ran it like this:
[code]
$ python qpicsearch1.py bangalore
Thumbnail -> {‘Url’: u’http://re2.mm-c.yimg.com/image/548038611′, ‘Width’: 120, ‘Height’: 81}
Publisher ->
RefererUrl -> http://www.zonevoyage.com/photos/inde/imagepages/image1.htm
Copyright ->
Title -> IND Bangalore VBangal1
Url -> http://www.zonevoyage.com/photos/inde/images/IND-Bangalore-VBangal1.jpg
ClickUrl -> http://www.zonevoyage.com/photos/inde/images/IND-Bangalore-VBangal1.jpg
Summary ->
Width -> 450
FileSize -> 43602
Height -> 304
FileFormat -> jpeg
Restrictions ->
[/code]
That’s an amazingly small program and does so much cool stuff. Leif has designed a very intuitive API. Hats off to him!
Next, I wanted to create a GUI using PyQt. So, I opened the Qt Designer and drag-and-dropped a line input, button and iconview widgets.

I used urllib2 to download the actual images and then used QIconViewItem to display each of the images. I even put in a nifty progress bar that indicates how many images have been downloaded. So, here’s the result!

Pretty neat, eh? There’s actually much much more – local search, news search, video search and of course, the web search. I wonder what kind of applications will start using the Y! Search API. There’s a whole range of possibilities. As the Chinese proverb goes, ‘May you live in interesting times!’
Note:
The source files are here. This is just a 20 minute hack, so if you are using this, YMMV.
Since I used the GPLed edition of Qt, the QPicSearch source is also GPLed. However, you can reuse the idea, as you wish, in your own applications. Update: As ac commented, I found out that I can release PyQt-based apps using any GPL-compatible license. So, the code is under BSD license now.
I have set the number of results to just 3 in the source. Change this number to whatever you want and run ./run.sh
to generate new code from the uic file and it will automatically run the application as well. This requires pyuic
to be installed.
Member discussion