@@ -41,46 +41,51 @@ title_xpath = './/a[@class="result__a"]'
41content_xpath = './/a[@class="result__snippet"]'
41content_xpath = './/a[@class="result__snippet"]'
44−# do search-request
44+# match query's language to a region code that duckduckgo will accept
45−def request(query, params):
45+def get_region_code(lang):
46− if params['time_range'] and params['time_range'] not in time_range_dict:
49− offset = 30 + (params['pageno'] - 1) * 50
50− dc_param = offset + 1
52 # custom fixes for languages
46 # custom fixes for languages
53− if params['language'] == 'all':
47+ if lang == 'all':
54− locale = None
48+ region_code = None
55− elif params['language'][:2] == 'ja':
49+ elif lang[:2] == 'ja':
56− locale = 'jp-jp'
50+ region_code = 'jp-jp'
57− elif params['language'][:2] == 'sl':
51+ elif lang[:2] == 'sl':
58− locale = 'sl-sl'
52+ region_code = 'sl-sl'
59− elif params['language'] == 'zh-TW':
53+ elif lang == 'zh-TW':
60− locale = 'tw-tzh'
54+ region_code = 'tw-tzh'
61− elif params['language'] == 'zh-HK':
55+ elif lang == 'zh-HK':
62− locale = 'hk-tzh'
56+ region_code = 'hk-tzh'
63− elif params['language'][-2:] == 'SA':
57+ elif lang[-2:] == 'SA':
64− locale = 'xa-' + params['language'].split('-')[0]
58+ region_code = 'xa-' + lang.split('-')[0]
65− elif params['language'][-2:] == 'GB':
59+ elif lang[-2:] == 'GB':
66− locale = 'uk-' + params['language'].split('-')[0]
60+ region_code = 'uk-' + lang.split('-')[0]
68− locale = params['language'].split('-')
62+ region_code = lang.split('-')
69− if len(locale) == 2:
63+ if len(region_code) == 2:
70 # country code goes first
64 # country code goes first
71− locale = locale[1].lower() + '-' + locale[0].lower()
65+ region_code = region_code[1].lower() + '-' + region_code[0].lower()
73 # tries to get a country code from language
67 # tries to get a country code from language
74− locale = locale[0].lower()
68+ region_code = region_code[0].lower()
75 for lc in supported_languages:
69 for lc in supported_languages:
76 lc = lc.split('-')
70 lc = lc.split('-')
77− if locale == lc[0]:
71+ if region_code == lc[0]:
78− locale = lc[1].lower() + '-' + lc[0].lower()
72+ region_code = lc[1].lower() + '-' + lc[0].lower()
78+def request(query, params):
79+ if params['time_range'] and params['time_range'] not in time_range_dict:
82+ offset = 30 + (params['pageno'] - 1) * 50
83+ dc_param = offset + 1
81− if locale:
85+ region_code = get_region_code(params['language'])
82 params['url'] = url.format(
87 params['url'] = url.format(
83− query=urlencode({'q': query, 'kl': locale}), offset=offset, dc_param=dc_param)
88+ query=urlencode({'q': query, 'kl': region_code}), offset=offset, dc_param=dc_param)
85 params['url'] = url.format(
90 params['url'] = url.format(
86 query=urlencode({'q': query}), offset=offset, dc_param=dc_param)
91 query=urlencode({'q': query}), offset=offset, dc_param=dc_param)