diff --git a/searx/autocomplete.py b/searx/autocomplete.py new file mode 100644 index 00000000..e9cdc8ba --- /dev/null +++ b/searx/autocomplete.py @@ -0,0 +1,48 @@ +from lxml import etree +from requests import get +from json import loads + + +def dbpedia(query): + # dbpedia autocompleter + autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString={q}' # noqa + + response = get(autocomplete_url.format(q=query)) + + results = [] + + if response.ok: + dom = etree.fromstring(response.content) + results = dom.xpath('//a:Result/a:Label//text()', + namespaces={'a': 'http://lookup.dbpedia.org/'}) + + return results + + +def google(query): + # google autocompleter + autocomplete_url = 'http://suggestqueries.google.com/complete/search?client=toolbar&q={q}' # noqa + + response = get(autocomplete_url.format(q=query)) + + results = [] + + if response.ok: + dom = etree.fromstring(response.content) + results = dom.xpath('//suggestion/@data') + + return results + + +def wikipedia(query): + # wikipedia autocompleter + url = 'https://en.wikipedia.org/w/api.php?action=opensearch&search={q}&limit=10&namespace=0&format=json' # noqa + + resp = loads(get(url.format(q=query)).text) + return resp[1] + + +backends = {'dbpedia': dbpedia, + 'google': google, + 'wikipedia': wikipedia + }