From 0ebff871a5fce90c16228d02cdf3fd0787b04d0c 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)