Browse Source

[fix] autocompleter.py added

Adam Tauber 11 years ago
parent
commit
fd730ebcad
1 changed files with 48 additions and 0 deletions
  1. 48 0
      searx/autocomplete.py

+ 48 - 0
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
+            }