12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- from json import loads
- from urllib import urlencode
- from dateutil import parser
-
-
- categories = ['general', 'images']
- paging = True
- language_support = True
- number_of_results = 5
-
-
- base_url = 'http://localhost:8090'
- search_url = '/yacysearch.json?{query}'\
- '&startRecord={offset}'\
- '&maximumRecords={limit}'\
- '&contentdom={search_type}'\
- '&resource=global'
-
-
- search_types = {'general': 'text',
- 'images': 'image',
- 'files': 'app',
- 'music': 'audio',
- 'videos': 'video'}
-
-
-
- def request(query, params):
- offset = (params['pageno'] - 1) * number_of_results
- search_type = search_types.get(params.get('category'), '0')
-
- params['url'] = base_url +\
- search_url.format(query=urlencode({'query': query}),
- offset=offset,
- limit=number_of_results,
- search_type=search_type)
-
-
- if params['language'] != 'all':
- params['url'] += '&lr=lang_' + params['language'].split('_')[0]
-
- return params
-
-
-
- def response(resp):
- results = []
-
- raw_search_results = loads(resp.text)
-
-
- if not raw_search_results:
- return []
-
- search_results = raw_search_results.get('channels', [])
-
- if len(search_results) == 0:
- return []
-
- for result in search_results[0].get('items', []):
-
- if result.get('image'):
-
- results.append({'url': result['url'],
- 'title': result['title'],
- 'content': '',
- 'img_src': result['image'],
- 'template': 'images.html'})
-
-
- else:
- publishedDate = parser.parse(result['pubDate'])
-
-
- results.append({'url': result['link'],
- 'title': result['title'],
- 'content': result['description'],
- 'publishedDate': publishedDate})
-
-
-
-
- return results
|