Преглед на файлове

[fix] guess country code if not specified in duckduckgo engine

marc преди 8 години
родител
ревизия
aac4ed6971
променени са 1 файла, в които са добавени 8 реда и са изтрити 1 реда
  1. 8
    1
      searx/engines/duckduckgo.py

+ 8
- 1
searx/engines/duckduckgo.py Целия файл

@@ -16,6 +16,7 @@
16 16
 from urllib import urlencode
17 17
 from lxml.html import fromstring
18 18
 from searx.engines.xpath import extract_text
19
+from searx.languages import language_codes
19 20
 
20 21
 # engine dependent config
21 22
 categories = ['general']
@@ -44,8 +45,14 @@ def request(query, params):
44 45
             # country code goes first
45 46
             locale = locale[1].lower() + '-' + locale[0].lower()
46 47
         else:
47
-            # doesn't actually do anything because ddg requires both country and language
48
+            # tries to get a country code from language
48 49
             locale = locale[0].lower()
50
+            lang_codes = [x[0] for x in language_codes]
51
+            for lc in lang_codes:
52
+                lc = lc.split('_')
53
+                if locale == lc[0]:
54
+                    locale = lc[1].lower() + '-' + lc[0].lower()
55
+                    break
49 56
 
50 57
     if locale:
51 58
         params['url'] = url.format(