From 33cd77d0d7a374b8e64eaaa0f97d8835903c97e6 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 28 Jun 2023 20:48:20 +0200 Subject: [PATCH] [fix] update_currencies.py - AttributeError: 'str' object has no attribute 'insert' Replace lists with one item by the item, not before last currency has been added. In this traceback 'MXN' is added to 'pesos' while pesos is no longer a list as the optimization was carried out too early. $ ./local/py3/bin/python searxng_extra/update/update_currencies.py Traceback (most recent call last): File "searxng_extra/update/update_currencies.py", line 164, in main() File "searxng_extra/update/update_currencies.py", line 157, in main add_currency_name(db, "pesos", 'MXN') File "searxng_extra/update/update_currencies.py", line 89, in add_currency_name iso4217_set.insert(0, iso4217) AttributeError: 'str' object has no attribute 'insert' Signed-off-by: Markus Heiser --- searxng_extra/update/update_currencies.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/searxng_extra/update/update_currencies.py b/searxng_extra/update/update_currencies.py index dfe0aa0c7..a126d1532 100755 --- a/searxng_extra/update/update_currencies.py +++ b/searxng_extra/update/update_currencies.py @@ -131,13 +131,6 @@ def fetch_db(): if 'unit' in r: add_currency_name(db, r['unit']['value'], iso4217, normalize_name=False) - # reduce memory usage: - # replace lists with one item by the item. - # see searx.search.processors.online_currency.name_to_iso4217 - for name in db['names']: - if len(db['names'][name]) == 1: - db['names'][name] = db['names'][name][0] - return db @@ -146,8 +139,9 @@ def get_filename(): def main(): - # + db = fetch_db() + # static add_currency_name(db, "euro", 'EUR') add_currency_name(db, "euros", 'EUR') @@ -156,6 +150,13 @@ def main(): add_currency_name(db, "peso", 'MXN') add_currency_name(db, "pesos", 'MXN') + # reduce memory usage: + # replace lists with one item by the item. see + # searx.search.processors.online_currency.name_to_iso4217 + for name in db['names']: + if len(db['names'][name]) == 1: + db['names'][name] = db['names'][name][0] + with open(get_filename(), 'w', encoding='utf8') as f: json.dump(db, f, ensure_ascii=False, indent=4)