mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-06-23 15:31:37 -04:00
fix: Missing Paprika and Nextcloud Migration Data (#2434)
* fixed paprika url key * fixed paprika total and prep time aliases * added nextcloud time parsing * mapped paprika categories to tags * cleaned up netcloud parsetime
This commit is contained in:
parent
c783d86a2a
commit
c25b58e404
@ -1,3 +1,4 @@
|
|||||||
|
import re
|
||||||
import tempfile
|
import tempfile
|
||||||
import zipfile
|
import zipfile
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
@ -43,7 +44,10 @@ class NextcloudMigrator(BaseMigrator):
|
|||||||
|
|
||||||
self.key_aliases = [
|
self.key_aliases = [
|
||||||
MigrationAlias(key="tags", alias="keywords", func=split_by_comma),
|
MigrationAlias(key="tags", alias="keywords", func=split_by_comma),
|
||||||
MigrationAlias(key="org_url", alias="url", func=None),
|
MigrationAlias(key="orgURL", alias="url", func=None),
|
||||||
|
MigrationAlias(key="totalTime", alias="totalTime", func=parse_time),
|
||||||
|
MigrationAlias(key="prepTime", alias="prepTime", func=parse_time),
|
||||||
|
MigrationAlias(key="performTime", alias="cookTime", func=parse_time),
|
||||||
]
|
]
|
||||||
|
|
||||||
def _migrate(self) -> None:
|
def _migrate(self) -> None:
|
||||||
@ -69,3 +73,24 @@ class NextcloudMigrator(BaseMigrator):
|
|||||||
nc_dir = nextcloud_dirs[slug]
|
nc_dir = nextcloud_dirs[slug]
|
||||||
if nc_dir.image:
|
if nc_dir.image:
|
||||||
import_image(nc_dir.image, recipe_id)
|
import_image(nc_dir.image, recipe_id)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_time(time: str) -> str:
|
||||||
|
"""Parses a Nextcloud time string in the format 'PT{hours}H{minutes}M{seconds}S'"""
|
||||||
|
|
||||||
|
# TODO: make singular and plural translatable
|
||||||
|
hours = {"singular": "hour", "plural": "hours", "exp": r"\d+(?=H)"}
|
||||||
|
minutes = {"singular": "minute", "plural": "minutes", "exp": r"\d+(?=M)"}
|
||||||
|
seconds = {"singular": "second", "plural": "seconds", "exp": r"\d+(?=S)"}
|
||||||
|
|
||||||
|
return_strings: list[str] = []
|
||||||
|
for time_part in [hours, minutes, seconds]:
|
||||||
|
val_search = re.search(time_part["exp"], time)
|
||||||
|
if not val_search:
|
||||||
|
continue
|
||||||
|
val = val_search.group()
|
||||||
|
if val == "0":
|
||||||
|
continue
|
||||||
|
return_strings.append(f'{val} {time_part["singular"] if val == "1" else time_part["plural"]}')
|
||||||
|
|
||||||
|
return " ".join(return_strings) if return_strings else time
|
||||||
|
@ -39,9 +39,14 @@ class PaprikaMigrator(BaseMigrator):
|
|||||||
|
|
||||||
self.key_aliases = [
|
self.key_aliases = [
|
||||||
MigrationAlias(key="recipeIngredient", alias="ingredients", func=lambda x: x.split("\n")),
|
MigrationAlias(key="recipeIngredient", alias="ingredients", func=lambda x: x.split("\n")),
|
||||||
MigrationAlias(key="orgUrl", alias="source_url", func=None),
|
MigrationAlias(key="orgURL", alias="source_url", func=None),
|
||||||
|
MigrationAlias(key="totalTime", alias="total_time", func=None),
|
||||||
|
MigrationAlias(key="prepTime", alias="prep_time", func=None),
|
||||||
MigrationAlias(key="performTime", alias="cook_time", func=None),
|
MigrationAlias(key="performTime", alias="cook_time", func=None),
|
||||||
MigrationAlias(key="recipeYield", alias="servings", func=None),
|
MigrationAlias(key="recipeYield", alias="servings", func=None),
|
||||||
|
MigrationAlias(
|
||||||
|
key="tags", alias="categories", func=None
|
||||||
|
), # Paprika doesn't support tags, and instead puts tags in categories
|
||||||
MigrationAlias(key="image", alias="image_url", func=None),
|
MigrationAlias(key="image", alias="image_url", func=None),
|
||||||
MigrationAlias(key="dateAdded", alias="created", func=lambda x: x[: x.find(" ")]),
|
MigrationAlias(key="dateAdded", alias="created", func=lambda x: x[: x.find(" ")]),
|
||||||
MigrationAlias(
|
MigrationAlias(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user