on master help sign in
[mod] add external_urls.json and wikidata_units.json
commited6696e6bf13d2a1f7536fe05d043d81f57f4081 authorAlexandre Flament <alex@al-f.net> dateMon 26 Oct 2020, 19:19 (6 years ago) parentd3d50ef
5 files changed+1290−1
searx/data/__init__.py+4−1 searx/data/external_urls.json+156 searx/data/wikidata_units.json+1006 searx/external_urls.py+77 utils/fetch_wikidata_units.py+47
searx/data/__init__.py+4−1
@@ -2,7 +2,8 @@ import json
22from pathlib import Path
33
44
5−__init__ = ['ENGINES_LANGUGAGES', 'CURRENCIES', 'USER_AGENTS', 'bangs_loader', 'ahmia_blacklist_loader']
5+__init__ = ['ENGINES_LANGUGAGES', 'CURRENCIES', 'USER_AGENTS', 'EXTERNAL_URLS', 'WIKIDATA_UNITS',
6+ 'bangs_loader', 'ahmia_blacklist_loader']
67data_dir = Path(__file__).parent
78
89
@@ -24,3 +25,5 @@ def ahmia_blacklist_loader():
2425ENGINES_LANGUAGES = load('engines_languages.json')
2526CURRENCIES = load('currencies.json')
2627USER_AGENTS = load('useragents.json')
28+EXTERNAL_URLS = load('external_urls.json')
29+WIKIDATA_UNITS = load('wikidata_units.json')
searx/data/external_urls.jsonnew file+156
@@ -0,0 +1,156 @@
1+{
2+ "facebook_profile": {
3+ "category_name": "Facebook",
4+ "url_name": "Facebook profile",
5+ "urls": {
6+ "default": "https://facebook.com/$1"
7+ }
8+ },
9+ "youtube_channel": {
10+ "category_name": "YouTube",
11+ "url_name": "YouTube channel",
12+ "urls": {
13+ "default": "https://www.youtube.com/channel/$1"
14+ }
15+ },
16+ "youtube_video": {
17+ "category_name": "YouTube",
18+ "url_name": "YouTube video",
19+ "urls": {
20+ "default": "https://www.youtube.com/watch?v=$1"
21+ }
22+ },
23+ "twitter_profile": {
24+ "category_name": "Twitter",
25+ "url_name": "Twitter profile",
26+ "urls": {
27+ "default": "https://twitter.com/$1"
28+ }
29+ },
30+ "instagram_profile": {
31+ "category_name": "Instagram",
32+ "url_name": "Instagram profile",
33+ "urls": {
34+ "default": "https://www.instagram.com/$1"
35+ }
36+ },
37+ "imdb_title": {
38+ "category_name": "IMDB",
39+ "url_name": "IMDB title",
40+ "urls": {
41+ "default": "https://www.imdb.com/title/$1"
42+ }
43+ },
44+ "imdb_name": {
45+ "category_name": "IMDB",
46+ "url_name": "IMDB name",
47+ "urls": {
48+ "default": "https://www.imdb.com/name/$1"
49+ }
50+ },
51+ "imdb_character": {
52+ "category_name": "IMDB",
53+ "url_name": "IMDB character",
54+ "urls": {
55+ "default": "https://www.imdb.com/character/$1"
56+ }
57+ },
58+ "imdb_company": {
59+ "category_name": "IMDB",
60+ "url_name": "IMDB company",
61+ "urls": {
62+ "default": "https://www.imdb.com/company/$1"
63+ }
64+ },
65+ "imdb_event": {
66+ "category_name": "IMDB",
67+ "url_name": "IMDB event",
68+ "urls": {
69+ "default": "https://www.imdb.com/event/$1"
70+ }
71+ },
72+ "rotten_tomatoes": {
73+ "category_name": "Rotten tomatoes",
74+ "url_name": "Rotten tomatoes title",
75+ "urls": {
76+ "default": "https://www.rottentomatoes.com/$1"
77+ }
78+ },
79+ "spotify_artist_id": {
80+ "category_name": "Spotify",
81+ "url_name": "Spotify artist",
82+ "urls": {
83+ "default": "https://open.spotify.com/artist/$1"
84+ }
85+ },
86+ "itunes_artist_id": {
87+ "category_name": "iTunes",
88+ "url_name": "iTunes artist",
89+ "urls": {
90+ "default": "https://music.apple.com/us/artist/$1"
91+ }
92+ },
93+ "soundcloud_id": {
94+ "category_name": "Soundcloud",
95+ "url_name": "Soundcloud artist",
96+ "urls": {
97+ "default": "https://soundcloud.com/$1"
98+ }
99+ },
100+ "netflix_id": {
101+ "category_name": "Netflix",
102+ "url_name": "Netflix movie",
103+ "urls": {
104+ "default": "https://www.netflix.com/watch/$1"
105+ }
106+ },
107+ "github_profile": {
108+ "category_name": "Github",
109+ "url_name": "Github profile",
110+ "urls": {
111+ "default": "https://wwww.github.com/$1"
112+ }
113+ },
114+ "musicbrainz_artist": {
115+ "category_name": "Musicbrainz",
116+ "url_name": "Musicbrainz artist",
117+ "urls": {
118+ "default": "http://musicbrainz.org/artist/$1"
119+ }
120+ },
121+ "musicbrainz_work": {
122+ "category_name": "Musicbrainz",
123+ "url_name": "Musicbrainz work",
124+ "urls": {
125+ "default": "http://musicbrainz.org/work/$1"
126+ }
127+ },
128+ "musicbrainz_release_group": {
129+ "category_name": "Musicbrainz",
130+ "url_name": "Musicbrainz release group",
131+ "urls": {
132+ "default": "http://musicbrainz.org/release-group/$1"
133+ }
134+ },
135+ "musicbrainz_label": {
136+ "category_name": "Musicbrainz",
137+ "url_name": "Musicbrainz label",
138+ "urls": {
139+ "default": "http://musicbrainz.org/label/$1"
140+ }
141+ },
142+ "wikimedia_image": {
143+ "category_name": "Wikipedia",
144+ "url_name": "Wikipedia image",
145+ "urls": {
146+ "default": "https://commons.wikimedia.org/wiki/Special:FilePath/$1?width=500&height=400"
147+ }
148+ },
149+ "map": {
150+ "category_name": "Map",
151+ "url_name": "geo map",
152+ "urls": {
153+ "default": "https://www.openstreetmap.org/?lat=${latitude}&lon=${longitude}&zoom=${zoom}&layers=M"
154+ }
155+ }
156+}
searx/data/wikidata_units.jsonnew file+1006
@@ -0,0 +1,1006 @@
1+{
2+ "Q199": "1",
3+ "Q100149279": "°We",
4+ "Q100995": "lb",
5+ "Q1022113": "cm³",
6+ "Q102573": "Bq",
7+ "Q103246": "Sv",
8+ "Q103510": "bar",
9+ "Q10380431": "TJ",
10+ "Q1040401": "das",
11+ "Q1040427": "hs",
12+ "Q1042866": "Zibit",
13+ "Q1050958": "inHg",
14+ "Q1051665": "m/s²",
15+ "Q1052397": "rad",
16+ "Q1054140": "Mm",
17+ "Q10543042": "Ym",
18+ "Q1057069": "hg",
19+ "Q1063756": "rad/s",
20+ "Q1063786": "in²",
21+ "Q1065153": "mrad",
22+ "Q1066138": "Ps",
23+ "Q1067722": "Fg",
24+ "Q1069725": "p.",
25+ "Q1084321": "Tb/s",
26+ "Q1086691": "fg",
27+ "Q1091257": "tex",
28+ "Q1092296": "a",
29+ "Q1104069": "CAD$",
30+ "Q11061003": "μm²",
31+ "Q11061005": "nm²",
32+ "Q1131660": "st",
33+ "Q1137675": "cr",
34+ "Q1140444": "Zbit",
35+ "Q1140577": "Ybit",
36+ "Q1152074": "Pbit",
37+ "Q1152323": "Tbit",
38+ "Q1165799": "mil",
39+ "Q11776930": "Mg",
40+ "Q11830636": "psf",
41+ "Q11929860": "kpc",
42+ "Q1194225": "lbf",
43+ "Q1194580": "Mibit",
44+ "Q1195111": "Ebit",
45+ "Q1196837": "ω_P",
46+ "Q1197459": "Ms",
47+ "Q11982285": "Em³",
48+ "Q11982288": "Zm³",
49+ "Q11982289": "Tm³",
50+ "Q12011178": "Zs",
51+ "Q1204894": "Gibit",
52+ "Q12257695": "Eb/s",
53+ "Q12257696": "EB/s",
54+ "Q12261466": "kB/s",
55+ "Q12265780": "Pb/s",
56+ "Q12265783": "PB/s",
57+ "Q12269121": "Yb/s",
58+ "Q12269122": "YB/s",
59+ "Q12269308": "Zb/s",
60+ "Q12269309": "ZB/s",
61+ "Q1247300": "cm H₂O",
62+ "Q12714022": "sh cwt",
63+ "Q12789864": "GeV",
64+ "Q12874593": "W h",
65+ "Q128822": "kn",
66+ "Q13035094": "J/mol",
67+ "Q130964": "cal",
68+ "Q131255": "F",
69+ "Q13147228": "g/cm³",
70+ "Q1322380": "Ts",
71+ "Q1323615": "oz t",
72+ "Q132643": "kr",
73+ "Q13400897": "g",
74+ "Q13479685": "mm wg",
75+ "Q1351253": "Eibit",
76+ "Q1351334": "Pibit",
77+ "Q13542672": "Ry",
78+ "Q13548586": "THz",
79+ "Q13582667": "kgf/cm²",
80+ "Q1361854": "dwt",
81+ "Q1363007": "slug",
82+ "Q1374438": "ks",
83+ "Q13753469": "MB/s",
84+ "Q1377051": "Gs",
85+ "Q1394540": "bm",
86+ "Q1396128": "F",
87+ "Q1413142": "Gb",
88+ "Q14158377": "A_P",
89+ "Q14623803": "MDa",
90+ "Q14623804": "kDa",
91+ "Q1472674": "Sv",
92+ "Q14754979": "Zg",
93+ "Q14786969": "MJ",
94+ "Q14913554": "Ys",
95+ "Q14914907": "th",
96+ "Q14916719": "Gpc",
97+ "Q14923662": "Pm³",
98+ "Q1511773": "LSd",
99+ "Q15120301": "l atm",
100+ "Q1542309": "xu",
101+ "Q1545979": "ft³",
102+ "Q1550511": "yd²",
103+ "Q15551713": "Sh",
104+ "Q1569733": "St",
105+ "Q15784325": "apc",
106+ "Q160680": "Br",
107+ "Q160857": "hp",
108+ "Q1628990": "hph",
109+ "Q163343": "T",
110+ "Q163354": "H",
111+ "Q1640501": "hyl",
112+ "Q1645498": "μg",
113+ "Q16859309": "lb·ft",
114+ "Q169893": "S",
115+ "Q170804": "Wb",
116+ "Q17093295": "m/h",
117+ "Q17255465": "v_P",
118+ "Q173117": "R$",
119+ "Q1741429": "kpm",
120+ "Q174467": "Lm",
121+ "Q174728": "cm",
122+ "Q174789": "mm",
123+ "Q175821": "μm",
124+ "Q1768929": "p",
125+ "Q1770733": "Tg",
126+ "Q1772386": "dg",
127+ "Q177493": "Gs",
128+ "Q177612": "sr",
129+ "Q1777507": "fs",
130+ "Q177974": "atm",
131+ "Q178506": "bbl",
132+ "Q178674": "nm",
133+ "Q1793863": "sn",
134+ "Q179836": "lx",
135+ "Q180154": "km/h",
136+ "Q180892": "M☉",
137+ "Q1815100": "cl",
138+ "Q182098": "kWh",
139+ "Q1823150": "μW",
140+ "Q182429": "m/s",
141+ "Q1826195": "dl",
142+ "Q18413919": "cm/s",
143+ "Q184172": "FF",
144+ "Q185078": "a",
145+ "Q185153": "erg",
146+ "Q185648": "Torr",
147+ "Q185759": "span",
148+ "Q1872619": "zs",
149+ "Q189097": "₧",
150+ "Q190095": "Gy",
151+ "Q190951": "S$",
152+ "Q191118": "t",
153+ "Q1913097": "fg",
154+ "Q1916026": "μV",
155+ "Q192027": "Bd",
156+ "Q192274": "pm",
157+ "Q193098": "KD",
158+ "Q1935515": "mA s",
159+ "Q19392152": "TL",
160+ "Q193933": "dpt",
161+ "Q194339": "B$",
162+ "Q1970718": "mam",
163+ "Q1972579": "pdl",
164+ "Q199462": "LE",
165+ "Q199471": "Afs",
166+ "Q200323": "dm",
167+ "Q200337": "Kz",
168+ "Q201880": "LL",
169+ "Q201933": "dyn",
170+ "Q2029156": "quad",
171+ "Q2029519": "hl",
172+ "Q203567": "₦",
173+ "Q2042279": "m H₂O",
174+ "Q204737": "៛",
175+ "Q2051195": "GWh",
176+ "Q2055118": "ppb",
177+ "Q2064166": "fc",
178+ "Q206600": "ރ",
179+ "Q20706220": "cmm",
180+ "Q20706221": "dmm",
181+ "Q2080811": "vol%",
182+ "Q208526": "NT$",
183+ "Q208528": "gon",
184+ "Q208634": "kat",
185+ "Q208788": "fm",
186+ "Q209351": "b",
187+ "Q209426": "′",
188+ "Q21006887": "ppm",
189+ "Q2100949": "P",
190+ "Q21014455": "m/min",
191+ "Q210472": "B/.",
192+ "Q21061369": "g/kg",
193+ "Q21062777": "MPa",
194+ "Q21064807": "kPa",
195+ "Q21064845": "mol/L",
196+ "Q21075844": "ml/l",
197+ "Q21077820": "mg/m³",
198+ "Q21091747": "mg/kg",
199+ "Q211256": "mph",
200+ "Q211580": "BTU (th)",
201+ "Q212120": "A h",
202+ "Q2140397": "in³",
203+ "Q214377": "ell",
204+ "Q2143992": "kHz",
205+ "Q21489891": "nm³",
206+ "Q21489892": "Gm³",
207+ "Q21489893": "Mm³",
208+ "Q21489894": "μm³",
209+ "Q21500224": "mas",
210+ "Q2151240": "mag",
211+ "Q215571": "N m",
212+ "Q21604951": "g/m³",
213+ "Q2165290": "yd³",
214+ "Q216880": "kp",
215+ "Q217208": "a",
216+ "Q2175964": "dm³",
217+ "Q218593": "in",
218+ "Q2199357": "dec",
219+ "Q22137107": "mas/y",
220+ "Q2215478": "ppt",
221+ "Q2221356": "mW h",
222+ "Q22350885": "da",
223+ "Q2243141": "Gb/s",
224+ "Q2254856": "ca",
225+ "Q22673229": "ft/min",
226+ "Q2269250": "kb/s",
227+ "Q2282891": "μl",
228+ "Q2282906": "ng",
229+ "Q229354": "Ci",
230+ "Q232291": "mi²",
231+ "Q2332346": "ml",
232+ "Q23823681": "TW",
233+ "Q23925410": "gal (UK)",
234+ "Q23925413": "gal (US)",
235+ "Q23931040": "dam²",
236+ "Q23931103": "nmi²",
237+ "Q2414435": "$b.",
238+ "Q242988": "Lib$",
239+ "Q2438073": "ag",
240+ "Q2448803": "mV",
241+ "Q2451296": "μF",
242+ "Q246868": "lot",
243+ "Q2474258": "mSv",
244+ "Q2483628": "as",
245+ "Q2489298": "cm²",
246+ "Q249439": "q_P",
247+ "Q2518569": "nSv",
248+ "Q253276": "mi",
249+ "Q25472681": "GB/s",
250+ "Q25472693": "TB/s",
251+ "Q25499149": "oct",
252+ "Q25511288": "mb",
253+ "Q2553708": "MV",
254+ "Q2554092": "kV",
255+ "Q259502": "AU$",
256+ "Q260126": "rem",
257+ "Q2612219": "Pg",
258+ "Q261247": "ct",
259+ "Q2619500": "foe",
260+ "Q2636421": "nH",
261+ "Q2637946": "dal",
262+ "Q2642547": "ha",
263+ "Q2652700": "Osm",
264+ "Q2655272": "Eg",
265+ "Q2659078": "TW h",
266+ "Q2670039": "₶",
267+ "Q26708069": "kcal",
268+ "Q267391": "K",
269+ "Q2679083": "μH",
270+ "Q2682463": "nF",
271+ "Q2691798": "cg",
272+ "Q271206": "sud£",
273+ "Q2737347": "mm²",
274+ "Q2739114": "μSv",
275+ "Q275112": "Bz$",
276+ "Q2756030": "pF",
277+ "Q2757753": "PW h",
278+ "Q2762458": "ys",
279+ "Q27864215": "μW h",
280+ "Q2793566": "GV",
281+ "Q27949241": "R",
282+ "Q2799294": "Gg",
283+ "Q281096": "cd/m²",
284+ "Q28719934": "keV",
285+ "Q28924752": "g/mol",
286+ "Q28924753": "kg/mol",
287+ "Q2924137": "mH",
288+ "Q296936": "toe",
289+ "Q29924639": "kVA",
290+ "Q30001811": "aBq",
291+ "Q30001813": "aC",
292+ "Q30001814": "aHz",
293+ "Q30001815": "aJ",
294+ "Q30001816": "akat",
295+ "Q30001818": "aL",
296+ "Q30001819": "alm",
297+ "Q30001820": "alx",
298+ "Q30001822": "aN",
299+ "Q30001823": "aΩ",
300+ "Q30001825": "aPa",
301+ "Q30001826": "arad",
302+ "Q30001827": "aS",
303+ "Q30001828": "aSv",
304+ "Q30001829": "asr",
305+ "Q30001830": "aT",
306+ "Q30001831": "aV",
307+ "Q30001832": "aW",
308+ "Q30001833": "aWb",
309+ "Q3013059": "kyr",
310+ "Q3194304": "kbit",
311+ "Q3207456": "mW",
312+ "Q321017": "R",
313+ "Q3221356": "ym",
314+ "Q3239557": "pg",
315+ "Q3241121": "mg",
316+ "Q324923": "Hart",
317+ "Q3249364": "cs",
318+ "Q3251645": "ds",
319+ "Q3267417": "Tm",
320+ "Q3270676": "zm",
321+ "Q32750621": "liq pt (US)",
322+ "Q32750759": "fl oz (US)",
323+ "Q32750816": "bu (US)",
324+ "Q32751272": "dry pt (US)",
325+ "Q32751296": "bbl (US)",
326+ "Q3276763": "GHz",
327+ "Q3277907": "Em",
328+ "Q3277915": "Zm",
329+ "Q3277919": "Pm",
330+ "Q3312063": "fL",
331+ "Q3320608": "kW",
332+ "Q3331719": "dm²",
333+ "Q3332689": "ToR",
334+ "Q3332814": "Mbit",
335+ "Q3396758": "daa",
336+ "Q3414243": "rps",
337+ "Q3421309": "R_J",
338+ "Q3495543": "mbar",
339+ "Q355198": "px",
340+ "Q3674704": "km/s",
341+ "Q3675550": "mm³",
342+ "Q3712659": "$",
343+ "Q376660": "nat",
344+ "Q37732658": "°R",
345+ "Q3773454": "Mpc",
346+ "Q3815076": "Kibit",
347+ "Q3833309": "£",
348+ "Q3858002": "mA h",
349+ "Q3867152": "ft/s²",
350+ "Q389062": "Tibit",
351+ "Q3902688": "pl",
352+ "Q3902709": "ps",
353+ "Q39360235": "US lea",
354+ "Q39360471": "nl",
355+ "Q39362962": "µin",
356+ "Q39363132": "UK lg",
357+ "Q39363209": "UK nl",
358+ "Q39380159": "US nmi",
359+ "Q39462789": "µin²",
360+ "Q39467934": "kgf/m²",
361+ "Q39469927": "N/m²",
362+ "Q39617688": "cwt long",
363+ "Q39617818": "t lb",
364+ "Q39628023": "y",
365+ "Q39699418": "cm/s²",
366+ "Q39708248": "S",
367+ "Q39709980": "bd",
368+ "Q39710113": "bhp EDR",
369+ "Q3972226": "kL",
370+ "Q4041686": "iwg",
371+ "Q4068266": "Ʒ",
372+ "Q4176683": "aC",
373+ "Q420266": "oz. fl.",
374+ "Q42319606": "people/m²",
375+ "Q4243638": "km³",
376+ "Q4456994": "mF",
377+ "Q469356": "tn. sh.",
378+ "Q476572": "Ha",
379+ "Q482798": "yd",
380+ "Q483261": "Da",
381+ "Q483725": "A.M.",
382+ "Q484092": "lm",
383+ "Q4861171": "H",
384+ "Q494083": "fur",
385+ "Q4989854": "kJ",
386+ "Q500515": "Gal",
387+ "Q5042194": "£",
388+ "Q50808017": "kg m²",
389+ "Q5139563": "hPa",
390+ "Q514845": "pz",
391+ "Q5195628": "hm³",
392+ "Q5198770": "dam³",
393+ "Q524410": "byr",
394+ "Q53393488": "PHz",
395+ "Q53393490": "EHz",
396+ "Q53393494": "ZHz",
397+ "Q53393498": "YHz",
398+ "Q53393659": "ML",
399+ "Q53393664": "GL",
400+ "Q53393674": "ZL",
401+ "Q53393678": "YL",
402+ "Q53393771": "yL",
403+ "Q53393868": "GJ",
404+ "Q53393886": "PJ",
405+ "Q53393890": "EJ",
406+ "Q53448786": "yHz",
407+ "Q53448790": "zHz",
408+ "Q53448794": "fHz",
409+ "Q53448797": "pHz",
410+ "Q53448801": "nHz",
411+ "Q53448806": "μHz",
412+ "Q53448808": "mHz",
413+ "Q53448813": "cHz",
414+ "Q53448817": "dHz",
415+ "Q53448820": "daHz",
416+ "Q53448826": "hHz",
417+ "Q53448828": "yJ",
418+ "Q53448832": "zJ",
419+ "Q53448842": "pJ",
420+ "Q53448844": "nJ",
421+ "Q53448847": "μJ",
422+ "Q53448851": "mJ",
423+ "Q53448856": "cJ",
424+ "Q53448860": "dJ",
425+ "Q53448864": "daJ",
426+ "Q53448875": "hJ",
427+ "Q53448879": "yPa",
428+ "Q53448883": "zPa",
429+ "Q53448886": "fPa",
430+ "Q53448892": "pPa",
431+ "Q53448897": "nPa",
432+ "Q53448900": "μPa",
433+ "Q53448906": "mPa",
434+ "Q53448909": "cPa",
435+ "Q53448914": "dPa",
436+ "Q53448918": "daPa",
437+ "Q53448922": "GPa",
438+ "Q53448927": "TPa",
439+ "Q53448931": "PPa",
440+ "Q53448936": "EPa",
441+ "Q53448939": "ZPa",
442+ "Q53448943": "YPa",
443+ "Q53448949": "yV",
444+ "Q53448952": "zV",
445+ "Q53448957": "fV",
446+ "Q53448960": "pV",
447+ "Q53448965": "nV",
448+ "Q53448969": "cV",
449+ "Q53448973": "dV",
450+ "Q53448977": "daV",
451+ "Q53448981": "hV",
452+ "Q53448985": "TV",
453+ "Q53448990": "PV",
454+ "Q53448994": "EV",
455+ "Q53448996": "ZV",
456+ "Q53449001": "YV",
457+ "Q53449006": "yW",
458+ "Q53449008": "zW",
459+ "Q53449013": "fW",
460+ "Q53449018": "pW",
461+ "Q53449021": "nW",
462+ "Q53449025": "cW",
463+ "Q53449029": "dW",
464+ "Q53449033": "daW",
465+ "Q53449036": "hW",
466+ "Q53449040": "PW",
467+ "Q53449045": "EW",
468+ "Q53449049": "ZW",
469+ "Q53449054": "YW",
470+ "Q53561461": "wf",
471+ "Q53561822": "wf",
472+ "Q53651160": "zm³",
473+ "Q53651201": "Ym³",
474+ "Q53651356": "ym³",
475+ "Q53651512": "pm³",
476+ "Q53651713": "fm³",
477+ "Q536785": "ρ_P",
478+ "Q53951982": "Mt",
479+ "Q53952048": "kt",
480+ "Q54006645": "ZWb",
481+ "Q54081925": "ZSv",
482+ "Q54082468": "ZS",
483+ "Q54083144": "ZΩ",
484+ "Q54083318": "ZN",
485+ "Q54083566": "Zlm",
486+ "Q54083579": "Zlx",
487+ "Q54083712": "ZBq",
488+ "Q54083746": "ZC",
489+ "Q54083766": "ZF",
490+ "Q54083779": "ZGy",
491+ "Q54083795": "ZH",
492+ "Q54083813": "Zkat",
493+ "Q5409016": "MVA",
494+ "Q5465723": "ft-pdl",
495+ "Q549389": "bit/s",
496+ "Q550341": "V A",
497+ "Q552299": "ch",
498+ "Q55442349": "U/L",
499+ "Q55726194": "mg/L",
500+ "Q56156859": "mmol",
501+ "Q56156949": "μmol",
502+ "Q56157046": "nmol",
503+ "Q56157048": "pmol",
504+ "Q56160603": "fmol",
505+ "Q56302633": "UM",
506+ "Q56317116": "mgal",
507+ "Q56317622": "Q_P",
508+ "Q56318907": "kbar",
509+ "Q56349362": "Bs.S",
510+ "Q56402798": "kN",
511+ "Q5711261": "am³",
512+ "Q581432": "‴",
513+ "Q5879479": "GW",
514+ "Q6003257": "am",
515+ "Q6009164": "MW h",
516+ "Q6014364": "in/s",
517+ "Q603071": "E°",
518+ "Q605704": "doz",
519+ "Q60742631": "AU/yr",
520+ "Q608697": "Mx",
521+ "Q610135": "G",
522+ "Q613726": "Yg",
523+ "Q6170164": "yg",
524+ "Q6171168": "zg",
525+ "Q61756607": "yd",
526+ "Q61793198": "rd",
527+ "Q61794766": "ch (US survey)",
528+ "Q61994988": "Wth",
529+ "Q61995006": "KWth",
530+ "Q626299": "psi",
531+ "Q630369": "var",
532+ "Q636200": "U",
533+ "Q640907": "sb",
534+ "Q6414556": "kip",
535+ "Q648908": "bya",
536+ "Q64996135": "gal (US)/min",
537+ "Q65028392": "mm/yr",
538+ "Q651336": "M_J",
539+ "Q6517513": "dag",
540+ "Q667419": "UK t",
541+ "Q681996": "M⊕",
542+ "Q685662": "p_P",
543+ "Q6859652": "mm Hg",
544+ "Q686163": "$",
545+ "Q68725821": "°Rø",
546+ "Q68726230": "°De",
547+ "Q68726625": "°N",
548+ "Q69362731": "°C",
549+ "Q69363953": "K",
550+ "Q693944": "gr",
551+ "Q6982035": "MW",
552+ "Q69878540": "fl oz (UK)",
553+ "Q70378044": "dmol",
554+ "Q70378549": "dK",
555+ "Q70393458": "kmol",
556+ "Q70395375": "Tmol",
557+ "Q70395643": "Mmol",
558+ "Q70395830": "kK",
559+ "Q70396179": "mK",
560+ "Q70397275": "μK",
561+ "Q70397725": "cmol",
562+ "Q70397932": "cK",
563+ "Q70398457": "nK",
564+ "Q70398619": "MK",
565+ "Q70398813": "Gmol",
566+ "Q70398991": "GK",
567+ "Q70440025": "daK",
568+ "Q70440438": "hK",
569+ "Q70440620": "damol",
570+ "Q70440823": "hmol",
571+ "Q70443020": "EK",
572+ "Q70443154": "yK",
573+ "Q70443282": "zK",
574+ "Q70443367": "fK",
575+ "Q70443453": "TK",
576+ "Q70443757": "pK",
577+ "Q70443901": "YK",
578+ "Q70444029": "PK",
579+ "Q70444141": "Emol",
580+ "Q70444284": "ymol",
581+ "Q70444386": "zmol",
582+ "Q70444514": "Ymol",
583+ "Q70444609": "Pmol",
584+ "Q712226": "km²",
585+ "Q72081071": "MeV",
586+ "Q723733": "ms",
587+ "Q730251": "ft·lbf",
588+ "Q732707": "MHz",
589+ "Q73408": "K",
590+ "Q7350781": "Mb/s",
591+ "Q743895": "bpm",
592+ "Q748716": "ft/s",
593+ "Q750178": "‱",
594+ "Q752197": "kJ/mol",
595+ "Q7672057": "TU",
596+ "Q777017": "dBm",
597+ "Q78754556": "rot",
598+ "Q78756901": "rev",
599+ "Q78757683": "windings",
600+ "Q79726": "kB",
601+ "Q79735": "MB",
602+ "Q79738": "GB",
603+ "Q79741": "TB",
604+ "Q79744": "PB",
605+ "Q79745": "EB",
606+ "Q79747": "ZB",
607+ "Q7974920": "W s",
608+ "Q79752": "YB",
609+ "Q79756": "KiB",
610+ "Q79758": "MiB",
611+ "Q79765": "GiB",
612+ "Q79769": "TiB",
613+ "Q79774": "PiB",
614+ "Q79777": "EiB",
615+ "Q79779": "ZiB",
616+ "Q79781": "YiB",
617+ "Q80237579": "J/nm",
618+ "Q809678": "Ba",
619+ "Q81062869": "W/nm",
620+ "Q81073100": "W/(sr nm)",
621+ "Q81292": "acre",
622+ "Q81454": "Å",
623+ "Q8229770": "B/s",
624+ "Q828224": "km",
625+ "Q829073": "\"",
626+ "Q83216": "cd",
627+ "Q83327": "eV",
628+ "Q834105": "g/L",
629+ "Q835916": "IU",
630+ "Q838801": "ns",
631+ "Q842015": "μs",
632+ "Q842981": "thm (US)",
633+ "Q844211": "kg/m³",
634+ "Q844338": "hm",
635+ "Q844976": "Oe",
636+ "Q845958": "¥",
637+ "Q848856": "dam",
638+ "Q851872": "o",
639+ "Q854546": "Gm",
640+ "Q855161": "Yibit",
641+ "Q856240": "ft³/min",
642+ "Q857027": "ft²",
643+ "Q85854198": "MN",
644+ "Q864818": "abA",
645+ "Q87262709": "kΩ",
646+ "Q87416053": "MΩ",
647+ "Q88296091": "tsp",
648+ "Q9026416": "MWth",
649+ "Q9048643": "nl",
650+ "Q905912": "L",
651+ "Q906223": "Es",
652+ "Q909066": "at",
653+ "Q911730": "nx",
654+ "Q914151": "P_P",
655+ "Q915169": "F_P",
656+ "Q93318": "nmi",
657+ "Q940052": "q",
658+ "Q94076025": "dalm",
659+ "Q94076717": "dakat",
660+ "Q942092": "BWI$",
661+ "Q94414053": "Prad",
662+ "Q94414499": "PC",
663+ "Q94415026": "Grad",
664+ "Q94415255": "GC",
665+ "Q94415438": "Yrad",
666+ "Q94415526": "YC",
667+ "Q94415782": "Mrad",
668+ "Q94416260": "GN",
669+ "Q94416535": "cN",
670+ "Q94416879": "YN",
671+ "Q94417138": "PN",
672+ "Q94417481": "μGy",
673+ "Q94417583": "μS",
674+ "Q94417598": "μT",
675+ "Q94417933": "μlm",
676+ "Q94418102": "μN",
677+ "Q94418220": "μsr",
678+ "Q94418481": "μBq",
679+ "Q94479580": "GΩ",
680+ "Q94480021": "PΩ",
681+ "Q94480081": "YΩ",
682+ "Q94480128": "cΩ",
683+ "Q94480131": "TΩ",
684+ "Q94480136": "pΩ",
685+ "Q94480254": "nΩ",
686+ "Q94480476": "dΩ",
687+ "Q94480633": "EΩ",
688+ "Q94480967": "daΩ",
689+ "Q94481176": "hΩ",
690+ "Q94481339": "fΩ",
691+ "Q94481646": "yΩ",
692+ "Q94487174": "zΩ",
693+ "Q94487366": "mΩ",
694+ "Q94487561": "μΩ",
695+ "Q94487750": "kGy",
696+ "Q94488007": "klx",
697+ "Q94488361": "MF",
698+ "Q94488759": "GBq",
699+ "Q94489041": "PBq",
700+ "Q94489223": "YBq",
701+ "Q94489429": "MBq",
702+ "Q94489465": "kBq",
703+ "Q94489476": "TBq",
704+ "Q94489494": "kWb",
705+ "Q94489520": "kS",
706+ "Q94490951": "klm",
707+ "Q94491129": "kkat",
708+ "Q94634634": "cC",
709+ "Q94634655": "MC",
710+ "Q94634666": "kC",
711+ "Q94634677": "TC",
712+ "Q94634684": "μC",
713+ "Q94634699": "mC",
714+ "Q94693759": "csr",
715+ "Q94693773": "msr",
716+ "Q94693786": "mWb",
717+ "Q94693805": "μWb",
718+ "Q94693819": "GS",
719+ "Q94693849": "cS",
720+ "Q94693918": "MS",
721+ "Q94694019": "TS",
722+ "Q94694096": "pS",
723+ "Q94694154": "nS",
724+ "Q94694206": "mS",
725+ "Q94731530": "mlm",
726+ "Q94731808": "mkat",
727+ "Q94731887": "μkat",
728+ "Q94732218": "nkat",
729+ "Q94732627": "pkat",
730+ "Q94733432": "fkat",
731+ "Q94733760": "cGy",
732+ "Q94734107": "dGy",
733+ "Q94734232": "mGy",
734+ "Q94734359": "daGy",
735+ "Q94734468": "aGy",
736+ "Q94734527": "pGy",
737+ "Q94734593": "nGy",
738+ "Q94734689": "kT",
739+ "Q94734788": "mT",
740+ "Q94939947": "Gkat",
741+ "Q94940018": "Pkat",
742+ "Q94940081": "ykat",
743+ "Q94940160": "dkat",
744+ "Q94940232": "Ekat",
745+ "Q94940295": "Ykat",
746+ "Q94940582": "Tkat",
747+ "Q94940892": "hkat",
748+ "Q94941461": "zkat",
749+ "Q94942602": "MGy",
750+ "Q94942863": "GGy",
751+ "Q94986863": "YWb",
752+ "Q94986889": "PWb",
753+ "Q94986906": "cWb",
754+ "Q94986920": "GWb",
755+ "Q94986942": "MWb",
756+ "Q94986962": "TWb",
757+ "Q95178536": "Mlm",
758+ "Q95178777": "Tlm",
759+ "Q95178881": "clm",
760+ "Q95179024": "plm",
761+ "Q95179137": "nlm",
762+ "Q95179382": "hlm",
763+ "Q95179467": "flm",
764+ "Q95179608": "zlm",
765+ "Q95179695": "Mkat",
766+ "Q95179788": "ckat",
767+ "Q95179882": "PGy",
768+ "Q95377836": "PF",
769+ "Q95377853": "YF",
770+ "Q95378017": "kF",
771+ "Q95378296": "TF",
772+ "Q95379145": "cF",
773+ "Q95379382": "GF",
774+ "Q95379491": "daC",
775+ "Q95379580": "hC",
776+ "Q95379588": "dC",
777+ "Q95379596": "EC",
778+ "Q95445986": "nC",
779+ "Q95446327": "pC",
780+ "Q95446670": "fC",
781+ "Q95447079": "zC",
782+ "Q95447237": "yC",
783+ "Q95447253": "fF",
784+ "Q95447263": "zF",
785+ "Q95447276": "aF",
786+ "Q95447555": "dF",
787+ "Q95447863": "EF",
788+ "Q95448262": "yF",
789+ "Q95448479": "hF",
790+ "Q95448689": "daF",
791+ "Q95448950": "kSv",
792+ "Q95559229": "GSv",
793+ "Q95559368": "YSv",
794+ "Q95559441": "MSv",
795+ "Q95559576": "TSv",
796+ "Q95559603": "PSv",
797+ "Q95609154": "nWb",
798+ "Q95609210": "fWb",
799+ "Q95609261": "zWb",
800+ "Q95609291": "dWb",
801+ "Q95609317": "EWb",
802+ "Q95676212": "pWb",
803+ "Q95676232": "yWb",
804+ "Q95676243": "hWb",
805+ "Q95676250": "daWb",
806+ "Q95676257": "PS",
807+ "Q95676260": "YS",
808+ "Q95676273": "zS",
809+ "Q95676275": "fS",
810+ "Q95676279": "yS",
811+ "Q95676287": "hS",
812+ "Q95676291": "daS",
813+ "Q95676297": "dS",
814+ "Q95676298": "ES",
815+ "Q95720731": "YGy",
816+ "Q95720734": "TGy",
817+ "Q95720736": "fGy",
818+ "Q95720739": "yGy",
819+ "Q95720741": "zGy",
820+ "Q95720742": "EGy",
821+ "Q95720746": "hGy",
822+ "Q95720749": "mlx",
823+ "Q95720758": "μlx",
824+ "Q95720773": "dalx",
825+ "Q95720777": "hlx",
826+ "Q95720781": "dlx",
827+ "Q95720786": "clx",
828+ "Q95857671": "zSv",
829+ "Q95859071": "fSv",
830+ "Q95860960": "daSv",
831+ "Q95861107": "hSv",
832+ "Q95861296": "dSv",
833+ "Q95862182": "ESv",
834+ "Q95863358": "cSv",
835+ "Q95863591": "ySv",
836+ "Q95863894": "pSv",
837+ "Q95864194": "zBq",
838+ "Q95864378": "fBq",
839+ "Q95864695": "daBq",
840+ "Q95864940": "hBq",
841+ "Q95865286": "dBq",
842+ "Q95865530": "EBq",
843+ "Q95865716": "cBq",
844+ "Q95865877": "yBq",
845+ "Q95866173": "pBq",
846+ "Q95866344": "nBq",
847+ "Q95866767": "mBq",
848+ "Q95867993": "mN",
849+ "Q95948345": "crad",
850+ "Q95948364": "drad",
851+ "Q95948734": "daN",
852+ "Q95948739": "hN",
853+ "Q95948747": "dN",
854+ "Q95976839": "Plm",
855+ "Q95976853": "Glm",
856+ "Q95976869": "Ylm",
857+ "Q95976889": "ylm",
858+ "Q95976917": "dlm",
859+ "Q95976919": "Elm",
860+ "Q95976921": "nT",
861+ "Q95993516": "TN",
862+ "Q95993522": "nN",
863+ "Q95993524": "fN",
864+ "Q95993526": "yN",
865+ "Q95993528": "zN",
866+ "Q95993530": "EN",
867+ "Q95993532": "pN",
868+ "Q95993537": "μrad",
869+ "Q95993542": "nrad",
870+ "Q95993547": "frad",
871+ "Q95993553": "prad",
872+ "Q95993554": "darad",
873+ "Q95993557": "hrad",
874+ "Q95993619": "pT",
875+ "Q96025401": "daT",
876+ "Q96025405": "Trad",
877+ "Q96025407": "Zrad",
878+ "Q96025409": "zrad",
879+ "Q96025413": "yrad",
880+ "Q96025414": "Erad",
881+ "Q96025419": "Ylx",
882+ "Q96025422": "Glx",
883+ "Q96025427": "Plx",
884+ "Q96025431": "Mlx",
885+ "Q96025433": "Tlx",
886+ "Q96025435": "nlx",
887+ "Q96025441": "flx",
888+ "Q96050953": "GH",
889+ "Q96051010": "PH",
890+ "Q96051029": "YH",
891+ "Q96051052": "cH",
892+ "Q96051074": "TH",
893+ "Q96051106": "MH",
894+ "Q96051123": "kH",
895+ "Q96051126": "fH",
896+ "Q96051133": "yH",
897+ "Q96051139": "hH",
898+ "Q96051142": "dH",
899+ "Q96051144": "EH",
900+ "Q96051150": "pH",
901+ "Q96051160": "daH",
902+ "Q96051186": "zH",
903+ "Q96051199": "aH",
904+ "Q96051245": "ylx",
905+ "Q96051267": "Elx",
906+ "Q96051282": "plx",
907+ "Q96051312": "zlx",
908+ "Q96070067": "PT",
909+ "Q96070074": "YT",
910+ "Q96070076": "GT",
911+ "Q96070087": "cT",
912+ "Q96070103": "MT",
913+ "Q96070125": "hT",
914+ "Q96070145": "fT",
915+ "Q96070174": "TT",
916+ "Q96070195": "zT",
917+ "Q96070247": "yT",
918+ "Q96070254": "dT",
919+ "Q96070264": "ET",
920+ "Q96070276": "m°C",
921+ "Q96070318": "dsr",
922+ "Q96070329": "nsr",
923+ "Q96070341": "psr",
924+ "Q96095866": "fsr",
925+ "Q96095897": "zsr",
926+ "Q96095917": "ysr",
927+ "Q96095927": "dasr",
928+ "Q96095928": "hsr",
929+ "Q96095931": "ksr",
930+ "Q96095933": "Msr",
931+ "Q96095939": "Gsr",
932+ "Q96095941": "μ°C",
933+ "Q96095955": "n°C",
934+ "Q96095960": "k°C",
935+ "Q96106290": "Tsr",
936+ "Q96106298": "Psr",
937+ "Q96106311": "Esr",
938+ "Q96106319": "Zsr",
939+ "Q96106332": "Ysr",
940+ "Q96106346": "c°C",
941+ "Q96106360": "d°C",
942+ "Q96106368": "da°C",
943+ "Q96106385": "h°C",
944+ "Q96106393": "M°C",
945+ "Q96236286": "G°C",
946+ "Q97059641": "p°C",
947+ "Q97059652": "T°C",
948+ "Q97143826": "P°C",
949+ "Q97143831": "y°C",
950+ "Q97143835": "f°C",
951+ "Q97143838": "Z°C",
952+ "Q97143842": "E°C",
953+ "Q97143843": "z°C",
954+ "Q97143849": "Y°C",
955+ "Q97143851": "a°C",
956+ "Q98538634": "eV/m²",
957+ "Q98635536": "eV/m",
958+ "Q98642859": "eV m²/kg",
959+ "Q11229": "%",
960+ "Q11570": "kg",
961+ "Q11573": "m",
962+ "Q11574": "s",
963+ "Q11579": "K",
964+ "Q11582": "L",
965+ "Q12129": "pc",
966+ "Q12438": "N",
967+ "Q16068": "DM",
968+ "Q1811": "ua",
969+ "Q20764": "Myr",
970+ "Q2101": "e",
971+ "Q25235": "h",
972+ "Q25236": "W",
973+ "Q25250": "V",
974+ "Q25267": "°C",
975+ "Q25269": "J",
976+ "Q25272": "A",
977+ "Q25343": "m²",
978+ "Q25406": "C",
979+ "Q25517": "m³",
980+ "Q33680": "rad",
981+ "Q35852": "ha",
982+ "Q36384": "equiv",
983+ "Q3710": "ft",
984+ "Q39274": "Sv",
985+ "Q39369": "Hz",
986+ "Q41509": "mol",
987+ "Q41803": "g",
988+ "Q42289": "°F",
989+ "Q4406": "TV$",
990+ "Q44395": "Pa",
991+ "Q4587": "Le",
992+ "Q4588": "WS$",
993+ "Q4592": "F$",
994+ "Q4596": "Rs",
995+ "Q4597": "$",
996+ "Q47083": "Ω",
997+ "Q48013": "oz",
998+ "Q50094": "Np",
999+ "Q50098": "B",
1000+ "Q531": "ly",
1001+ "Q5329": "dB",
1002+ "Q573": "d",
1003+ "Q577": "a",
1004+ "Q7727": "min",
1005+ "Q8799": "B"
1006+}
searx/external_urls.pynew file+77
@@ -0,0 +1,77 @@
1+import math
2+
3+from searx.data import EXTERNAL_URLS
4+
5+
6+IMDB_PREFIX_TO_URL_ID = {
7+ 'tt': 'imdb_title',
8+ 'mn': 'imdb_name',
9+ 'ch': 'imdb_character',
10+ 'co': 'imdb_company',
11+ 'ev': 'imdb_event'
12+}
13+
14+
15+def get_imdb_url_id(imdb_item_id):
16+ id_prefix = imdb_item_id[:2]
17+ return IMDB_PREFIX_TO_URL_ID.get(id_prefix)
18+
19+
20+def get_external_url(url_id, item_id, alternative="default"):
21+ """Return an external URL or None if url_id is not found.
22+
23+ url_id can take value from data/external_urls.json
24+ The "imdb_id" value is automaticaly converted according to the item_id value.
25+
26+ If item_id is None, the raw URL with the $1 is returned.
27+ """
28+ if url_id == 'imdb_id' and item_id is not None:
29+ url_id = get_imdb_url_id(item_id)
30+
31+ url_description = EXTERNAL_URLS.get(url_id)
32+ if url_description:
33+ url_template = url_description["urls"].get(alternative)
34+ if url_template is not None:
35+ if item_id is not None:
36+ return url_template.replace('$1', item_id)
37+ else:
38+ return url_template
39+ return None
40+
41+
42+def get_earth_coordinates_url(latitude, longitude, osm_zoom, alternative='default'):
43+ url = get_external_url('map', None, alternative)\
44+ .replace('${latitude}', str(latitude))\
45+ .replace('${longitude}', str(longitude))\
46+ .replace('${zoom}', str(osm_zoom))
47+ return url
48+
49+
50+def area_to_osm_zoom(area):
51+ """Convert an area in km² into an OSM zoom. Less reliable if the shape is not round.
52+
53+ logarithm regression using these data:
54+ * 9596961 -> 4 (China)
55+ * 3287263 -> 5 (India)
56+ * 643801 -> 6 (France)
57+ * 6028 -> 9
58+ * 1214 -> 10
59+ * 891 -> 12
60+ * 12 -> 13
61+
62+ In WolframAlpha:
63+ >>> log fit {9596961,15},{3287263, 14},{643801,13},{6028,10},{1214,9},{891,7},{12,6}
64+
65+ with 15 = 19-4 (China); 14 = 19-5 (India) and so on
66+
67+ Args:
68+ area (int,float,str): area in km²
69+
70+ Returns:
71+ int: OSM zoom or 19 in area is not a number
72+ """
73+ try:
74+ amount = float(area)
75+ return max(0, min(19, round(19 - 0.688297 * math.log(226.878 * amount))))
76+ except ValueError:
77+ return 19
utils/fetch_wikidata_units.pynew file+47
@@ -0,0 +1,47 @@
1+#!/usr/bin/env python
2+
3+import json
4+import collections
5+
6+# set path
7+from sys import path
8+from os.path import realpath, dirname, join
9+path.append(realpath(dirname(realpath(__file__)) + '/../'))
10+
11+from searx import searx_dir
12+from searx.engines.wikidata import send_wikidata_query
13+
14+
15+SARQL_REQUEST = """
16+SELECT DISTINCT ?item ?symbol ?P2370 ?P2370Unit ?P2442 ?P2442Unit
17+WHERE
18+{
19+?item wdt:P31/wdt:P279 wd:Q47574.
20+?item wdt:P5061 ?symbol.
21+FILTER(LANG(?symbol) = "en").
22+}
23+ORDER BY ?item
24+"""
25+
26+
27+def get_data():
28+ def get_key(unit):
29+ return unit['item']['value'].replace('http://www.wikidata.org/entity/', '')
30+
31+ def get_value(unit):
32+ return unit['symbol']['value']
33+
34+ result = send_wikidata_query(SARQL_REQUEST)
35+ if result is not None:
36+ # sort the unit by entity name
37+ # so different fetchs keep the file unchanged.
38+ list(result['results']['bindings']).sort(key=get_key)
39+ return collections.OrderedDict([(get_key(unit), get_value(unit)) for unit in result['results']['bindings']])
40+
41+
42+def get_wikidata_units_filename():
43+ return join(join(searx_dir, "data"), "wikidata_units.json")
44+
45+
46+with open(get_wikidata_units_filename(), 'w') as f:
47+ json.dump(get_data(), f, indent=4, ensure_ascii=False)