Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Verified Commit 63767bea authored by Nivesh Krishna's avatar Nivesh Krishna
Browse files

fix ddg engine

parent 26b00b52
Loading
Loading
Loading
Loading
+16 −14
Original line number Diff line number Diff line
@@ -13,17 +13,17 @@ import babel
import lxml.html

from searx import (
    network,
    locales,
    redislib,
    external_bang,
)
from searx import redisdb
from searx.utils import (
    eval_xpath,
    eval_xpath_getindex,
    extract_text,
)
from searx.network import get  # see https://github.com/searxng/searxng/issues/762
from searx import redisdb
from searx.enginelib.traits import EngineTraits
from searx.exceptions import SearxEngineAPIException

@@ -94,12 +94,12 @@ def get_vqd(query, headers):
            logger.debug("re-use cached vqd value: %s", value)
            return value

    query_url = 'https://duckduckgo.com/?{query}&iar=images'.format(query=urlencode({'q': query}))
    res = network.get(query_url, headers=headers)
    content = res.text
    if content.find('vqd=\'') == -1:
    query_url = 'https://duckduckgo.com/?q={query}&atb=v290-5'.format(query=urlencode({'q': query}))
    res = get(query_url, headers=headers)
    content = res.text  # type: ignore
    if content.find('vqd=\"') == -1:
        raise SearxEngineAPIException('Request failed')
    value = content[content.find('vqd=\'') + 5 :]
    value = content[content.find('vqd=\"') + 5 :]
    value = value[: value.find('\'')]
    logger.debug("new vqd value: %s", value)
    cache_vqd(query, value)
@@ -139,7 +139,9 @@ def get_ddg_lang(eng_traits: EngineTraits, sxng_locale, default='en_US'):
         params['cookies']['kl'] = eng_region  # 'ar-es'

    """
    return eng_traits.custom['lang_region'].get(sxng_locale, eng_traits.get_language(sxng_locale, default))
    return eng_traits.custom['lang_region'].get(  # type: ignore
        sxng_locale, eng_traits.get_language(sxng_locale, default)
    )


ddg_reg_map = {
@@ -358,13 +360,13 @@ def fetch_traits(engine_traits: EngineTraits):
    engine_traits.all_locale = 'wt-wt'

    # updated from u588 to u661 / should be updated automatically?
    resp = network.get('https://duckduckgo.com/util/u661.js')
    resp = get('https://duckduckgo.com/util/u661.js')

    if not resp.ok:
    if not resp.ok:  # type: ignore
        print("ERROR: response from DuckDuckGo is not OK.")

    pos = resp.text.find('regions:{') + 8
    js_code = resp.text[pos:]
    pos = resp.text.find('regions:{') + 8  # type: ignore
    js_code = resp.text[pos:]  # type: ignore
    pos = js_code.find('}') + 1
    regions = json.loads(js_code[:pos])

@@ -399,8 +401,8 @@ def fetch_traits(engine_traits: EngineTraits):

    engine_traits.custom['lang_region'] = {}

    pos = resp.text.find('languages:{') + 10
    js_code = resp.text[pos:]
    pos = resp.text.find('languages:{') + 10  # type: ignore
    js_code = resp.text[pos:]  # type: ignore
    pos = js_code.find('}') + 1
    js_code = '{"' + js_code[1:pos].replace(':', '":').replace(',', ',"')
    languages = json.loads(js_code)