From 393aba1f319443eb937a253e6fe7c5add33f466d Mon Sep 17 00:00:00 2001 From: smilerz Date: Tue, 6 Apr 2021 07:02:43 -0500 Subject: [PATCH] url import bug fixes --- cookbook/helper/recipe_html_import.py | 21 +++++++++++++-------- cookbook/helper/recipe_url_import.py | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/cookbook/helper/recipe_html_import.py b/cookbook/helper/recipe_html_import.py index 7bee63cd..3a57193c 100644 --- a/cookbook/helper/recipe_html_import.py +++ b/cookbook/helper/recipe_html_import.py @@ -84,12 +84,17 @@ def get_recipe_from_source(text, url, space): for el in soup.find_all('script', type='application/ld+json'): el = remove_graph(el) if type(el) == list: - for l in el: - parse_list.append(l) - else: + for le in el: + parse_list.append(le) + elif type(el) == dict: parse_list.append(el) for el in soup.find_all(type='application/json'): - parse_list.append(remove_graph(el)) + el = remove_graph(el) + if type(el) == list: + for le in el: + parse_list.append(le) + elif type(el) == dict: + parse_list.append(el) # if a url was not provided, try to find one in the first document if not url and len(parse_list) > 0: @@ -182,10 +187,10 @@ def remove_graph(el): if isinstance(el, Tag): try: el = json.loads(el.string) + if '@graph' in el: + for x in el['@graph']: + if '@type' in x and x['@type'] == 'Recipe': + el = x except TypeError: pass - if '@graph' in el: - for x in el['@graph']: - if '@type' in x and x['@type'] == 'Recipe': - el = x return el diff --git a/cookbook/helper/recipe_url_import.py b/cookbook/helper/recipe_url_import.py index 1e089f85..7d0d14e9 100644 --- a/cookbook/helper/recipe_url_import.py +++ b/cookbook/helper/recipe_url_import.py @@ -284,7 +284,7 @@ def parse_keywords(keyword_json, space): for kw in keyword_json: kw = normalize_string(kw) if k := Keyword.objects.filter(name=kw, space=space).first(): - if len (k['text']) > 0: + if len(k) != 0: keywords.append({'id': str(k.id), 'text': str(k)}) else: keywords.append({'id': random.randrange(1111111, 9999999, 1), 'text': kw})