1
0
Fork 0
mirror of https://github.com/mealie-recipes/mealie.git synced 2025-07-21 22:29:39 +02:00

fix: handle recipe-scraper returning a int causing clean_time to return None (#5522)

This commit is contained in:
Ceri Loosley 2025-06-12 18:34:24 +01:00 committed by GitHub
parent cacb197aa8
commit b87edc823a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,6 +2,7 @@ import contextlib
import functools import functools
import html import html
import json import json
import numbers
import operator import operator
import re import re
import typing import typing
@ -392,7 +393,7 @@ def clean_yield(yields: str | list[str] | None) -> tuple[float, float, str]:
return servings_qty, yld_qty, yld_str return servings_qty, yld_qty, yld_str
def clean_time(time_entry: str | timedelta | None, translator: Translator) -> None | str: def clean_time(time_entry: str | timedelta | int | float | None, translator: Translator) -> None | str:
"""_summary_ """_summary_
Supported Structures: Supported Structures:
@ -401,6 +402,7 @@ def clean_time(time_entry: str | timedelta | None, translator: Translator) -> No
- `"PT1H30M"` - returns "1 hour 30 minutes" - `"PT1H30M"` - returns "1 hour 30 minutes"
- `timedelta(hours=1, minutes=30)` - returns "1 hour 30 minutes" - `timedelta(hours=1, minutes=30)` - returns "1 hour 30 minutes"
- `{"minValue": "PT1H30M"}` - returns "1 hour 30 minutes" - `{"minValue": "PT1H30M"}` - returns "1 hour 30 minutes"
- `30` - as a `int` or `float` assumed to be in minutes, returns "30 minutes"
Raises: Raises:
TypeError: if the type is not supported a TypeError is raised TypeError: if the type is not supported a TypeError is raised
@ -412,6 +414,10 @@ def clean_time(time_entry: str | timedelta | None, translator: Translator) -> No
return None return None
match time_entry: match time_entry:
case numbers.Number():
# type checked by case statement
time_delta = timedelta(minutes=time_entry) # type: ignore
return pretty_print_timedelta(time_delta, translator)
case str(time_entry): case str(time_entry):
if not time_entry.strip(): if not time_entry.strip():
return None return None
@ -431,7 +437,9 @@ def clean_time(time_entry: str | timedelta | None, translator: Translator) -> No
# TODO: Not sure what to do here # TODO: Not sure what to do here
return str(time_entry) return str(time_entry)
case _: case _:
logger.warning("[SCRAPER] Unexpected type or structure for variable time_entry") logger.warning(
"[SCRAPER] Unexpected type(%s) or structure for variable time_entry: %s", type(time_entry), time_entry
)
return None return None