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.

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:

python setup.py build

sudo python setup.py install

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:

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 qpicsearch1.py bangalore

Thumbnail -> {‘Url’: u’<http://re2.mm-c.yimg.com/image/548038611&#8242;,> ‘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 ->

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.

https://swaroopch.ghost.io/files/200503/qpicsearch_designer_thumbnail.png

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!

https://swaroopch.ghost.io/files/200503/qpicsearch.png

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.