on master help sign in
add comments to google-engines
commit144f89bf785408a193d09f659a5442032c06de74 authorThomas Pointhuber <thomas.pointhuber@gmx.at> dateMon 1 Sep 2014, 15:10 (12 years ago) parentcdf74fe
3 files changed+75−15
searx/engines/google.py+24−4 searx/engines/google_images.py+26−5 searx/engines/google_news.py+25−6
searx/engines/google.py+24−4
@@ -1,37 +1,57 @@
1−#!/usr/bin/env python
1+## Google (Web)
2+#
3+# @website https://www.google.com
4+# @provide-api yes (https://developers.google.com/web-search/docs/), deprecated!
5+#
6+# @using-api yes
7+# @results JSON
8+# @stable yes (but deprecated)
9+# @parse url, title, content
210
311from urllib import urlencode
412from json import loads
513
14+# engine dependent config
615categories = ['general']
16+paging = True
17+language_support = True
718
19+# search-url
820url = 'https://ajax.googleapis.com/'
921search_url = url + 'ajax/services/search/web?v=2.0&start={offset}&rsz=large&safe=off&filter=off&{query}&hl={language}' # noqa
1022
11−paging = True
12−language_support = True
13−
1423
24+# do search-request
1525def request(query, params):
1626 offset = (params['pageno'] - 1) * 8
27+
1728 language = 'en-US'
1829 if params['language'] != 'all':
1930 language = params['language'].replace('_', '-')
31+
2032 params['url'] = search_url.format(offset=offset,
2133 query=urlencode({'q': query}),
2234 language=language)
35+
2336 return params
2437
2538
39+# get response from search-request
2640def response(resp):
2741 results = []
42+
2843 search_res = loads(resp.text)
2944
45+ # return empty array if there are no results
3046 if not search_res.get('responseData', {}).get('results'):
3147 return []
3248
49+ # parse results
3350 for result in search_res['responseData']['results']:
51+ # append result
3452 results.append({'url': result['unescapedUrl'],
3553 'title': result['titleNoFormatting'],
3654 'content': result['content']})
55+
56+ # return results
3757 return results
searx/engines/google_images.py+26−5
@@ -1,37 +1,58 @@
1−#!/usr/bin/env python
1+## Google (Images)
2+#
3+# @website https://www.google.com
4+# @provide-api yes (https://developers.google.com/web-search/docs/), deprecated!
5+#
6+# @using-api yes
7+# @results JSON
8+# @stable yes (but deprecated)
9+# @parse url, title, img_src
210
311from urllib import urlencode
412from json import loads
513
14+# engine dependent config
615categories = ['images']
16+paging = True
717
18+# search-url
819url = 'https://ajax.googleapis.com/'
920search_url = url + 'ajax/services/search/images?v=1.0&start={offset}&rsz=large&safe=off&filter=off&{query}' # noqa
1021
11−paging = True
1222
23+# do search-request
1324def request(query, params):
1425 offset = (params['pageno'] - 1) * 8
26+
1527 params['url'] = search_url.format(query=urlencode({'q': query}),
1628 offset=offset)
29+
1730 return params
1831
1932
33+# get response from search-request
2034def response(resp):
2135 results = []
36+
2237 search_res = loads(resp.text)
23− if not search_res.get('responseData'):
24− return []
25− if not search_res['responseData'].get('results'):
38+
39+ # return empty array if there are no results
40+ if not search_res.get('responseData', {}).get('results'):
2641 return []
42+
43+ # parse results
2744 for result in search_res['responseData']['results']:
2845 href = result['originalContextUrl']
2946 title = result['title']
3047 if not result['url']:
3148 continue
49+
50+ # append result
3251 results.append({'url': href,
3352 'title': title,
3453 'content': '',
3554 'img_src': result['url'],
3655 'template': 'images.html'})
56+
57+ # return results
3758 return results
searx/engines/google_news.py+25−6
@@ -1,43 +1,62 @@
1−#!/usr/bin/env python
1+## Google (News)
2+#
3+# @website https://www.google.com
4+# @provide-api yes (https://developers.google.com/web-search/docs/), deprecated!
5+#
6+# @using-api yes
7+# @results JSON
8+# @stable yes (but deprecated)
9+# @parse url, title, content, publishedDate
210
311from urllib import urlencode
412from json import loads
513from dateutil import parser
614
15+# search-url
716categories = ['news']
17+paging = True
18+language_support = True
819
20+# engine dependent config
921url = 'https://ajax.googleapis.com/'
1022search_url = url + 'ajax/services/search/news?v=2.0&start={offset}&rsz=large&safe=off&filter=off&{query}&hl={language}' # noqa
1123
12−paging = True
13−language_support = True
14−
1524
25+# do search-request
1626def request(query, params):
1727 offset = (params['pageno'] - 1) * 8
28+
1829 language = 'en-US'
1930 if params['language'] != 'all':
2031 language = params['language'].replace('_', '-')
32+
2133 params['url'] = search_url.format(offset=offset,
2234 query=urlencode({'q': query}),
2335 language=language)
36+
2437 return params
2538
2639
40+# get response from search-request
2741def response(resp):
2842 results = []
43+
2944 search_res = loads(resp.text)
3045
46+ # return empty array if there are no results
3147 if not search_res.get('responseData', {}).get('results'):
3248 return []
3349
50+ # parse results
3451 for result in search_res['responseData']['results']:
35−
36−# Mon, 10 Mar 2014 16:26:15 -0700
52+ # parse publishedDate
3753 publishedDate = parser.parse(result['publishedDate'])
3854
55+ # append result
3956 results.append({'url': result['unescapedUrl'],
4057 'title': result['titleNoFormatting'],
4158 'publishedDate': publishedDate,
4259 'content': result['content']})
60+
61+ # return results
4362 return results