mirror of
https://github.com/searxng/searxng.git
synced 2026-07-22 16:01:24 +00:00
Compare commits
1 Commits
cb4bfbe129
...
update_dat
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
872e838fa4 |
File diff suppressed because it is too large
Load Diff
@@ -773,7 +773,7 @@
|
|||||||
"nl": "Boliviaanse boliviano",
|
"nl": "Boliviaanse boliviano",
|
||||||
"oc": "Boliviano",
|
"oc": "Boliviano",
|
||||||
"pa": "ਬੋਲੀਵੀਆਨੋ",
|
"pa": "ਬੋਲੀਵੀਆਨੋ",
|
||||||
"pl": "boliwiano",
|
"pl": "boliviano",
|
||||||
"pt": "Boliviano",
|
"pt": "Boliviano",
|
||||||
"ro": "boliviano",
|
"ro": "boliviano",
|
||||||
"ru": "боливиано",
|
"ru": "боливиано",
|
||||||
@@ -1107,7 +1107,7 @@
|
|||||||
"fi": "Kongon frangi",
|
"fi": "Kongon frangi",
|
||||||
"fr": "franc congolais",
|
"fr": "franc congolais",
|
||||||
"ga": "franc an Chongó",
|
"ga": "franc an Chongó",
|
||||||
"gl": "franco congolés",
|
"gl": "Franco congolés",
|
||||||
"he": "פרנק קונגולזי",
|
"he": "פרנק קונגולזי",
|
||||||
"hr": "Kongoanski franak",
|
"hr": "Kongoanski franak",
|
||||||
"hu": "kongói frank",
|
"hu": "kongói frank",
|
||||||
@@ -1636,7 +1636,7 @@
|
|||||||
"fi": "Algerian dinaari",
|
"fi": "Algerian dinaari",
|
||||||
"fr": "dinar algérien",
|
"fr": "dinar algérien",
|
||||||
"ga": "dinar na hAilgéire",
|
"ga": "dinar na hAilgéire",
|
||||||
"gl": "dinar alxeriano",
|
"gl": "Dinar alxeriano",
|
||||||
"he": "דינר אלג'ירי",
|
"he": "דינר אלג'ירי",
|
||||||
"hr": "Alžirski dinar",
|
"hr": "Alžirski dinar",
|
||||||
"hu": "algériai dinár",
|
"hu": "algériai dinár",
|
||||||
@@ -1651,7 +1651,7 @@
|
|||||||
"pap": "dinar argelino",
|
"pap": "dinar argelino",
|
||||||
"pl": "dinar algierski",
|
"pl": "dinar algierski",
|
||||||
"pt": "dinar argelino",
|
"pt": "dinar argelino",
|
||||||
"ro": "dinar algerian",
|
"ro": "Dinar algerian",
|
||||||
"ru": "алжирский динар",
|
"ru": "алжирский динар",
|
||||||
"sk": "Alžírský dinár",
|
"sk": "Alžírský dinár",
|
||||||
"sl": "alžirski dinar",
|
"sl": "alžirski dinar",
|
||||||
@@ -1786,7 +1786,7 @@
|
|||||||
"cy": "Ewro",
|
"cy": "Ewro",
|
||||||
"da": "Euro",
|
"da": "Euro",
|
||||||
"de": "Euro",
|
"de": "Euro",
|
||||||
"en": "euro",
|
"en": "Euro",
|
||||||
"eo": "eŭro",
|
"eo": "eŭro",
|
||||||
"es": "Euro",
|
"es": "Euro",
|
||||||
"et": "Euro",
|
"et": "Euro",
|
||||||
@@ -1803,7 +1803,7 @@
|
|||||||
"it": "Euro",
|
"it": "Euro",
|
||||||
"ja": "ユーロ",
|
"ja": "ユーロ",
|
||||||
"ko": "유로",
|
"ko": "유로",
|
||||||
"lt": "euras",
|
"lt": "Euras",
|
||||||
"lv": "eiro",
|
"lv": "eiro",
|
||||||
"ml": "യൂറോ",
|
"ml": "യൂറോ",
|
||||||
"ms": "Euro",
|
"ms": "Euro",
|
||||||
@@ -2759,7 +2759,7 @@
|
|||||||
"pa": "ਜਪਾਨੀ ਯੈੱਨ",
|
"pa": "ਜਪਾਨੀ ਯੈੱਨ",
|
||||||
"pl": "jen",
|
"pl": "jen",
|
||||||
"pt": "iene",
|
"pt": "iene",
|
||||||
"ro": "yen",
|
"ro": "yeni",
|
||||||
"ru": "японская иена",
|
"ru": "японская иена",
|
||||||
"sk": "jen",
|
"sk": "jen",
|
||||||
"sl": "japonski jen",
|
"sl": "japonski jen",
|
||||||
@@ -3337,7 +3337,6 @@
|
|||||||
"fi": "Libyan dinaari",
|
"fi": "Libyan dinaari",
|
||||||
"fr": "dinar libyen",
|
"fr": "dinar libyen",
|
||||||
"ga": "dinar na Libia",
|
"ga": "dinar na Libia",
|
||||||
"gl": "dinar libio",
|
|
||||||
"he": "דינר לובי ",
|
"he": "דינר לובי ",
|
||||||
"hr": "Libijski dinar",
|
"hr": "Libijski dinar",
|
||||||
"hu": "líbiai dinár",
|
"hu": "líbiai dinár",
|
||||||
@@ -3540,7 +3539,6 @@
|
|||||||
"ja": "チャット",
|
"ja": "チャット",
|
||||||
"ko": "미얀마 짯",
|
"ko": "미얀마 짯",
|
||||||
"lt": "Kijatas",
|
"lt": "Kijatas",
|
||||||
"lv": "Kjats",
|
|
||||||
"ml": "ബർമ്മീസ് ക്യാറ്റ്",
|
"ml": "ബർമ്മീസ് ക്യാറ്റ്",
|
||||||
"nl": "Myanmarese kyat",
|
"nl": "Myanmarese kyat",
|
||||||
"oc": "Kyat",
|
"oc": "Kyat",
|
||||||
@@ -4312,7 +4310,7 @@
|
|||||||
"ar": "بيسو فلبيني",
|
"ar": "بيسو فلبيني",
|
||||||
"bg": "Филипинско песо",
|
"bg": "Филипинско песо",
|
||||||
"ca": "peso filipí",
|
"ca": "peso filipí",
|
||||||
"cs": "filipínské peso",
|
"cs": "Filipínské peso",
|
||||||
"de": "philippinischer Peso",
|
"de": "philippinischer Peso",
|
||||||
"en": "Philippine peso",
|
"en": "Philippine peso",
|
||||||
"eo": "filipina peso",
|
"eo": "filipina peso",
|
||||||
@@ -4616,7 +4614,7 @@
|
|||||||
"fi": "Serbian dinaari",
|
"fi": "Serbian dinaari",
|
||||||
"fr": "dinar serbe",
|
"fr": "dinar serbe",
|
||||||
"ga": "Dinar na Seirbia",
|
"ga": "Dinar na Seirbia",
|
||||||
"gl": "dinar serbio",
|
"gl": "Dinar serbio",
|
||||||
"he": "דינר סרבי",
|
"he": "דינר סרבי",
|
||||||
"hr": "srpski dinar",
|
"hr": "srpski dinar",
|
||||||
"hu": "szerb dinár",
|
"hu": "szerb dinár",
|
||||||
@@ -5333,7 +5331,7 @@
|
|||||||
"pa": "ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ",
|
"pa": "ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ",
|
||||||
"pl": "Somoni",
|
"pl": "Somoni",
|
||||||
"pt": "Somoni",
|
"pt": "Somoni",
|
||||||
"ro": "somoni tadjic",
|
"ro": "Somoni tadjic",
|
||||||
"ru": "таджикский сомони",
|
"ru": "таджикский сомони",
|
||||||
"sk": "tadžický som",
|
"sk": "tadžický som",
|
||||||
"sl": "tadžikistanski somoni",
|
"sl": "tadžikistanski somoni",
|
||||||
@@ -5396,7 +5394,6 @@
|
|||||||
"fi": "Tunisian dinaari",
|
"fi": "Tunisian dinaari",
|
||||||
"fr": "dinar tunisien",
|
"fr": "dinar tunisien",
|
||||||
"ga": "dinar na Túinéise",
|
"ga": "dinar na Túinéise",
|
||||||
"gl": "dinar tunisiano",
|
|
||||||
"he": "דינר תוניסאי",
|
"he": "דינר תוניסאי",
|
||||||
"hr": "tuniski dinar",
|
"hr": "tuniski dinar",
|
||||||
"hu": "tunéziai dinár",
|
"hu": "tunéziai dinár",
|
||||||
@@ -5769,7 +5766,7 @@
|
|||||||
"fi": "Uruguayn peso",
|
"fi": "Uruguayn peso",
|
||||||
"fr": "peso uruguayen",
|
"fr": "peso uruguayen",
|
||||||
"ga": "peso Uragua",
|
"ga": "peso Uragua",
|
||||||
"gl": "peso uruguaio",
|
"gl": "Peso uruguaio",
|
||||||
"he": "פסו של אורוגוואי",
|
"he": "פסו של אורוגוואי",
|
||||||
"hr": "Urugvajski pezo",
|
"hr": "Urugvajski pezo",
|
||||||
"hu": "uruguayi peso",
|
"hu": "uruguayi peso",
|
||||||
@@ -6150,7 +6147,7 @@
|
|||||||
"oc": "Drechs de tiratge Especials",
|
"oc": "Drechs de tiratge Especials",
|
||||||
"pl": "specjalne prawa ciągnienia",
|
"pl": "specjalne prawa ciągnienia",
|
||||||
"pt": "direitos especiais de saque",
|
"pt": "direitos especiais de saque",
|
||||||
"ro": "drepturi speciale de tragere",
|
"ro": "Drepturi speciale de tragere",
|
||||||
"ru": "специальные права заимствования",
|
"ru": "специальные права заимствования",
|
||||||
"sk": "Zvláštne práva čerpania",
|
"sk": "Zvláštne práva čerpania",
|
||||||
"sl": "posebne pravice črpanja",
|
"sl": "posebne pravice črpanja",
|
||||||
@@ -6228,7 +6225,6 @@
|
|||||||
"ja": "CFPフラン",
|
"ja": "CFPフラン",
|
||||||
"ko": "CFP 프랑",
|
"ko": "CFP 프랑",
|
||||||
"lt": "CFP frankas",
|
"lt": "CFP frankas",
|
||||||
"lv": "Klusā okeāna franks",
|
|
||||||
"ms": "Franc CFP",
|
"ms": "Franc CFP",
|
||||||
"nl": "CFP-frank",
|
"nl": "CFP-frank",
|
||||||
"oc": "Franc CFP",
|
"oc": "Franc CFP",
|
||||||
@@ -7059,7 +7055,6 @@
|
|||||||
"bolivjano": "BOB",
|
"bolivjano": "BOB",
|
||||||
"bolivya bolivianosu": "BOB",
|
"bolivya bolivianosu": "BOB",
|
||||||
"bolivya bolivyanosu": "BOB",
|
"bolivya bolivyanosu": "BOB",
|
||||||
"boliwiano": "BOB",
|
|
||||||
"bolívar digital": "VED",
|
"bolívar digital": "VED",
|
||||||
"bolívar soberano": "VES",
|
"bolívar soberano": "VES",
|
||||||
"bolívar sobirà": "VES",
|
"bolívar sobirà": "VES",
|
||||||
@@ -8430,7 +8425,6 @@
|
|||||||
"drame arménio": "AMD",
|
"drame arménio": "AMD",
|
||||||
"dramm": "AMD",
|
"dramm": "AMD",
|
||||||
"drechs de tiratge especials": "XDR",
|
"drechs de tiratge especials": "XDR",
|
||||||
"drept special de tragere": "XDR",
|
|
||||||
"drepturi speciale de tragere": "XDR",
|
"drepturi speciale de tragere": "XDR",
|
||||||
"drets especials de gir": "XDR",
|
"drets especials de gir": "XDR",
|
||||||
"droits de tirage speciaux": "XDR",
|
"droits de tirage speciaux": "XDR",
|
||||||
@@ -9524,8 +9518,6 @@
|
|||||||
"kíp lào": "LAK",
|
"kíp lào": "LAK",
|
||||||
"kīp": "LAK",
|
"kīp": "LAK",
|
||||||
"kjat": "MMK",
|
"kjat": "MMK",
|
||||||
"kjats": "MMK",
|
|
||||||
"klusā okeāna franks": "XPF",
|
|
||||||
"km": "BAM",
|
"km": "BAM",
|
||||||
"kmf": "KMF",
|
"kmf": "KMF",
|
||||||
"koeweitse dinar": "KWD",
|
"koeweitse dinar": "KWD",
|
||||||
@@ -10031,7 +10023,6 @@
|
|||||||
"lire sterline": "GBP",
|
"lire sterline": "GBP",
|
||||||
"lire turque": "TRY",
|
"lire turque": "TRY",
|
||||||
"lisente": "LSL",
|
"lisente": "LSL",
|
||||||
"list of syrian coins": "SYP",
|
|
||||||
"liura de gibartar": "GIP",
|
"liura de gibartar": "GIP",
|
||||||
"liura egipciana": "EGP",
|
"liura egipciana": "EGP",
|
||||||
"liura esterlina": "GBP",
|
"liura esterlina": "GBP",
|
||||||
@@ -11322,6 +11313,7 @@
|
|||||||
"riel camboxano": "KHR",
|
"riel camboxano": "KHR",
|
||||||
"riel camboyano": "KHR",
|
"riel camboyano": "KHR",
|
||||||
"riel campuchia": "KHR",
|
"riel campuchia": "KHR",
|
||||||
|
"riel kambodżański": "KHR",
|
||||||
"riel kamboja": "KHR",
|
"riel kamboja": "KHR",
|
||||||
"riel na cambóide": "KHR",
|
"riel na cambóide": "KHR",
|
||||||
"rietumāfrikas franks": "XOF",
|
"rietumāfrikas franks": "XOF",
|
||||||
@@ -12265,7 +12257,6 @@
|
|||||||
"thaise baht": "THB",
|
"thaise baht": "THB",
|
||||||
"thajský baht": "THB",
|
"thajský baht": "THB",
|
||||||
"thb": "THB",
|
"thb": "THB",
|
||||||
"the australian dollar": "AUD",
|
|
||||||
"thebe": "BWP",
|
"thebe": "BWP",
|
||||||
"third belarusian ruble": "BYN",
|
"third belarusian ruble": "BYN",
|
||||||
"tical": "THB",
|
"tical": "THB",
|
||||||
@@ -12749,7 +12740,6 @@
|
|||||||
"yen": "JPY",
|
"yen": "JPY",
|
||||||
"yen giapponese": "JPY",
|
"yen giapponese": "JPY",
|
||||||
"yen japones": "JPY",
|
"yen japones": "JPY",
|
||||||
"yen japonez": "JPY",
|
|
||||||
"yen japonés": "JPY",
|
"yen japonés": "JPY",
|
||||||
"yeni": "JPY",
|
"yeni": "JPY",
|
||||||
"yeni i̇srail şekeli": "ILS",
|
"yeni i̇srail şekeli": "ILS",
|
||||||
@@ -12816,6 +12806,7 @@
|
|||||||
"zimbabwe zig": "ZWG",
|
"zimbabwe zig": "ZWG",
|
||||||
"zimbabwean dollar": "ZWL",
|
"zimbabwean dollar": "ZWL",
|
||||||
"zimbabwean gold": "ZWG",
|
"zimbabwean gold": "ZWG",
|
||||||
|
"zimbabwean zig": "ZWG",
|
||||||
"zimbabwen kulta": "ZWG",
|
"zimbabwen kulta": "ZWG",
|
||||||
"zimbabwiansky zlatý": "ZWG",
|
"zimbabwiansky zlatý": "ZWG",
|
||||||
"zimbabwský dolar": "ZWL",
|
"zimbabwský dolar": "ZWL",
|
||||||
@@ -12974,7 +12965,6 @@
|
|||||||
"FKP",
|
"FKP",
|
||||||
"EGP"
|
"EGP"
|
||||||
],
|
],
|
||||||
"£S": "SYP",
|
|
||||||
"£e": "EGP",
|
"£e": "EGP",
|
||||||
"£s": "SYP",
|
"£s": "SYP",
|
||||||
"¥": [
|
"¥": [
|
||||||
@@ -14969,8 +14959,6 @@
|
|||||||
"فورنت مجري": "HUF",
|
"فورنت مجري": "HUF",
|
||||||
"فورينت مجري": "HUF",
|
"فورينت مجري": "HUF",
|
||||||
"فِرَنْكٌ رُوَنْدِيٌّ": "RWF",
|
"فِرَنْكٌ رُوَنْدِيٌّ": "RWF",
|
||||||
"قائمة النقود المعدنية السورية": "SYP",
|
|
||||||
"قائمة عملات سوريا المعدنية": "SYP",
|
|
||||||
"ك": "KWD",
|
"ك": "KWD",
|
||||||
"كتزال غواتيمالي": "GTQ",
|
"كتزال غواتيمالي": "GTQ",
|
||||||
"كرونة آيسلندية": "ISK",
|
"كرونة آيسلندية": "ISK",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -6544,103 +6544,6 @@
|
|||||||
"to-TO": "to"
|
"to-TO": "to"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"neosearch": {
|
|
||||||
"all_locale": null,
|
|
||||||
"custom": {
|
|
||||||
"countrycodes": [
|
|
||||||
"AE",
|
|
||||||
"AM",
|
|
||||||
"AR",
|
|
||||||
"AT",
|
|
||||||
"AU",
|
|
||||||
"AZ",
|
|
||||||
"BE",
|
|
||||||
"BG",
|
|
||||||
"BH",
|
|
||||||
"BO",
|
|
||||||
"BR",
|
|
||||||
"BY",
|
|
||||||
"CA",
|
|
||||||
"CH",
|
|
||||||
"CL",
|
|
||||||
"CN",
|
|
||||||
"CO",
|
|
||||||
"CY",
|
|
||||||
"CZ",
|
|
||||||
"DE",
|
|
||||||
"DK",
|
|
||||||
"DZ",
|
|
||||||
"EC",
|
|
||||||
"EE",
|
|
||||||
"EG",
|
|
||||||
"ES",
|
|
||||||
"FI",
|
|
||||||
"FR",
|
|
||||||
"GB",
|
|
||||||
"GE",
|
|
||||||
"GH",
|
|
||||||
"GR",
|
|
||||||
"HK",
|
|
||||||
"HR",
|
|
||||||
"HU",
|
|
||||||
"ID",
|
|
||||||
"IE",
|
|
||||||
"IL",
|
|
||||||
"IN",
|
|
||||||
"IT",
|
|
||||||
"JO",
|
|
||||||
"JP",
|
|
||||||
"KE",
|
|
||||||
"KG",
|
|
||||||
"KR",
|
|
||||||
"KW",
|
|
||||||
"KZ",
|
|
||||||
"LB",
|
|
||||||
"LT",
|
|
||||||
"LU",
|
|
||||||
"LV",
|
|
||||||
"MA",
|
|
||||||
"MD",
|
|
||||||
"MT",
|
|
||||||
"MX",
|
|
||||||
"MY",
|
|
||||||
"NG",
|
|
||||||
"NL",
|
|
||||||
"NO",
|
|
||||||
"NZ",
|
|
||||||
"OM",
|
|
||||||
"PE",
|
|
||||||
"PH",
|
|
||||||
"PL",
|
|
||||||
"PT",
|
|
||||||
"PY",
|
|
||||||
"QA",
|
|
||||||
"RO",
|
|
||||||
"RU",
|
|
||||||
"SA",
|
|
||||||
"SE",
|
|
||||||
"SG",
|
|
||||||
"SI",
|
|
||||||
"SK",
|
|
||||||
"TH",
|
|
||||||
"TJ",
|
|
||||||
"TM",
|
|
||||||
"TN",
|
|
||||||
"TR",
|
|
||||||
"TW",
|
|
||||||
"UA",
|
|
||||||
"US",
|
|
||||||
"UY",
|
|
||||||
"UZ",
|
|
||||||
"VE",
|
|
||||||
"VN",
|
|
||||||
"ZA"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"data_type": "traits_v1",
|
|
||||||
"languages": {},
|
|
||||||
"regions": {}
|
|
||||||
},
|
|
||||||
"odysee": {
|
"odysee": {
|
||||||
"all_locale": null,
|
"all_locale": null,
|
||||||
"custom": {},
|
"custom": {},
|
||||||
@@ -9682,4 +9585,4 @@
|
|||||||
},
|
},
|
||||||
"regions": {}
|
"regions": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,7 @@
|
|||||||
],
|
],
|
||||||
"ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}",
|
"ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}",
|
||||||
"versions": [
|
"versions": [
|
||||||
"152.0",
|
"151.0",
|
||||||
"151.0"
|
"150.0"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -3272,7 +3272,7 @@
|
|||||||
"Q128822": {
|
"Q128822": {
|
||||||
"si_name": "Q182429",
|
"si_name": "Q182429",
|
||||||
"symbol": "kn",
|
"symbol": "kn",
|
||||||
"to_si_factor": 0.514
|
"to_si_factor": 0.5144444444444445
|
||||||
},
|
},
|
||||||
"Q12912288": {
|
"Q12912288": {
|
||||||
"si_name": null,
|
"si_name": null,
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
"""Magnific_ is a database for images.
|
|
||||||
|
|
||||||
.. _Magnific: https://www.magnific.com
|
|
||||||
"""
|
|
||||||
|
|
||||||
from urllib.parse import urlencode
|
|
||||||
|
|
||||||
import typing as t
|
|
||||||
|
|
||||||
from searx.result_types import EngineResults
|
|
||||||
|
|
||||||
if t.TYPE_CHECKING:
|
|
||||||
from searx.extended_types import SXNG_Response
|
|
||||||
from searx.search.processors import OnlineParams
|
|
||||||
|
|
||||||
|
|
||||||
about = {
|
|
||||||
"website": "https://www.magnific.com",
|
|
||||||
"wikidata_id": "Q104211654",
|
|
||||||
"official_api_documentation": None,
|
|
||||||
"use_official_api": False,
|
|
||||||
"require_api_key": False,
|
|
||||||
"results": "JSON",
|
|
||||||
}
|
|
||||||
|
|
||||||
base_url = "https://www.magnific.com"
|
|
||||||
|
|
||||||
categories = ["images"]
|
|
||||||
paging = True
|
|
||||||
|
|
||||||
free_images_only = True
|
|
||||||
"""
|
|
||||||
Whether to only load images that may be used for free, without a Magnific account.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def request(query: str, params: "OnlineParams") -> None:
|
|
||||||
args = {"term": query, "filters[ai-generated][excluded]": 1, "page": params["pageno"], "locale": "en"}
|
|
||||||
if free_images_only:
|
|
||||||
args["filters[license]"] = "free"
|
|
||||||
|
|
||||||
params["headers"]["Referer"] = f"{base_url}/search"
|
|
||||||
params["url"] = f"{base_url}/api/regular/search?{urlencode(args)}"
|
|
||||||
|
|
||||||
|
|
||||||
def response(resp: "SXNG_Response"):
|
|
||||||
res = EngineResults()
|
|
||||||
|
|
||||||
result: dict[str, t.Any] # TBH: dict[str, t.Any]
|
|
||||||
for result in resp.json()["items"]:
|
|
||||||
res.add(
|
|
||||||
res.types.Image(
|
|
||||||
title=result["name"],
|
|
||||||
url=result["url"],
|
|
||||||
thumbnail_src=result["preview"]["url"],
|
|
||||||
img_src=result["preview"]["url"],
|
|
||||||
resolution=f"{result['preview']['width']}x{result['preview']['height']}",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
return res
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
"""Neosearch_ aims to be a privacy-first alternative to Google.
|
|
||||||
|
|
||||||
.. _Neosearch: https://neosearch.org/About
|
|
||||||
"""
|
|
||||||
|
|
||||||
from json import loads
|
|
||||||
import typing as t
|
|
||||||
from urllib.parse import urlencode
|
|
||||||
|
|
||||||
from searx.extended_types import SXNG_Response
|
|
||||||
from searx.result_types import EngineResults
|
|
||||||
|
|
||||||
if t.TYPE_CHECKING:
|
|
||||||
from searx.enginelib.traits import EngineTraits
|
|
||||||
from searx.search.processors import OnlineParams
|
|
||||||
|
|
||||||
traits: EngineTraits
|
|
||||||
|
|
||||||
about = {
|
|
||||||
"website": "https://neosearch.org",
|
|
||||||
"official_api_documentation": None,
|
|
||||||
"use_official_api": False,
|
|
||||||
"require_api_key": False,
|
|
||||||
"results": "JSON",
|
|
||||||
}
|
|
||||||
|
|
||||||
base_url = "https://neosearch.org"
|
|
||||||
categories = ["general"]
|
|
||||||
|
|
||||||
paging = False
|
|
||||||
|
|
||||||
|
|
||||||
def request(query: str, params: "OnlineParams"):
|
|
||||||
args = {"q": query, "generate": "auto"}
|
|
||||||
countrycode = params["searxng_locale"].split("-")[-1].upper()
|
|
||||||
if countrycode in traits.custom["countrycodes"]:
|
|
||||||
args["loc"] = countrycode
|
|
||||||
params["url"] = f"{base_url}/search?{urlencode(args)}"
|
|
||||||
|
|
||||||
|
|
||||||
def response(resp: "SXNG_Response") -> EngineResults:
|
|
||||||
res = EngineResults()
|
|
||||||
|
|
||||||
# first line contains something like `{"location": "de"}`
|
|
||||||
# second line contains the actual results
|
|
||||||
json_resp = loads(resp.text.splitlines()[-1])
|
|
||||||
for lens in json_resp["lenses"]:
|
|
||||||
for category in lens["categories"]:
|
|
||||||
for result in category["links"]:
|
|
||||||
res.add(
|
|
||||||
res.types.MainResult(
|
|
||||||
url=result["url"],
|
|
||||||
title=result["title"],
|
|
||||||
content=result["snippet"] or result["description"],
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
for suggestion in json_resp.get("suggestions", []):
|
|
||||||
res.add(res.types.LegacyResult(suggestion=suggestion))
|
|
||||||
|
|
||||||
return res
|
|
||||||
|
|
||||||
|
|
||||||
def fetch_traits(engine_traits: "EngineTraits") -> None:
|
|
||||||
# pylint: disable=import-outside-toplevel
|
|
||||||
from searx.network import get
|
|
||||||
from searx.utils import extr, js_obj_str_to_python
|
|
||||||
from babel.core import get_global
|
|
||||||
|
|
||||||
resp = get(base_url)
|
|
||||||
|
|
||||||
locations_js_raw = extr(resp.text, "const LOCATIONS = ", ";")
|
|
||||||
if not locations_js_raw:
|
|
||||||
raise RuntimeError("failed to find locations in neosearch HTML response")
|
|
||||||
locations: list[dict[str, str]] = js_obj_str_to_python(locations_js_raw)
|
|
||||||
|
|
||||||
babel_reg_list = get_global("territory_languages").keys()
|
|
||||||
|
|
||||||
countrycodes: list[str] = []
|
|
||||||
for loc in locations:
|
|
||||||
_reg = loc["code"].upper()
|
|
||||||
if _reg not in babel_reg_list:
|
|
||||||
print(f"ERROR: region tag {_reg} is unknown by babel")
|
|
||||||
continue
|
|
||||||
countrycodes.append(_reg)
|
|
||||||
|
|
||||||
countrycodes.sort()
|
|
||||||
engine_traits.custom["countrycodes"] = countrycodes
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
"""Picjumbo_ provides free stock photos.
|
|
||||||
|
|
||||||
.. _Picjumbo: https://picjumbo.com
|
|
||||||
"""
|
|
||||||
|
|
||||||
from urllib.parse import urlparse, urlunparse
|
|
||||||
import typing as t
|
|
||||||
|
|
||||||
from lxml import html
|
|
||||||
|
|
||||||
from searx.result_types import EngineResults
|
|
||||||
from searx.utils import eval_xpath, eval_xpath_list, extract_text
|
|
||||||
|
|
||||||
if t.TYPE_CHECKING:
|
|
||||||
from searx.extended_types import SXNG_Response
|
|
||||||
from searx.search.processors import OnlineParams
|
|
||||||
|
|
||||||
|
|
||||||
about = {
|
|
||||||
"website": "https://picjumbo.com",
|
|
||||||
"wikidata_id": None,
|
|
||||||
"official_api_documentation": None,
|
|
||||||
"use_official_api": False,
|
|
||||||
"require_api_key": False,
|
|
||||||
"results": "HTML",
|
|
||||||
}
|
|
||||||
|
|
||||||
base_url = "https://picjumbo.com"
|
|
||||||
|
|
||||||
categories = ["images"]
|
|
||||||
paging = True
|
|
||||||
|
|
||||||
|
|
||||||
def request(query: str, params: "OnlineParams") -> None:
|
|
||||||
params["url"] = f"{base_url}/search/{query}/page/{params['pageno']}"
|
|
||||||
|
|
||||||
|
|
||||||
def _get_max_res_url(url: str) -> str:
|
|
||||||
"""Get the maximum resolution of the image based on the thumbnail URL."""
|
|
||||||
parsed_url = urlparse(url)
|
|
||||||
max_res_url = parsed_url._replace(query="w=10000&quality=100")
|
|
||||||
return urlunparse(max_res_url)
|
|
||||||
|
|
||||||
|
|
||||||
def response(resp: "SXNG_Response"):
|
|
||||||
res = EngineResults()
|
|
||||||
|
|
||||||
doc = html.fromstring(resp.text)
|
|
||||||
|
|
||||||
for result in eval_xpath_list(doc, "//div[contains(@class, 'photo_query')]/div[contains(@class, 'photo_item')]"):
|
|
||||||
thumbnail = extract_text(eval_xpath(result, ".//img[contains(@class, 'image')]/@src")) or ""
|
|
||||||
res.add(
|
|
||||||
res.types.Image(
|
|
||||||
url=extract_text(eval_xpath(result, ".//a[contains(@class, 'image')]/@href")) or "",
|
|
||||||
title=extract_text(eval_xpath(result, ".//h3")) or "",
|
|
||||||
content=extract_text(eval_xpath(result, ".//meta[@itemprop='keywords']/@content")) or "",
|
|
||||||
thumbnail_src=thumbnail,
|
|
||||||
img_src=_get_max_res_url(thumbnail),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
return res
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
"""Shopify stock photos provides royalty-free images, intended for use with
|
|
||||||
Shopify.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import typing as t
|
|
||||||
from urllib.parse import urlencode
|
|
||||||
|
|
||||||
from lxml import html
|
|
||||||
|
|
||||||
from searx.result_types import EngineResults
|
|
||||||
from searx.utils import eval_xpath, eval_xpath_list, extract_text
|
|
||||||
|
|
||||||
if t.TYPE_CHECKING:
|
|
||||||
from searx.extended_types import SXNG_Response
|
|
||||||
from searx.search.processors import OnlineParams
|
|
||||||
|
|
||||||
|
|
||||||
about = {
|
|
||||||
"website": "https://www.shopify.com/stock-photos",
|
|
||||||
"wikidata_id": None,
|
|
||||||
"official_api_documentation": None,
|
|
||||||
"use_official_api": False,
|
|
||||||
"require_api_key": False,
|
|
||||||
"results": "HTML",
|
|
||||||
}
|
|
||||||
|
|
||||||
base_url = "https://www.shopify.com"
|
|
||||||
|
|
||||||
categories = ["images"]
|
|
||||||
paging = True
|
|
||||||
|
|
||||||
|
|
||||||
def request(query: str, params: "OnlineParams") -> None:
|
|
||||||
args = {"q": query, "page": params["pageno"]}
|
|
||||||
params["url"] = f"{base_url}/stock-photos/photos/search?{urlencode(args)}"
|
|
||||||
|
|
||||||
|
|
||||||
def _get_download_url(url: str) -> str:
|
|
||||||
"""Get the link to the full quality image."""
|
|
||||||
query_start = url.find("?")
|
|
||||||
return url[:query_start] + "/download?quality=premium"
|
|
||||||
|
|
||||||
|
|
||||||
def response(resp: "SXNG_Response"):
|
|
||||||
res = EngineResults()
|
|
||||||
|
|
||||||
doc = html.fromstring(resp.text)
|
|
||||||
|
|
||||||
for result in eval_xpath_list(doc, "//div[contains(@class, 'js-masonry-grid')]/div"):
|
|
||||||
url = base_url + (extract_text(eval_xpath(result, ".//a[contains(@class, 'photo-tile')]/@href")) or "")
|
|
||||||
res.add(
|
|
||||||
res.types.Image(
|
|
||||||
url=url,
|
|
||||||
title=extract_text(eval_xpath(result, ".//p[contains(@class, 'photo-tile__title')]")) or "",
|
|
||||||
thumbnail_src=extract_text(eval_xpath(result, ".//img[contains(@class, 'photo-card__image')]/@src"))
|
|
||||||
or "",
|
|
||||||
img_src=_get_download_url(url),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
return res
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
"""Stocksnap_ is a search engine for CC0-licensed images.
|
|
||||||
|
|
||||||
.. _Stocksnap: https://stocksnap.io
|
|
||||||
"""
|
|
||||||
|
|
||||||
import typing as t
|
|
||||||
|
|
||||||
from searx.result_types import EngineResults
|
|
||||||
|
|
||||||
if t.TYPE_CHECKING:
|
|
||||||
from searx.extended_types import SXNG_Response
|
|
||||||
from searx.search.processors import OnlineParams
|
|
||||||
|
|
||||||
|
|
||||||
about = {
|
|
||||||
"website": "https://stocksnap.io",
|
|
||||||
"wikidata_id": None,
|
|
||||||
"official_api_documentation": None,
|
|
||||||
"use_official_api": False,
|
|
||||||
"require_api_key": False,
|
|
||||||
"results": "JSON",
|
|
||||||
}
|
|
||||||
# otherwise all requests get blocked, probably HTTP2 fingerprinting
|
|
||||||
enable_http2 = False
|
|
||||||
|
|
||||||
base_url = "https://stocksnap.io"
|
|
||||||
cdn_url = "https://cdn.stocksnap.io"
|
|
||||||
|
|
||||||
categories = ["images"]
|
|
||||||
paging = True
|
|
||||||
|
|
||||||
|
|
||||||
def request(query: str, params: "OnlineParams") -> None:
|
|
||||||
params["url"] = f"{base_url}/api/search-photos/{query}/relevance/desc/{params['pageno']}"
|
|
||||||
|
|
||||||
|
|
||||||
def response(resp: "SXNG_Response"):
|
|
||||||
res = EngineResults()
|
|
||||||
|
|
||||||
result: dict[str, str] # TBH: dict[str, t.Any]
|
|
||||||
for result in resp.json()["results"]:
|
|
||||||
slug = "-".join(result['keywords'][:1]) + "-" + result["img_id"]
|
|
||||||
res.add(
|
|
||||||
res.types.Image(
|
|
||||||
title=result["tags"],
|
|
||||||
url=f"{base_url}/photo/{slug}",
|
|
||||||
thumbnail_src=f"{cdn_url}/img-thumbs/280h/{result['img_id']}.jpg",
|
|
||||||
img_src=f"{cdn_url}/img-thumbs/960w/{result['img_id']}.jpg",
|
|
||||||
img_format="JPEG",
|
|
||||||
resolution=f"{result['img_width']}x{result['img_height']}",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
return res
|
|
||||||
@@ -1585,11 +1585,6 @@ engines:
|
|||||||
disabled: true
|
disabled: true
|
||||||
inactive: true
|
inactive: true
|
||||||
|
|
||||||
- name: magnific
|
|
||||||
engine: magnific
|
|
||||||
shortcut: mag
|
|
||||||
disabled: true
|
|
||||||
|
|
||||||
- name: marginalia
|
- name: marginalia
|
||||||
engine: marginalia
|
engine: marginalia
|
||||||
shortcut: mar
|
shortcut: mar
|
||||||
@@ -1862,11 +1857,6 @@ engines:
|
|||||||
engine: photon
|
engine: photon
|
||||||
shortcut: ph
|
shortcut: ph
|
||||||
|
|
||||||
- name: picjumbo
|
|
||||||
engine: picjumbo
|
|
||||||
shortcut: pj
|
|
||||||
disabled: true
|
|
||||||
|
|
||||||
- name: pinterest
|
- name: pinterest
|
||||||
engine: pinterest
|
engine: pinterest
|
||||||
shortcut: pin
|
shortcut: pin
|
||||||
@@ -2175,11 +2165,6 @@ engines:
|
|||||||
engine: sepiasearch
|
engine: sepiasearch
|
||||||
shortcut: sep
|
shortcut: sep
|
||||||
|
|
||||||
- name: shopify stock
|
|
||||||
engine: shopify_stock
|
|
||||||
shortcut: shs
|
|
||||||
disabled: true
|
|
||||||
|
|
||||||
- name: sogou
|
- name: sogou
|
||||||
engine: sogou
|
engine: sogou
|
||||||
shortcut: sogou
|
shortcut: sogou
|
||||||
@@ -2210,11 +2195,6 @@ engines:
|
|||||||
api_site: 'stackoverflow'
|
api_site: 'stackoverflow'
|
||||||
categories: [it, q&a]
|
categories: [it, q&a]
|
||||||
|
|
||||||
- name: stocksnap
|
|
||||||
engine: stocksnap
|
|
||||||
shortcut: sto
|
|
||||||
disabled: true
|
|
||||||
|
|
||||||
- name: askubuntu
|
- name: askubuntu
|
||||||
engine: stackexchange
|
engine: stackexchange
|
||||||
shortcut: ubuntu
|
shortcut: ubuntu
|
||||||
@@ -2854,12 +2834,6 @@ engines:
|
|||||||
shortcut: nvrv
|
shortcut: nvrv
|
||||||
disabled: true
|
disabled: true
|
||||||
|
|
||||||
- name: neosearch
|
|
||||||
engine: neosearch
|
|
||||||
shortcut: neo
|
|
||||||
disabled: true
|
|
||||||
inactive: true
|
|
||||||
|
|
||||||
- name: rubygems
|
- name: rubygems
|
||||||
shortcut: rbg
|
shortcut: rbg
|
||||||
engine: xpath
|
engine: xpath
|
||||||
|
|||||||
@@ -74,8 +74,6 @@ sxng_locales = (
|
|||||||
('ja-JP', '日本語', '日本', 'Japanese', '\U0001f1ef\U0001f1f5'),
|
('ja-JP', '日本語', '日本', 'Japanese', '\U0001f1ef\U0001f1f5'),
|
||||||
('ko', '한국어', '', 'Korean', '\U0001f310'),
|
('ko', '한국어', '', 'Korean', '\U0001f310'),
|
||||||
('ko-KR', '한국어', '대한민국', 'Korean', '\U0001f1f0\U0001f1f7'),
|
('ko-KR', '한국어', '대한민국', 'Korean', '\U0001f1f0\U0001f1f7'),
|
||||||
('mi', 'Māori', '', 'Māori', '\U0001f310'),
|
|
||||||
('mi-NZ', 'Māori', 'Aotearoa', 'Māori', '\U0001f1f3\U0001f1ff'),
|
|
||||||
('nb', 'Norsk Bokmål', '', 'Norwegian Bokmål', '\U0001f310'),
|
('nb', 'Norsk Bokmål', '', 'Norwegian Bokmål', '\U0001f310'),
|
||||||
('nb-NO', 'Norsk Bokmål', 'Norge', 'Norwegian Bokmål', '\U0001f1f3\U0001f1f4'),
|
('nb-NO', 'Norsk Bokmål', 'Norge', 'Norwegian Bokmål', '\U0001f1f3\U0001f1f4'),
|
||||||
('nl', 'Nederlands', '', 'Dutch', '\U0001f310'),
|
('nl', 'Nederlands', '', 'Dutch', '\U0001f310'),
|
||||||
|
|||||||
Reference in New Issue
Block a user