google Image search API

A python client to query image from google. Though the api service has been tagged as (Deprecated), it will work before a new version is released.


'''
Loosely based on Mike Verdone's excellent twitter library:
http://github.com/sixohsix/twitter/


'''

from exceptions import Exception
from urllib import urlencode
import urllib2

try:
import json
except ImportError:
import simplejson as json


class GoogleError(Exception):
"""
Exception thrown by the search object when there is an
error interacting with google.com.
"""
pass

class GoogleImageSearch(object):
def __init__(self, endpoint, user_agent= None, cache=None):
self.endpoint = endpoint
self.cache = cache
self.user_agent = user_agent

def __call__(self, **params):
params['v']='1.0'
kwargs = dict(params)
kwargs = urlencode(kwargs)

# HTTP GET
req = urllib2.Request('%s?%s' % (self.endpoint, kwargs))
print req.get_full_url()
cache_response = True

if self.user_agent:
req.add_header('User-Agent', self.user_agent)

try:
handle = urllib2.urlopen(req)
response = handle.read()
if cache_response and self.cache != None:
self.cache.set('googleimagesearch-' + kwargs, response, time=int(time() + 60))
response = json.loads(response)
return response
except urllib2.HTTPError, e:
raise GoogleError('google imagesearch sent status %i for method: %s\ndetails: %s' % (e.code, e.fp.read()))

class GoogleImage(GoogleImageSearch):
def __init__(self, endpoint='https://ajax.googleapis.com/ajax/services/search/images', user_agent='python-googleimage/0.1', cache=None):
GoogleImageSearch.__init__(self, endpoint=endpoint, user_agent=user_agent, cache=cache)


if __name__ == '__main__':
googleimage = GoogleImage()
query = {'q':'EURECOM'}
print googleimage(**query)

posted on 2012-06-05 17:21  xueliangliu  阅读(578)  评论(0编辑  收藏  举报

导航