[mod] Add searx.data module

Instead of loading the data/*.json in different location,
load these files in the new searx.data module.
This commit is contained in:
Alexandre Flament 2020-10-05 13:50:33 +02:00
parent e30dc2f0ba
commit a9dc54bebc
5 changed files with 37 additions and 41 deletions

View file

@ -19,13 +19,12 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
import sys
import threading
from os.path import realpath, dirname
from io import open
from babel.localedata import locale_identifiers
from flask_babel import gettext
from operator import itemgetter
from json import loads
from searx import settings
from searx import logger
from searx.data import ENGINES_LANGUAGES
from searx.poolrequests import get
from searx.utils import load_module, match_language, get_engine_from_settings
@ -38,7 +37,6 @@ engines = {}
categories = {'general': []}
languages = loads(open(engine_dir + '/../data/engines_languages.json', 'r', encoding='utf-8').read())
babel_langs = [lang_parts[0] + '-' + lang_parts[-1] if len(lang_parts) > 1 else lang_parts[0]
for lang_parts in (lang_code.split('_') for lang_code in locale_identifiers())]
@ -108,8 +106,8 @@ def load_engine(engine_data):
sys.exit(1)
# assign supported languages from json file
if engine_data['name'] in languages:
setattr(engine, 'supported_languages', languages[engine_data['name']])
if engine_data['name'] in ENGINES_LANGUAGES:
setattr(engine, 'supported_languages', ENGINES_LANGUAGES[engine_data['name']])
# find custom aliases for non standard language codes
if hasattr(engine, 'supported_languages'):

View file

@ -1,11 +1,11 @@
import json
import re
import os
import unicodedata
from io import open
from datetime import datetime
from searx.data import CURRENCIES
categories = []
url = 'https://duckduckgo.com/js/spice/currency/1/{0}/{1}'
@ -13,8 +13,6 @@ weight = 100
parser_re = re.compile('.*?(\\d+(?:\\.\\d+)?) ([^.0-9]+) (?:in|to) ([^.0-9]+)', re.I)
db = 1
def normalize_name(name):
name = name.lower().replace('-', ' ').rstrip('s')
@ -23,17 +21,17 @@ def normalize_name(name):
def name_to_iso4217(name):
global db
global CURRENCIES
name = normalize_name(name)
currencies = db['names'].get(name, [name])
return currencies[0]
currency = CURRENCIES['names'].get(name, [name])
return currency[0]
def iso4217_to_name(iso4217, language):
global db
global CURRENCIES
return db['iso4217'].get(iso4217, {}).get(language, iso4217)
return CURRENCIES['iso4217'].get(iso4217, {}).get(language, iso4217)
def request(query, params):
@ -82,15 +80,3 @@ def response(resp):
results.append({'answer': answer, 'url': url})
return results
def load():
global db
current_dir = os.path.dirname(os.path.realpath(__file__))
json_data = open(current_dir + "/../data/currencies.json", 'r', encoding='utf-8').read()
db = json.loads(json_data)
load()