From cb8acbd2c3601def5fb5e07bd0f484e8a53adc1d Mon Sep 17 00:00:00 2001
From: Adam Tauber <asciimoo@gmail.com>
Date: Thu, 4 Sep 2014 21:19:11 +0200
Subject: [PATCH] [enh][fix] support base_urls without language code ++ extra
 whitespaces removed

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

diff --git a/searx/engines/mediawiki.py b/searx/engines/mediawiki.py
index 7117f5d6f..ab1d1b90f 100644
--- 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'],