@@ -1,43 +1,62 @@
1−#!/usr/bin/env python
1+## Google (News)
3+# @website https://www.google.com
4+# @provide-api yes (https://developers.google.com/web-search/docs/), deprecated!
8+# @stable yes (but deprecated)
9+# @parse url, title, content, publishedDate
3from urllib import urlencode
11from urllib import urlencode
4from json import loads
12from json import loads
5from dateutil import parser
13from dateutil import parser
7categories = ['news']
16categories = ['news']
18+language_support = True
20+# engine dependent config
9url = 'https://ajax.googleapis.com/'
21url = 'https://ajax.googleapis.com/'
10search_url = url + 'ajax/services/search/news?v=2.0&start={offset}&rsz=large&safe=off&filter=off&{query}&hl={language}' # noqa
22search_url = url + 'ajax/services/search/news?v=2.0&start={offset}&rsz=large&safe=off&filter=off&{query}&hl={language}' # noqa
13−language_support = True
16def request(query, params):
26def request(query, params):
17 offset = (params['pageno'] - 1) * 8
27 offset = (params['pageno'] - 1) * 8
18 language = 'en-US'
29 language = 'en-US'
19 if params['language'] != 'all':
30 if params['language'] != 'all':
20 language = params['language'].replace('_', '-')
31 language = params['language'].replace('_', '-')
21 params['url'] = search_url.format(offset=offset,
33 params['url'] = search_url.format(offset=offset,
22 query=urlencode({'q': query}),
34 query=urlencode({'q': query}),
23 language=language)
35 language=language)
24 return params
37 return params
40+# get response from search-request
27def response(resp):
41def response(resp):
28 results = []
42 results = []
29 search_res = loads(resp.text)
44 search_res = loads(resp.text)
46+ # return empty array if there are no results
31 if not search_res.get('responseData', {}).get('results'):
47 if not search_res.get('responseData', {}).get('results'):
34 for result in search_res['responseData']['results']:
51 for result in search_res['responseData']['results']:
35−
52+ # parse publishedDate
36−# Mon, 10 Mar 2014 16:26:15 -0700
37 publishedDate = parser.parse(result['publishedDate'])
53 publishedDate = parser.parse(result['publishedDate'])
39 results.append({'url': result['unescapedUrl'],
56 results.append({'url': result['unescapedUrl'],
40 'title': result['titleNoFormatting'],
57 'title': result['titleNoFormatting'],
41 'publishedDate': publishedDate,
58 'publishedDate': publishedDate,
42 'content': result['content']})
59 'content': result['content']})
43 return results
62 return results