Bladeren bron

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

marc 8 jaren geleden
bovenliggende
commit
aac4ed6971
1 gewijzigde bestanden met toevoegingen van 8 en 1 verwijderingen
  1. 8
    1
      searx/engines/duckduckgo.py

+ 8
- 1
searx/engines/duckduckgo.py Bestand weergeven

16
 from urllib import urlencode
16
 from urllib import urlencode
17
 from lxml.html import fromstring
17
 from lxml.html import fromstring
18
 from searx.engines.xpath import extract_text
18
 from searx.engines.xpath import extract_text
19
+from searx.languages import language_codes
19
 
20
 
20
 # engine dependent config
21
 # engine dependent config
21
 categories = ['general']
22
 categories = ['general']
44
             # country code goes first
45
             # country code goes first
45
             locale = locale[1].lower() + '-' + locale[0].lower()
46
             locale = locale[1].lower() + '-' + locale[0].lower()
46
         else:
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
             locale = locale[0].lower()
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
     if locale:
57
     if locale:
51
         params['url'] = url.format(
58
         params['url'] = url.format(