/
google_images.py
47 lines (39 loc) · 1.44 KB
/
google_images.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from googleapiclient.discovery import build
class GoogleImageApiRepo(object):
CUSTOM_SEARCH = 'customsearch'
CUSTOM_SEARCH_VERSION = 'v1'
IMAGE_SEARCH_TYPE = 'image'
class ImagesObjectKeys(object):
ITEMS = 'items'
LINK = 'link'
def __init__(self, credentials_descriptor):
self._cx = credentials_descriptor.cx
self.service = self.build_service(credentials_descriptor)
self.__list_dictionaries = dict()
def build_service(self, credentials_descriptor):
return build(
self.CUSTOM_SEARCH,
self.CUSTOM_SEARCH_VERSION,
developerKey=credentials_descriptor.developer_key
)
def search_images(self, query):
resp = self.__get_list(query).execute()
result = []
for item in resp[self.ImagesObjectKeys.ITEMS]:
link = item[self.ImagesObjectKeys.LINK]
if link is not None:
result.append(link)
return result
def __get_list(self, query):
if query in self.__list_dictionaries:
return self.__list_dictionaries[query]
else:
generated = self.__generate_list_for_query(query)
self.__list_dictionaries[query] = generated
return generated
def __generate_list_for_query(self, query):
return self.service.cse().list(
q=query,
searchType=self.IMAGE_SEARCH_TYPE,
cx=self._cx
)