logo

searx

Unnamed repository; edit this file 'description' to name the repository.
commit: cb8acbd2c3601def5fb5e07bd0f484e8a53adc1d
parent: c38a743c6f22433b64323ac4a2e74a3293b55fee
Author: Adam Tauber <asciimoo@gmail.com>
Date:   Thu,  4 Sep 2014 21:19:11 +0200

[enh][fix] support base_urls without language code ++ extra whitespaces removed

Diffstat:

searx/engines/mediawiki.py | 33++++++++++++++++++++++-----------
1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/searx/engines/mediawiki.py b/searx/engines/mediawiki.py @@ -1,16 +1,17 @@ ## general mediawiki-engine (Web) -# +# # @website websites built on mediawiki (https://www.mediawiki.org) # @provide-api yes (http://www.mediawiki.org/wiki/API:Search) -# +# # @using-api yes # @results JSON # @stable yes -# @parse url, title +# @parse url, title # # @todo content from json import loads +from string import Formatter from urllib import urlencode, quote # engine dependent config @@ -18,28 +19,38 @@ categories = ['general'] language_support = True paging = True number_of_results = 1 - + # search-url base_url = 'https://{language}.wikipedia.org/' -search_url = base_url + 'w/api.php?action=query&list=search&{query}&srprop=timestamp&format=json&sroffset={offset}&srlimit={limit}' # noqa +search_url = base_url + 'w/api.php?action=query\ + &list=search\ + &{query}\ + &srprop=timestamp\ + &format=json\ + &sroffset={offset}\ + &srlimit={limit}' # do search-request def request(query, params): offset = (params['pageno'] - 1) * number_of_results + string_args = dict(query=urlencode({'srsearch': query}), + offset=offset, + limit=number_of_results) + format_strings = Formatter().parse(base_url) if params['language'] == 'all': language = 'en' else: language = params['language'].split('_')[0] - + + if len(format_strings) > 1: + string_args['language'] = language + # write search-language back to params, required in response params['language'] = language - params['url'] = search_url.format(query=urlencode({'srsearch': query}), - offset=offset, - limit=number_of_results, - language=language) + params['url'] = search_url.format(**string_args) return params @@ -57,7 +68,7 @@ def response(resp): # parse results for result in search_results['query']['search']: url = base_url.format(language=resp.search_params['language']) + 'wiki/' + quote(result['title'].replace(' ', '_').encode('utf-8')) - + # append result results.append({'url': url, 'title': result['title'],