From 14756a267444614dbed2c8a456ef088f2755198c Mon Sep 17 00:00:00 2001 From: ta Date: Wed, 22 Jun 2022 14:08:19 +0700 Subject: [PATCH 1/3] [mod] Adds Lingva translate engine Add the lingva engine (which grabs data from google translate). Results from Lingva are added to the infobox results. --- searx/engines/lingva.py | 68 +++++++++++++++++++++++++++++++++++++++++ searx/settings.yml | 6 ++++ 2 files changed, 74 insertions(+) create mode 100644 searx/engines/lingva.py diff --git a/searx/engines/lingva.py b/searx/engines/lingva.py new file mode 100644 index 000000000..bf51b705e --- /dev/null +++ b/searx/engines/lingva.py @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# lint: pylint +"""Lingva (alternative Google Translate frontend)""" + +from json import loads + +about = { + "website": 'https://lingva.ml', + "wikidata_id": None, + "official_api_documentation": 'https://github.com/thedaviddelta/lingva-translate#public-apis', + "use_official_api": True, + "require_api_key": False, + "results": 'JSON', +} + +engine_type = 'online_dictionary' +categories = ['general'] + +url = "https://lingva.ml" +search_url = "{url}/api/v1/{from_lang}/{to_lang}/{query}" + + +def request(_query, params): + params['url'] = search_url.format( + url=url, from_lang=params['from_lang'][1], to_lang=params['to_lang'][1], query=params['query'] + ) + return params + + +def response(resp): + results = [] + + result = loads(resp.text) + info = result["info"] + from_to_prefix = "%s-%s " % (resp.search_params['from_lang'][1], resp.search_params['to_lang'][1]) + + if "typo" in info: + results.append({"suggestion": from_to_prefix + info["typo"]}) + + if 'definitions' in info: # pylint: disable=too-many-nested-blocks + for definition in info['definitions']: + if 'list' in definition: + for item in definition['list']: + if 'synonyms' in item: + for synonym in item['synonyms']: + results.append({"suggestion": from_to_prefix + synonym}) + + infobox = "" + + for translation in info["extraTranslations"]: + infobox += f"{translation['type']}" + + for word in translation["list"]: + infobox += f"
{word['word']}
" + + for meaning in word["meanings"]: + infobox += f"
{meaning}
" + + infobox += "
" + + results.append( + { + 'infobox': result["translation"], + 'content': infobox, + } + ) + + return results diff --git a/searx/settings.yml b/searx/settings.yml index 3ecad0df5..a8ec798e7 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -886,6 +886,12 @@ engines: shortcut: loc categories: images + - name: lingva + engine: lingva + shortcut: lv + # set lingva instance in url, by default it will use the official instance + # url: https://lingva.ml + - name: lobste.rs engine: xpath search_url: https://lobste.rs/search?utf8=%E2%9C%93&q={query}&what=stories&order=relevance From f8222eb2cd22fc02977bd5857367afc7c40c3a22 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Mon, 4 Jul 2022 17:05:33 +0200 Subject: [PATCH 2/3] [fix] style.less: move
from infobox.attributes to .attributes class Signed-off-by: Markus Heiser --- .../static/themes/simple/src/less/style.less | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/searx/static/themes/simple/src/less/style.less b/searx/static/themes/simple/src/less/style.less index b97e113fe..11d2ef58d 100644 --- a/searx/static/themes/simple/src/less/style.less +++ b/searx/static/themes/simple/src/less/style.less @@ -594,24 +594,29 @@ article[data-vim-selected].category-social { padding: 0; } - dl { - margin: 0.5em 0; - } - dt { - display: inline; - margin-top: 0.5em; - .ltr-margin-right(0.25em); - margin-bottom: 0.5em; - .ltr-margin-left(0); - padding: 0; font-weight: bold; } - dd { - display: inline; - margin: 0.5em 0; - padding: 0; + .attributes { + dl { + margin: 0.5em 0; + } + + dt { + display: inline; + margin-top: 0.5em; + .ltr-margin-right(0.25em); + margin-bottom: 0.5em; + .ltr-margin-left(0); + padding: 0; + } + + dd { + display: inline; + margin: 0.5em 0; + padding: 0; + } } input { From 8de0b6200529182b0b7453c59d08f5fdd958965e Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Mon, 4 Jul 2022 17:36:55 +0200 Subject: [PATCH 3/3] [build] /static --- .../themes/simple/css/searxng-rtl.min.css | Bin 67385 -> 67442 bytes .../themes/simple/css/searxng-rtl.min.css.map | Bin 109157 -> 109240 bytes .../static/themes/simple/css/searxng.min.css | Bin 66289 -> 66346 bytes .../themes/simple/css/searxng.min.css.map | Bin 107470 -> 107553 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/searx/static/themes/simple/css/searxng-rtl.min.css b/searx/static/themes/simple/css/searxng-rtl.min.css index 7b5b2231211ade5a877426c5cce44243ffea2399..8316845ee5f6bbb1abf87dfd1460ad4ade5dfa6a 100644 GIT binary patch delta 69 zcmdnl$MUIm`{_sWxg)jUzVKU=eVPvt*Q{OI; F1OQM)9`OJG delta 28 mcmV+%0OSAijs&@m1hDe#lOydSlTqzo0XviQ>>{(z?V}mpCJ#>l diff --git a/searx/static/themes/simple/css/searxng-rtl.min.css.map b/searx/static/themes/simple/css/searxng-rtl.min.css.map index fc21e6b002a6257c7064fdfeb4d27beaa7d43dfb..14dfe9afaf0633ac4eef6a1ea7fc3fb30d51feb2 100644 GIT binary patch delta 710 zcmaEQg>A=Gwhfkv*^!Qpjyj%>o{l=1&W_HmI{qNOH;8a`ba#Ua27>thj?Ruc;b7^c zk{l;L9k5p4#PS>`U!7!#cmYT}5yW;)ECz{#bwW*=JTFm&$CvQ~|P=hbXIh`q^$MNX3~ zyc8y1Prl+?Q4G`!R_U8)Pz-cKDA;XCuForlx!yamuoU6?ERZkY`a5*d?)0j~^#}w#juycG9i%p#(bqt&wox_094Gc!#q%tH~ zqsjZSLiqJfoeG>_VVY|;SuuMWqha%o?Cm?U8Ee$0$4_G9o*r1vD6JfmrvL-~QDA%HWX30A0I{{(h5!Hn delta 702 zcmdmSmF?*jwhfkv_5O~Ijym2T!qw5;O{dVw(b-ie5XAR)bavDU2TLbq)6x#AYV4m6P`+axuBPO+J;Fq-37w1a*qP zV?NyOM3Wq#uqVh4|H%iVg(oK_#q$~F!`$PasGUFgT+&XHf+C~yeu zJVEY(xGcpS=tHRMlhY^fPX6YeR}3@@tkE~Iu-M60Clq9eH9^)Ga)DH`gDl~kZaRmNfBWOfj90|~Fj>{k diff --git a/searx/static/themes/simple/css/searxng.min.css b/searx/static/themes/simple/css/searxng.min.css index 8f1754a11335d92c940e351d831a102a87e45649..aea16f74c27bfb17fd32e0a6c0e052a5fa5bc1f5 100644 GIT binary patch delta 45 wcmey^%Cf4BWyA9~OeNKmGv6vr=6%OK`RN-KFwOBcVe*!@!XWnMuD9u;019gsRsaA1 delta 28 mcmV+%0OS9vh6M421hD7qlNjwHlSb`d0XviF>>{(o?Pe9##SXRr diff --git a/searx/static/themes/simple/css/searxng.min.css.map b/searx/static/themes/simple/css/searxng.min.css.map index fe5ba7368dc3e571709a4397813bb222ec51388e..4494b585c2971c9c95448565c9795141d99c6695 100644 GIT binary patch delta 687 zcmX?ioNeI=whh*a*^!Qpjyj%>o{l=1&W_HmI{qNOH;8a`ba#Ua27>thj?Ruc;b7^c zk{l;LokS4ZH?cg&$yX;CB3=Lz2OH^{SPT*e>x7y#c|oEIlc(3@V~I(UIr&aNy&z5g zj`=WieG@ZtCp#up^Xcb1c|nZ#Ps}fvd@5-tZ&eXc1K3@GiAIwrBunw;fJ7knCKpcL zp8Sosq8O+RY^Zml!DRakQSH1^m^-}_3ri91%mRr+-C0@+G{?+oa$Sb&Wc$==p`0=& zH;5^|iTPzto;rb(4V6SUKTO@n$Y?luLAt1zkugw*kxNn;hz5s(cVfE9OwaSm@-M zH7jRtSI%avQeZ5ZuGq*ZKE0ubQDnMZFC(|DLUl}@0vM#^AlM2Dxrs&TnR!+U270Ec zxe5l>FjciNc`#;5$#nT?jH1);bTjf#7n#CnG+nZXk#D+c52O5agDF5(Ko6t9^r>8o gqP)nuQV_btu-h|zA{V3NbS^_if$gt)7@vp%0I&DW)Bpeg delta 639 zcmZ2@g6-UKwhh*a_5O~Ijym2T!qw5;O{dVw(b-ie5XAR)bavDU2TLbq&^3xtQGDCZ9=6VlvO0Y>*_% zWRf%4J*k?{Fdt^6f1-B&vxkvydS?Qo@bsJ>M*iuN`iuh8 zdwUppr~lMr