Compare commits

..

9 Commits

Author SHA1 Message Date
renovate[bot]
9690d8632c fix(deps): update dependency pydantic-settings to v2.14.2 [security] 2026-06-21 03:27:12 +00:00
mealie-actions[bot]
62bb771758 chore(l10n): Crowdin locale sync (#7784)
Co-authored-by: GitHub Action <action@github.com>
2026-06-21 03:14:04 +00:00
renovate[bot]
0c04aa701f fix(deps): update dependency sqlalchemy to v2.0.51 (#7783)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-20 18:11:58 +00:00
renovate[bot]
fcba5216bc fix(deps): update dependency fastapi to v0.137.1 (#7778)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-20 13:28:51 +00:00
renovate[bot]
13fd74057c chore(deps): update dependency pylint to v4.0.6 (#7777)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-19 20:05:51 +00:00
renovate[bot]
92735196ef chore(deps): update dependency pytest to v9.1.0 (#7776)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-19 04:56:13 +00:00
renovate[bot]
c1176b323d chore(deps): update node.js to 032e78d (#7773)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 20:23:53 +00:00
renovate[bot]
dd94e1de77 chore(deps): update dependency dompurify to v3.4.11 [security] (#7772)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 20:06:26 +00:00
Michael Genson
4a099c168e fix: Various lint issues (#7766) 2026-06-17 10:57:45 -05:00
15 changed files with 582 additions and 582 deletions

View File

@@ -1,7 +1,7 @@
###############################################
# Frontend Build
###############################################
FROM node:24@sha256:40ad9f3064e67d6860b4bc3fe1880b2953934fd6320ada990e45fe0efa6badd7 \
FROM node:24@sha256:032e78d7e54e352129831743737e3a83171d9cc5b5896f411649c597ce0b11ea \
AS frontend-builder
WORKDIR /frontend

View File

@@ -45,7 +45,7 @@ function cont(x: number, D: number, mixed: boolean) {
let Q_2 = 1;
let Q_1 = 0;
let Q = 0;
let A = Math.floor(B);
let A: number;
while (Q_1 < D) {
A = Math.floor(B);
P = A * P_1 + P_2;

View File

@@ -26,7 +26,7 @@ const authUser = ref<UserOut | null>(null);
const authStatus = ref<"loading" | "authenticated" | "unauthenticated">("loading");
export const useAuthBackend = function (): AuthState {
const { $appInfo, $axios } = useNuxtApp();
const { $axios } = useNuxtApp();
const router = useRouter();
const runtimeConfig = useRuntimeConfig();

View File

@@ -59,7 +59,7 @@ export const LOCALES = [
{
name: "Slovenčina (Slovak)",
value: "sk-SK",
progress: 62,
progress: 64,
dir: "ltr",
pluralFoodHandling: "always",
},
@@ -185,7 +185,7 @@ export const LOCALES = [
{
name: "Français (French)",
value: "fr-FR",
progress: 82,
progress: 83,
dir: "ltr",
pluralFoodHandling: "always",
},
@@ -220,7 +220,7 @@ export const LOCALES = [
{
name: "Español (Spanish)",
value: "es-ES",
progress: 62,
progress: 64,
dir: "ltr",
pluralFoodHandling: "always",
},
@@ -262,7 +262,7 @@ export const LOCALES = [
{
name: "Čeština (Czech)",
value: "cs-CZ",
progress: 59,
progress: 60,
dir: "ltr",
pluralFoodHandling: "always",
},

View File

@@ -1,9 +1,9 @@
export function getTokenCookieOptions(): Parameters<typeof useCookie>[1] {
export function getTokenCookieOptions() {
const isSecureConnection = useNuxtApp().$appInfo.production && window?.location?.protocol === "https:";
return {
maxAge: useNuxtApp().$appInfo.tokenTime * 60 * 60,
secure: isSecureConnection,
sameSite: isSecureConnection ? "none" : "lax",
sameSite: (isSecureConnection ? "none" : "lax") as "none" | "lax",
partitioned: isSecureConnection,
};
}

View File

@@ -169,7 +169,7 @@
"token": "Token",
"tuesday": "Úterý",
"type": "Typ",
"undo": "Zpět",
"undo": "Undo",
"update": "Aktualizace",
"updated": "Aktualizováno",
"upload": "Nahrát",
@@ -224,8 +224,8 @@
"add-field": "Přidat pole",
"date-created": "Datum vytvoření",
"date-updated": "Datum aktualizace",
"key": "Klíč",
"value": "Hodnota"
"key": "Key",
"value": "Value"
},
"group": {
"are-you-sure-you-want-to-delete-the-group": "Jste si jisti, že chcete smazat <b>{groupName}<b/>?",
@@ -287,37 +287,37 @@
"total-households": "Celkem domácností",
"you-must-select-a-group-before-selecting-a-household": "Před výběrem domácnosti musíte vybrat skupinu",
"ai-provider-settings": {
"ai-provider-settings": "Nastavení AI providera",
"ai-provider": "AI provider",
"ai-providers": "AI provideři",
"ai-provider-settings": "AI Provider Settings",
"ai-provider": "AI Provider",
"ai-providers": "AI Providers",
"ai-provider-settings-description": "Configure AI providers to enable AI-powered features, such as enhanced ingredient parsing, creating recipes from videos, and more!",
"providers": "Provideři",
"create-provider": "Vytvořit providera",
"edit-provider": "Upravit providera",
"default-provider": "Výchozí provider",
"default-provider-description": "Požadováno pro povolení AI funkcí",
"audio-provider": "Audio provider",
"audio-provider-description": "Povoluje funkce přepisu audia jako vytváření receptů z videí",
"image-provider": "Provider obrázků",
"image-provider-description": "Povolit funkce rozpoznávání obrázků jako vytváření receptů z obrázků",
"provider-name": "Název providera",
"api-key": "Klíč API",
"api-key-description-create": "API klíč vašeho providera pro ověření. Pokud vaše služba (např. Ollama) nepoužívá API klíč, stále je potřeba sem něco vložit.",
"api-key-description-edit": "Vyplňte pouze pokud chcete změnit.",
"providers": "Providers",
"create-provider": "Create Provider",
"edit-provider": "Edit Provider",
"default-provider": "Default Provider",
"default-provider-description": "Required to enable AI features",
"audio-provider": "Audio Provider",
"audio-provider-description": "Enables audio transcription features, such as creating recipes from videos",
"image-provider": "Image Provider",
"image-provider-description": "Enables image recognition features, such as creating recipes from images",
"provider-name": "Provider Name",
"api-key": "API Key",
"api-key-description-create": "Your provider's API key for authentication. If your service (e.g. Ollama) doesn't use an API key, you still have to put something here.",
"api-key-description-edit": "Leave this blank unless you want to change it.",
"base-url": "Base URL",
"base-url-description": "If you're using OpenAI leave this blank. Must be an OpenAI-compatible endpoint (e.g. \"http://localhost:11434/v1\").",
"model": "Model",
"model-description": "Jaký model by měl váš AI provider použít (např. \"gpt-5\").",
"request-timeout-seconds": "Platnost požadavku (sekundy)",
"provider-created": "Provider vytvořen",
"provider-updated": "Provider aktualizován",
"provider-deleted": "Provider odstraněn",
"provider-create-failed": "Vytvoření providera se nezdařilo",
"provider-update-failed": "Aktualizace providera se nezdařila",
"provider-delete-failed": "Odstranění providera se nezdařilo",
"request-headers": "Hlavičky požadavků",
"request-params": "Parametry požadavků",
"no-default-provider-warning": "Nezvolili jste výchozího providera, AI funkce jsou zakázané"
"model-description": "Which model your AI provider should use (e.g. \"gpt-5\").",
"request-timeout-seconds": "Request Timeout (seconds)",
"provider-created": "Provider created",
"provider-updated": "Provider updated",
"provider-deleted": "Provider deleted",
"provider-create-failed": "Failed to create provider",
"provider-update-failed": "Failed to update provider",
"provider-delete-failed": "Failed to delete provider",
"request-headers": "Request Headers",
"request-params": "Request Parameters",
"no-default-provider-warning": "You have not set a default provider, so AI features are disabled"
}
},
"household": {
@@ -663,7 +663,7 @@
"create-recipe-description": "Vytvořit nový recept od nuly.",
"create-recipes": "Vytvořit recepty",
"import-with-zip": "Importovat pomocí .zip",
"create-recipe-from-images": "Vytvořit recept z obrázků",
"create-recipe-from-images": "Create Recipe from Images",
"create-recipe-from-an-image-description": "Vytvořte recept nahráním obrázku. Mealie se pokusí z obrázku extrahovat text pomocí AI a vytvořit z něj recept.",
"crop-and-rotate-the-image": "Oříznout a otočit obrázek tak, aby byl viditelný pouze text a aby byl ve správné orientaci.",
"create-from-images": "Vytvořit z obrázků",
@@ -952,7 +952,7 @@
"quantity": "Množství: {0}",
"shopping-list": "Nákupní seznam",
"shopping-lists": "Nákupní seznamy",
"add-item": "Přidat položku",
"add-item": "Add item",
"food": "Jídlo",
"note": "Poznámka",
"label": "Popisek",
@@ -978,7 +978,7 @@
"are-you-sure-you-want-to-uncheck-all-items": "Opravdu chcete zrušit výběr všech položek?",
"are-you-sure-you-want-to-delete-checked-items": "Opravdu chcete odstranit všechny vybrané položky?",
"no-shopping-lists-found": "Nebyly nalezeny žádné nákupní seznamy",
"item-checked-off": "Odškrtnuta položka {item}"
"item-checked-off": "Checked off {item}"
},
"sidebar": {
"all-recipes": "Všechny recepty",
@@ -1144,8 +1144,8 @@
},
"data-pages": {
"foods": {
"delete-affects-recipes": "Varování: toto jídlo je použito v {count} receptu(receptech). Odstranění zanechá v receptu(receptech) prázdnou ingrediencí.",
"delete-affects-recipes-more": "Zobrazit všechny {count} recepty",
"delete-affects-recipes": "Warning: this food is used in {count} recipe(s). Deleting it will leave an empty ingredient in the recipe(s).",
"delete-affects-recipes-more": "View all {count} recipes",
"merge-dialog-text": "Zkombinování zvolených potravin způsobí smazání zdrojové potraviny a veškeré odkazy na ni budou přesměrovány do cílové potraviny.",
"merge-food-example": "Sloučení {food1} do {food2}",
"seed-dialog-text": "Naplňte databázi potravinami z vašeho jazyka. Tímto vytvoříte přes 200 běžných potravin, které můžete použít k organizaci vaší databáze. Potraviny jsou přeloženy skrze komunitní úsilí.",

View File

@@ -1145,7 +1145,7 @@
"data-pages": {
"foods": {
"delete-affects-recipes": "Warning: this food is used in {count} recipe(s). Deleting it will leave an empty ingredient in the recipe(s).",
"delete-affects-recipes-more": "Zeige alle {count} Rezepte",
"delete-affects-recipes-more": "View all {count} recipes",
"merge-dialog-text": "Zusammenführen der ausgewählten Lebensmittel führt diese zusammen in ein einzelnes Lebensmittel. Die Ausgangslebensmittel werden gelöscht und alle Verweise werden auf das zusammengeführte Lebensmittel angepasst.",
"merge-food-example": "{food1} wird zu {food2} zusammengeführt",
"seed-dialog-text": "Füllt die Datenbank mit Lebensmitteln basierend auf deiner Landessprache. Hierdurch werden mehr als 200 gängige Lebensmittel eingetragen, die verwendet werden können, um die Datenbank zu organisieren. Die Lebensmittel werden von der Community übersetzt.",

View File

@@ -225,7 +225,7 @@
"date-created": "Date de création",
"date-updated": "Date de mise à jour",
"key": "Clé",
"value": "Valeur"
"value": "Value"
},
"group": {
"are-you-sure-you-want-to-delete-the-group": "Voulez-vous vraiment supprimer <b>{groupName}<b/>?",
@@ -287,36 +287,36 @@
"total-households": "Nombre de foyers",
"you-must-select-a-group-before-selecting-a-household": "Vous devez sélectionner un groupe avant de sélectionner un foyer",
"ai-provider-settings": {
"ai-provider-settings": "Paramètres du fournisseur d'IA",
"ai-provider": "Fournisseur d'IA",
"ai-providers": "Fournisseurs d'IA",
"ai-provider-settings": "AI Provider Settings",
"ai-provider": "AI Provider",
"ai-providers": "AI Providers",
"ai-provider-settings-description": "Configurez les fournisseurs d'IA pour activer les fonctionnalités alimentées par l'AI, telles que l'analyse améliorée des ingrédients, la création de recettes à partir de vidéos, et plus encore !",
"providers": "Fournisseurs",
"create-provider": "Créer un fournisseur",
"edit-provider": "Éditer le fournisseur",
"default-provider": "Fournisseur par défaut",
"default-provider-description": "Requis pour activer les fonctionnalités IA",
"audio-provider": "Fournisseur audio",
"audio-provider-description": "Active les fonctionnalités de transcription audio, comme la création de recettes à partir de vidéos",
"image-provider": "Fournisseur d'images",
"image-provider-description": "Active les fonctionnalités de reconnaissance d'image, comme la création de recettes à partir d'images",
"provider-name": "Nom du fournisseur",
"api-key": "Clé API",
"api-key-description-create": "La clé API de votre fournisseur pour l'authentification. Si votre service (par exemple Ollama) n'utilise pas une clé API, vous devez malgré tout toujours mettre quelque chose ici.",
"api-key-description-edit": "Laissez ce champ vide à moins que vous vouliez le modifier.",
"base-url": "URL de base",
"base-url-description": "Si vous utilisez OpenAI laissez ce champ vide. Doit être un point de terminaison compatible OpenAI (par exemple \"http://localhost:11434/v1\").",
"model": "Modèle",
"model-description": "Quel modèle doit utiliser votre fournisseur d'IA (par exemple \"gpt-5\").",
"request-timeout-seconds": "Délai d'attente de la requête (secondes)",
"provider-created": "Fournisseur créé",
"provider-updated": "Fournisseur mis à jour",
"provider-deleted": "Fournisseur supprimé",
"provider-create-failed": "Échec de la création du fournisseur",
"provider-update-failed": "Échec de la mise à jour du fournisseur",
"provider-delete-failed": "Échec de la suppression du fournisseur",
"request-headers": "En-têtes de la requête",
"request-params": "Paramètres de la requête",
"providers": "Providers",
"create-provider": "Create Provider",
"edit-provider": "Edit Provider",
"default-provider": "Default Provider",
"default-provider-description": "Required to enable AI features",
"audio-provider": "Audio Provider",
"audio-provider-description": "Enables audio transcription features, such as creating recipes from videos",
"image-provider": "Image Provider",
"image-provider-description": "Enables image recognition features, such as creating recipes from images",
"provider-name": "Provider Name",
"api-key": "API Key",
"api-key-description-create": "Your provider's API key for authentication. If your service (e.g. Ollama) doesn't use an API key, you still have to put something here.",
"api-key-description-edit": "Leave this blank unless you want to change it.",
"base-url": "Base URL",
"base-url-description": "If you're using OpenAI leave this blank. Must be an OpenAI-compatible endpoint (e.g. \"http://localhost:11434/v1\").",
"model": "Model",
"model-description": "Which model your AI provider should use (e.g. \"gpt-5\").",
"request-timeout-seconds": "Request Timeout (seconds)",
"provider-created": "Provider created",
"provider-updated": "Provider updated",
"provider-deleted": "Provider deleted",
"provider-create-failed": "Failed to create provider",
"provider-update-failed": "Failed to update provider",
"provider-delete-failed": "Failed to delete provider",
"request-headers": "Request Headers",
"request-params": "Request Parameters",
"no-default-provider-warning": "Vous n'avez pas défini de fournisseur par défaut, donc les fonctionnalités IA sont désactivées"
}
},
@@ -1144,8 +1144,8 @@
},
"data-pages": {
"foods": {
"delete-affects-recipes": "Attention : cet aliment est utilisé dans {count} recette(s). Le supprimer laissera un ingrédient vide dans la ou les recette(s).",
"delete-affects-recipes-more": "Visualiser les {count} recettes",
"delete-affects-recipes": "Warning: this food is used in {count} recipe(s). Deleting it will leave an empty ingredient in the recipe(s).",
"delete-affects-recipes-more": "View all {count} recipes",
"merge-dialog-text": "La combinaison des aliments sélectionnés fusionnera laliment source et laliment cible en un seul aliment. Laliment source sera supprimé et toutes les références à laliment source seront mises à jour pour pointer vers laliment cible.",
"merge-food-example": "Fusion de {food1} dans {food2}",
"seed-dialog-text": "Initialisez la base de données avec des aliments basés sur votre langue locale. Cela permettra de créer plus de 200 aliments communs qui pourront être utilisés pour organiser votre base de données. Les aliments sont traduits grâce à un effort communautaire.",

View File

@@ -1144,8 +1144,8 @@
},
"data-pages": {
"foods": {
"delete-affects-recipes": "Upozornenie: táto potravina sa používa v {count} receptoch (receptoch). Jej vymazaním zostane v recepte (receptoch) prázdna zložka.",
"delete-affects-recipes-more": "Zobraziť všetkých {count} receptov",
"delete-affects-recipes": "Warning: this food is used in {count} recipe(s). Deleting it will leave an empty ingredient in the recipe(s).",
"delete-affects-recipes-more": "View all {count} recipes",
"merge-dialog-text": "Kombináciou vybraných potravín sa zdrojové jedlo a cieľové jedlo zlúčia do jedného jedla. Zdrojové jedlo bude vymazané a všetky odkazy na zdrojové jedlo budú aktualizované tak, aby ukazovali na cieľové jedlo.",
"merge-food-example": "Zlučujem {food1} do {food2}",
"seed-dialog-text": "Naplňte databázu potravinami vo vašom jazyku. Tým vytvoríte viac ako 2700 bežných potravín, ktoré môžete použiť na organizovanie vašej databáze. Potraviny sú preložené vďaka úsiliu komunity.",

View File

@@ -5364,9 +5364,9 @@ domhandler@^5.0.2, domhandler@^5.0.3:
domelementtype "^2.3.0"
dompurify@^3.4.10, dompurify@^3.4.7:
version "3.4.10"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.10.tgz#96704295b4d8aeefcc8c7a90caa579b0ad69e46a"
integrity sha512-0xzNv0e7oYC6yyuOGZIABPM4qtg3QxLFniDNPP4ZP90wR8Yq3zgwpRbrNiT4N3IKqDbbYFEJLV+JWEs19aZ//w==
version "3.4.11"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.11.tgz#29c8ba496475f279ef4015784068452fb14a0680"
integrity sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw==
optionalDependencies:
"@types/trusted-types" "^2.0.7"

View File

@@ -419,8 +419,8 @@
"corn on the cob": {
"aliases": [],
"description": "",
"name": "kukuřičný klas",
"plural_name": "kukuřičné klasy"
"name": "corn on the cob",
"plural_name": "corn on the cob"
},
"radicchio": {
"aliases": [],
@@ -484,17 +484,17 @@
},
"maize": {
"aliases": [
"kukuřičná slupka"
"corn husk"
],
"description": "",
"name": "kukuřice",
"name": "maize",
"plural_name": "kukuřice"
},
"collard greens": {
"aliases": [],
"description": "",
"name": "kapusta",
"plural_name": "kapusty"
"name": "collard greens",
"plural_name": "collard greens"
},
"french-fried onion": {
"aliases": [],
@@ -554,7 +554,7 @@
"aliases": [],
"description": "",
"name": "hlávkový salát",
"plural_name": "bostonský salát"
"plural_name": "boston lettuce"
},
"kohlrabi": {
"aliases": [],
@@ -576,11 +576,11 @@
},
"Frisée": {
"aliases": [
"štěrbák"
"curly endive"
],
"description": "",
"name": "Čekanka",
"plural_name": "Čekanky"
"name": "Frisée",
"plural_name": "Frisées"
},
"anaheim pepper": {
"aliases": [],
@@ -591,14 +591,14 @@
"cress": {
"aliases": [],
"description": "",
"name": "řeřicha",
"plural_name": "řeřichy"
"name": "cress",
"plural_name": "cress"
},
"broccoli slaw": {
"aliases": [],
"description": "",
"name": "brokolicový salát",
"plural_name": "brokolisový salát"
"plural_name": "broccoli slaw"
},
"arbol chile pepper": {
"aliases": [],
@@ -622,7 +622,7 @@
"aliases": [],
"description": "",
"name": "vojtěška",
"plural_name": "vojtěšky"
"plural_name": "alfalfa"
}
}
},
@@ -1171,14 +1171,14 @@
"fig leaf": {
"aliases": [],
"description": "",
"name": "fíkový list",
"plural_name": "fíkové listy"
"name": "fig leaf",
"plural_name": "fig leaves"
},
"freeze-dried pineapple": {
"aliases": [],
"description": "",
"name": "lyofilizovaný ananas",
"plural_name": "lyofilizované ananasy"
"name": "freeze-dried pineapple",
"plural_name": "freeze-dried pineapples"
},
"pluot": {
"aliases": [],
@@ -1189,8 +1189,8 @@
"soursop": {
"aliases": [],
"description": "",
"name": "graviola",
"plural_name": "gravioly"
"name": "soursop",
"plural_name": "soursops"
},
"hog plum": {
"aliases": [],
@@ -1225,8 +1225,8 @@
"green ume plum": {
"aliases": [],
"description": "",
"name": "zelená ume švestka",
"plural_name": "zelené ume švestky"
"name": "green ume plum",
"plural_name": "green ume plums"
},
"kiwano": {
"aliases": [],
@@ -1301,8 +1301,8 @@
"black truffle": {
"aliases": [],
"description": "",
"name": "černý lanýž",
"plural_name": "černé lanýže"
"name": "black truffle",
"plural_name": "black truffles"
},
"morel mushroom": {
"aliases": [],
@@ -1355,8 +1355,8 @@
"white truffle": {
"aliases": [],
"description": "",
"name": "bílý lanýž",
"plural_name": "bílé lanýže"
"name": "white truffle",
"plural_name": "white truffles"
},
"white fungu": {
"aliases": [],
@@ -1503,8 +1503,8 @@
"dried cherry": {
"aliases": [],
"description": "",
"name": "sušená třešeň",
"plural_name": "sušené třešně"
"name": "dried cherry",
"plural_name": "dried cherries"
},
"juniper berry": {
"aliases": [],
@@ -2031,26 +2031,26 @@
"cheese": {
"aliases": [],
"description": "",
"name": "sýr",
"plural_name": "sýry"
"name": "cheese",
"plural_name": "cheese"
},
"mozzarella cheese": {
"aliases": [],
"description": "",
"name": "mozzarella",
"plural_name": "mozzarelly"
"name": "mozzarella cheese",
"plural_name": "mozzarella cheese"
},
"feta cheese": {
"aliases": [],
"description": "",
"name": "sýr feta",
"plural_name": "sýry feta"
"name": "feta cheese",
"plural_name": "feta cheese"
},
"ricotta cheese": {
"aliases": [],
"description": "",
"name": "sýr ricotta",
"plural_name": "sýry ricotta"
"name": "ricotta cheese",
"plural_name": "ricotta cheese"
},
"cheddar-jack cheese": {
"aliases": [],
@@ -2067,14 +2067,14 @@
"blue cheese": {
"aliases": [],
"description": "",
"name": "sýr s modrou plísní",
"plural_name": "sýry s modrou plísní"
"name": "blue cheese",
"plural_name": "blue cheese"
},
"goat cheese": {
"aliases": [],
"description": "",
"name": "kozí sýr",
"plural_name": "kozí sýry"
"name": "goat cheese",
"plural_name": "goat cheese"
},
"fresh mozzarella cheese": {
"aliases": [],
@@ -2884,7 +2884,7 @@
"aliases": [],
"description": "",
"name": "kachní vejce",
"plural_name": "kachní vejce"
"plural_name": "duck eggs"
},
"salted egg": {
"aliases": [],
@@ -2896,7 +2896,7 @@
"aliases": [],
"description": "",
"name": "skyr",
"plural_name": "skyry"
"plural_name": "skyrs"
},
"pumpkin spice coffee creamer": {
"aliases": [],
@@ -3181,8 +3181,8 @@
"soy milk": {
"aliases": [],
"description": "",
"name": "sojové mléko",
"plural_name": "sojová mléka"
"name": "soy milk",
"plural_name": "soy milk"
},
"extra firm tofu": {
"aliases": [],
@@ -3223,14 +3223,14 @@
"vegan cheese": {
"aliases": [],
"description": "",
"name": "veganský sýr",
"plural_name": "veganské sýry"
"name": "vegan cheese",
"plural_name": "vegan cheese"
},
"cashew butter": {
"aliases": [],
"description": "",
"name": "kešu máslo",
"plural_name": "kešu másla"
"name": "cashew butter",
"plural_name": "cashew butter"
},
"tempeh": {
"aliases": [],
@@ -3271,8 +3271,8 @@
"oat milk": {
"aliases": [],
"description": "",
"name": "ovesné mléko",
"plural_name": "ovesná mléka"
"name": "oat milk",
"plural_name": "oat milk"
},
"nut butter": {
"aliases": [],

View File

@@ -261,7 +261,7 @@
"mixed greens": {
"aliases": [],
"description": "",
"name": "mezcla de lechugas",
"name": "mixed greens",
"plural_name": "mézclum"
},
"parsnip": {
@@ -358,7 +358,7 @@
"aliases": [],
"description": "",
"name": "lechuga de manteca",
"plural_name": "lechuga mantequilla"
"plural_name": "butter lettuce"
},
"hash brown": {
"aliases": [],
@@ -419,8 +419,8 @@
"corn on the cob": {
"aliases": [],
"description": "",
"name": "elote",
"plural_name": "elotes"
"name": "corn on the cob",
"plural_name": "corn on the cob"
},
"radicchio": {
"aliases": [],
@@ -554,13 +554,13 @@
"aliases": [],
"description": "",
"name": "lechuga Boston",
"plural_name": "lechuga tipo Boston"
"plural_name": "boston lettuce"
},
"kohlrabi": {
"aliases": [],
"description": "",
"name": "colirrábano",
"plural_name": "colinabos"
"plural_name": "kohlrabi"
},
"fresno chile": {
"aliases": [],
@@ -576,7 +576,7 @@
},
"Frisée": {
"aliases": [
"escarola rizada"
"curly endive"
],
"description": "",
"name": "Frisée",
@@ -598,7 +598,7 @@
"aliases": [],
"description": "",
"name": "brócoli",
"plural_name": "ensalada de brócoli"
"plural_name": "broccoli slaw"
},
"arbol chile pepper": {
"aliases": [],
@@ -1232,7 +1232,7 @@
"aliases": [],
"description": "",
"name": "kiwano",
"plural_name": "kiwuano"
"plural_name": "kiwanos"
}
}
},
@@ -1427,7 +1427,7 @@
"honey fungu": {
"aliases": [],
"description": "",
"name": "hongo de miel",
"name": "honey fungus",
"plural_name": "setas de la miel"
},
"caesar's mushroom": {
@@ -1445,8 +1445,8 @@
"lions mane mushroom": {
"aliases": [],
"description": "",
"name": "melena de león",
"plural_name": "melenas de león"
"name": "lions mane mushroom",
"plural_name": "lions mane mushrooms"
}
}
},
@@ -1587,8 +1587,8 @@
"elderberry": {
"aliases": [],
"description": "",
"name": "baya de saúco",
"plural_name": "bayas de saúco"
"name": "elderberry",
"plural_name": "elderberries"
},
"freeze-dried blueberry": {
"aliases": [],
@@ -1605,38 +1605,38 @@
"dried elderberry": {
"aliases": [],
"description": "",
"name": "baya de saúco seca",
"plural_name": "bayas de saúco secas"
"name": "dried elderberry",
"plural_name": "dried elderberries"
},
"barberry": {
"aliases": [],
"description": "",
"name": "agracejo",
"plural_name": "agracejos"
"name": "barberry",
"plural_name": "barberries"
},
"dried berry": {
"aliases": [],
"description": "",
"name": "baya seca",
"plural_name": "bayas secas"
"name": "dried berry",
"plural_name": "dried berries"
},
"sea buckthorn": {
"aliases": [],
"description": "",
"name": "espino amarillo",
"plural_name": "espinos amarillos"
"name": "sea buckthorn",
"plural_name": "sea buckthorns"
},
"saskatoon berry": {
"aliases": [],
"description": "",
"name": "baya de saskatoon",
"plural_name": "bayas de saskatoon"
"name": "saskatoon berry",
"plural_name": "saskatoon berries"
},
"rosehip": {
"aliases": [],
"description": "",
"name": "rosa mosqueta",
"plural_name": "escaramujos"
"plural_name": "rosehips"
},
"hawthorn": {
"aliases": [],
@@ -1647,14 +1647,14 @@
"boysenberry": {
"aliases": [],
"description": "",
"name": "baya de Boysen",
"plural_name": "bayas de Boysen"
"name": "boysenberry",
"plural_name": "boysenberries"
},
"cloudberry": {
"aliases": [],
"description": "",
"name": "camemoro",
"plural_name": "camemoros"
"name": "cloudberry",
"plural_name": "cloudberries"
},
"freeze-dried berry": {
"aliases": [],
@@ -1666,37 +1666,37 @@
"aliases": [],
"description": "",
"name": "",
"plural_name": "bayas aronias"
"plural_name": "aronia berries"
},
"chokeberry": {
"aliases": [],
"description": "",
"name": "baya aronia",
"plural_name": "bayas aronia"
"name": "chokeberry",
"plural_name": "chokeberries"
},
"loganberry": {
"aliases": [],
"description": "",
"name": "mora-frambuesa",
"plural_name": "moras-frambuesas"
"name": "loganberry",
"plural_name": "loganberries"
},
"blackcurrant leaf": {
"aliases": [],
"description": "",
"name": "hoja de grosella negra",
"plural_name": "hojas de grosella negra"
"name": "blackcurrant leaf",
"plural_name": "blackcurrant leaves"
},
"haskap berry": {
"aliases": [],
"description": "",
"name": "haskap berry",
"plural_name": "madreselvas azules"
"plural_name": "haskap berries"
},
"dewberry": {
"aliases": [],
"description": "",
"name": "mora ártica",
"plural_name": "moras árticas"
"name": "dewberry",
"plural_name": "dewberries"
},
"sloe berry": {
"aliases": [],
@@ -1707,8 +1707,8 @@
"oregon grape": {
"aliases": [],
"description": "",
"name": "mahonia",
"plural_name": "uvas de Oregon"
"name": "oregon grape",
"plural_name": "oregon grapes"
}
}
},
@@ -1777,8 +1777,8 @@
"slivered almond": {
"aliases": [],
"description": "",
"name": "almendra fileteadas",
"plural_name": "almendras fileteadas"
"name": "slivered almond",
"plural_name": "slivered almonds"
},
"pumpkin seed": {
"aliases": [],
@@ -1819,20 +1819,20 @@
"chopped nut": {
"aliases": [],
"description": "",
"name": "nuez picada",
"plural_name": "nueces picadas"
"name": "chopped nut",
"plural_name": "chopped nuts"
},
"hemp heart": {
"aliases": [],
"description": "",
"name": "corazón de cáñamo",
"plural_name": "corazones de cáñamo"
"name": "hemp heart",
"plural_name": "hemp hearts"
},
"nigella seed": {
"aliases": [],
"description": "",
"name": "semilla de ajenuz",
"plural_name": "semillas de ajenuz"
"name": "nigella seed",
"plural_name": "nigella seeds"
},
"mixed nut": {
"aliases": [],
@@ -1879,8 +1879,8 @@
"lotus seed": {
"aliases": [],
"description": "",
"name": "semilla de loto",
"plural_name": "semillas de loto"
"name": "lotus seed",
"plural_name": "lotus seeds"
},
"white chia": {
"aliases": [],
@@ -1891,8 +1891,8 @@
"trail mix": {
"aliases": [],
"description": "",
"name": "mezcla de frutos secos",
"plural_name": "mezclas de frutos secos"
"name": "trail mix",
"plural_name": "trail mixes"
},
"basil seed": {
"aliases": [],
@@ -1903,14 +1903,14 @@
"candlenut": {
"aliases": [],
"description": "",
"name": "nuez de la India",
"plural_name": "nueces de la India"
"name": "candlenut",
"plural_name": "candlenuts"
},
"peanut brittle": {
"aliases": [],
"description": "",
"name": "palanqueta de cacahuate",
"plural_name": "palanquetas de cacahuate"
"name": "peanut brittle",
"plural_name": "peanut brittles"
},
"jackfruit seed": {
"aliases": [],
@@ -2022,11 +2022,11 @@
},
"sharp cheddar cheese": {
"aliases": [
"cheddar fuerte"
"sharp cheddar"
],
"description": "",
"name": "queso cheddar fuerte",
"plural_name": "queso cheddar fuerte"
"name": "sharp cheddar cheese",
"plural_name": "sharp cheddar cheese"
},
"cheese": {
"aliases": [],
@@ -2055,14 +2055,14 @@
"cheddar-jack cheese": {
"aliases": [],
"description": "",
"name": "queso cheddar jack",
"plural_name": "queso cheddar jack"
"name": "cheddar-jack cheese",
"plural_name": "cheddar-jack cheese"
},
"monterey jack cheese": {
"aliases": [],
"description": "",
"name": "queso monterey jack",
"plural_name": "queso monterey jack"
"name": "monterey jack cheese",
"plural_name": "monterey jack cheese"
},
"blue cheese": {
"aliases": [],
@@ -2079,8 +2079,8 @@
"fresh mozzarella cheese": {
"aliases": [],
"description": "",
"name": "queso mozzarella fresco",
"plural_name": "queso mozzarella fresco"
"name": "fresh mozzarella cheese",
"plural_name": "fresh mozzarella cheese"
},
"swis cheese": {
"aliases": [],
@@ -2091,14 +2091,14 @@
"pecorino cheese": {
"aliases": [],
"description": "",
"name": "queso pecorino",
"plural_name": "queso pecorino"
"name": "pecorino cheese",
"plural_name": "pecorino cheese"
},
"gruyere cheese": {
"aliases": [],
"description": "",
"name": "queso gruyer",
"plural_name": "queso gruyer"
"name": "gruyere cheese",
"plural_name": "gruyere cheese"
},
"mascarpone cheese": {
"aliases": [],
@@ -2121,86 +2121,86 @@
"provolone cheese": {
"aliases": [],
"description": "",
"name": "provolone",
"name": "provolone cheese",
"plural_name": "queso provolone"
},
"mexican cheese blend": {
"aliases": [],
"description": "",
"name": "mezcla de queso mexicano",
"plural_name": "mezcla de queso mexicano"
"name": "mexican cheese blend",
"plural_name": "mexican cheese blend"
},
"pepper jack cheese": {
"aliases": [],
"description": "",
"name": "pepper jack",
"plural_name": "pepper jack"
"name": "pepper jack cheese",
"plural_name": "pepper jack cheese"
},
"brie cheese": {
"aliases": [],
"description": "",
"name": "brie",
"plural_name": "brie"
"name": "brie cheese",
"plural_name": "brie cheese"
},
"paneer cheese": {
"aliases": [],
"description": "",
"name": "queso panir",
"plural_name": "queso panir"
"name": "paneer cheese",
"plural_name": "paneer cheese"
},
"fontina cheese": {
"aliases": [],
"description": "",
"name": "fontina",
"plural_name": "fontina"
"name": "fontina cheese",
"plural_name": "fontina cheese"
},
"queso fresco cheese": {
"aliases": [],
"description": "",
"name": "queso fresco",
"plural_name": "queso fresco"
"name": "queso fresco cheese",
"plural_name": "queso fresco cheese"
},
"quark cheese": {
"aliases": [],
"description": "",
"name": "queso quark",
"plural_name": "queso quark"
"name": "quark cheese",
"plural_name": "quark cheese"
},
"gouda cheese": {
"aliases": [],
"description": "",
"name": "gouda",
"plural_name": "gouda"
"name": "gouda cheese",
"plural_name": "gouda cheese"
},
"cotija cheese": {
"aliases": [],
"description": "",
"name": "queso cotija",
"plural_name": "queso cotija"
"name": "cotija cheese",
"plural_name": "cotija cheese"
},
"asiago cheese": {
"aliases": [],
"description": "",
"name": "queso asiago",
"plural_name": "asiago"
"name": "asiago cheese",
"plural_name": "asiago cheese"
},
"smoked cheese": {
"aliases": [],
"description": "",
"name": "queso ahumado",
"plural_name": "queso ahumado"
"name": "smoked cheese",
"plural_name": "smoked cheese"
},
"halloumi cheese": {
"aliases": [],
"description": "",
"name": "queso halloumi",
"plural_name": "queso halloumi"
"name": "halloumi cheese",
"plural_name": "halloumi cheese"
},
"chevre cheese": {
"aliases": [],
"description": "",
"name": "queso de cabra",
"plural_name": "queso de cabra"
"name": "chevre cheese",
"plural_name": "chevre cheese"
},
"manchego cheese": {
"aliases": [],
@@ -2211,98 +2211,98 @@
"italian cheese blend": {
"aliases": [],
"description": "",
"name": "mezcla de quesos italianos",
"plural_name": "mezcla de quesos italianos"
"name": "italian cheese blend",
"plural_name": "italian cheese blend"
},
"neufchatel cheese": {
"aliases": [],
"description": "",
"name": "queso neufchâtel",
"plural_name": "queso neufchâtel"
"name": "neufchatel cheese",
"plural_name": "neufchatel cheese"
},
"herb cream cheese": {
"aliases": [],
"description": "",
"name": "queso crema con hierbas",
"plural_name": "queso crema con hierbas"
"name": "herb cream cheese",
"plural_name": "herb cream cheese"
},
"burrata cheese": {
"aliases": [],
"description": "",
"name": "queso burrata",
"plural_name": "queso burrata"
"name": "burrata cheese",
"plural_name": "burrata cheese"
},
"havarti cheese": {
"aliases": [],
"description": "",
"name": "queso harvarti",
"plural_name": "queso havarti"
"plural_name": "havarti cheese"
},
"colby cheese": {
"aliases": [],
"description": "",
"name": "queso havarti",
"plural_name": "queso colby"
"name": "colby cheese",
"plural_name": "colby cheese"
},
"grana-padano cheese": {
"aliases": [],
"description": "",
"name": "queso Grana Padano",
"plural_name": "queso Grana Padano"
"name": "grana-padano cheese",
"plural_name": "grana-padano cheese"
},
"muenster cheese": {
"aliases": [],
"description": "",
"name": "queso muenster",
"plural_name": "queso muenster"
"name": "muenster cheese",
"plural_name": "muenster cheese"
},
"string cheese": {
"aliases": [],
"description": "",
"name": "queso en tiras",
"plural_name": "queso en tiras"
"name": "string cheese",
"plural_name": "string cheese"
},
"camembert cheese": {
"aliases": [],
"description": "",
"name": "queso camembert",
"plural_name": "queso camembert"
"name": "camembert cheese",
"plural_name": "camembert cheese"
},
"soft cheese": {
"aliases": [],
"description": "",
"name": "queso blando",
"plural_name": "queso blando"
"name": "soft cheese",
"plural_name": "soft cheese"
},
"stilton cheese": {
"aliases": [],
"description": "",
"name": "queso de stilton",
"plural_name": "queso de stilton"
"name": "stilton cheese",
"plural_name": "stilton cheese"
},
"raclette cheese": {
"aliases": [],
"description": "",
"name": "queso de raclette",
"plural_name": "queso de raclette"
"name": "raclette cheese",
"plural_name": "raclette cheese"
},
"colby-jack cheese": {
"aliases": [],
"description": "",
"name": "queso colby-jack",
"plural_name": "queso colby-jack"
"name": "colby-jack cheese",
"plural_name": "colby-jack cheese"
},
"jarlsberg cheese": {
"aliases": [],
"description": "",
"name": "queso jarlsberg",
"plural_name": "queso jarlsberg"
"name": "jarlsberg cheese",
"plural_name": "jarlsberg cheese"
},
"taleggio cheese": {
"aliases": [],
"description": "",
"name": "queso taleggio",
"plural_name": "queso taleggio"
"name": "taleggio cheese",
"plural_name": "taleggio cheese"
},
"oaxaca cheese": {
"aliases": [],
@@ -2313,73 +2313,73 @@
"labneh cheese": {
"aliases": [],
"description": "",
"name": "queso labneh",
"plural_name": "queso labneh"
"name": "labneh cheese",
"plural_name": "labneh cheese"
},
"edam cheese": {
"aliases": [],
"description": "",
"name": "queso edam",
"plural_name": "queso edam"
"name": "edam cheese",
"plural_name": "edam cheese"
},
"creamy cheese wedge": {
"aliases": [],
"description": "",
"name": "cuña de queso cremoso",
"plural_name": "cuñas de queso cremoso"
"name": "creamy cheese wedge",
"plural_name": "creamy cheese wedges"
},
"cheese powder cheese": {
"aliases": [],
"description": "",
"name": "queso en polvo",
"plural_name": "queso en polvo"
"name": "cheese powder cheese",
"plural_name": "cheese powder cheese"
},
"fromage blanc cheese": {
"aliases": [],
"description": "",
"name": "queso fromage blanc",
"plural_name": "queso fromage blanc"
"name": "fromage blanc cheese",
"plural_name": "fromage blanc cheese"
},
"asadero cheese": {
"aliases": [],
"description": "",
"name": "queso asadero",
"plural_name": "queso asadero"
"name": "asadero cheese",
"plural_name": "asadero cheese"
},
"marble cheese": {
"aliases": [],
"description": "",
"name": "queso veteado",
"plural_name": "queso veteado"
"name": "marble cheese",
"plural_name": "marble cheese"
},
"leicester cheese": {
"aliases": [],
"description": "",
"name": "queso leicester",
"plural_name": "queso leicester"
"name": "leicester cheese",
"plural_name": "leicester cheese"
},
"kefalotyri cheese": {
"aliases": [],
"description": "",
"name": "queso kefalotyri",
"plural_name": "queso kefalotyri"
"name": "kefalotyri cheese",
"plural_name": "kefalotyri cheese"
},
"mizithra cheese": {
"aliases": [],
"description": "",
"name": "mizithra cheese",
"plural_name": "queso mizithra"
"plural_name": "mizithra cheese"
},
"lancashire cheese": {
"aliases": [],
"description": "",
"name": "queso Lancashire",
"plural_name": "queso Lancashire"
"name": "lancashire cheese",
"plural_name": "lancashire cheese"
},
"kasseri cheese": {
"aliases": [],
"description": "",
"name": "queso kasseri",
"name": "kasseri cheese",
"plural_name": "kasseri cheese"
},
"babybel cheese": {
@@ -2457,8 +2457,8 @@
"hard goat cheese": {
"aliases": [],
"description": "",
"name": "queso de cabra curado",
"plural_name": "quesos de cabra curados"
"name": "hard goat cheese",
"plural_name": "hard goat cheese"
},
"kashkaval cheese": {
"aliases": [],
@@ -2523,92 +2523,92 @@
"queso quesadilla cheese": {
"aliases": [],
"description": "",
"name": "queso quesadilla",
"plural_name": "queso quesadilla"
"name": "queso quesadilla cheese",
"plural_name": "queso quesadilla cheese"
},
"caciocavallo cheese": {
"aliases": [],
"description": "",
"name": "queso caciocavallo",
"plural_name": "queso caciocavallo"
"name": "caciocavallo cheese",
"plural_name": "caciocavalloe cheese"
},
"requeijão cheese": {
"aliases": [],
"description": "",
"name": "queso requeijão",
"plural_name": "queso requeijão"
"name": "requeijão cheese",
"plural_name": "requeijãoe cheese"
},
"vacherin cheese": {
"aliases": [],
"description": "",
"name": "queso vacherin",
"plural_name": "queso vacherin"
"name": "vacherin cheese",
"plural_name": "vacherin cheese"
},
"brown cheese": {
"aliases": [],
"description": "",
"name": "queso castaño",
"plural_name": "queso castaño"
"name": "brown cheese",
"plural_name": "brown cheese"
},
"gloucester cheese": {
"aliases": [],
"description": "",
"name": "queso Gloucester",
"plural_name": "queso Gloucester"
"name": "gloucester cheese",
"plural_name": "gloucester cheese"
},
"port salut cheese": {
"aliases": [],
"description": "",
"name": "queso port salut",
"plural_name": "queso port salut"
"name": "port salut cheese",
"plural_name": "port salut cheese"
},
"derby cheese": {
"aliases": [],
"description": "",
"name": "queso derby",
"plural_name": "queso derby"
"name": "derby cheese",
"plural_name": "derby cheese"
},
"fontal cheese": {
"aliases": [],
"description": "",
"name": "queso fontal",
"plural_name": "queso fontal"
"name": "fontal cheese",
"plural_name": "fontal cheese"
},
"salad cheese": {
"aliases": [],
"description": "",
"name": "queso de ensalada",
"plural_name": "queso de ensalada"
"name": "salad cheese",
"plural_name": "salad cheese"
},
"truffle cheese": {
"aliases": [],
"description": "",
"name": "queso trufado",
"plural_name": "queso trufado"
"name": "truffle cheese",
"plural_name": "truffle cheese"
},
"epoisses cheese": {
"aliases": [],
"description": "",
"name": "queso époisses",
"plural_name": "queso époisses"
"name": "epoisses cheese",
"plural_name": "epoisses cheese"
},
"maasdam cheese": {
"aliases": [],
"description": "",
"name": "queso maasdam",
"plural_name": "queso maasdam"
"name": "maasdam cheese",
"plural_name": "maasdam cheese"
},
"petit-suisse cheese": {
"aliases": [],
"description": "",
"name": "queso petit-suisse",
"plural_name": "queso petit-suisse"
"name": "petit-suisse cheese",
"plural_name": "petit-suisse cheese"
},
"sbrinz cheese": {
"aliases": [],
"description": "",
"name": "queso sbrinz",
"plural_name": "queso sbrinz"
"name": "sbrinz cheese",
"plural_name": "sbrinz cheese"
}
}
},
@@ -2973,8 +2973,8 @@
"strawberry cream cheese": {
"aliases": [],
"description": "",
"name": "queso crema con frutilla",
"plural_name": "queso crema con frutilla"
"name": "strawberry cream cheese",
"plural_name": "strawberry cream cheese"
},
"goat butter": {
"aliases": [],
@@ -3223,8 +3223,8 @@
"vegan cheese": {
"aliases": [],
"description": "",
"name": "queso vegano",
"plural_name": "queso vegano"
"name": "vegan cheese",
"plural_name": "vegan cheese"
},
"cashew butter": {
"aliases": [],
@@ -3241,8 +3241,8 @@
"vegan cream cheese": {
"aliases": [],
"description": "",
"name": "queso crema vegano",
"plural_name": "queso crema vegano"
"name": "vegan cream cheese",
"plural_name": "vegan cream cheese"
},
"coconut yogurt": {
"aliases": [],
@@ -3553,8 +3553,8 @@
"vegan cream cheese frosting": {
"aliases": [],
"description": "",
"name": "glaseado de queso crema vegano",
"plural_name": "glaseados de queso crema vegano"
"name": "vegan cream cheese frosting",
"plural_name": "vegan cream cheese frostings"
},
"coconut manna": {
"aliases": [],
@@ -3583,8 +3583,8 @@
"cashew cheese sauce": {
"aliases": [],
"description": "",
"name": "salsa de queso cajuil",
"plural_name": "salsa de queso cajuil"
"name": "cashew cheese sauce",
"plural_name": "cashew cheese sauce"
},
"coconut fat": {
"aliases": [],
@@ -3637,8 +3637,8 @@
"cashew cream cheese": {
"aliases": [],
"description": "",
"name": "queso crema cajuil",
"plural_name": "queso crema cajuil"
"name": "cashew cream cheese",
"plural_name": "cashew cream cheese"
},
"cricket flour": {
"aliases": [],
@@ -8008,8 +8008,8 @@
"coffee bean": {
"aliases": [],
"description": "",
"name": "grano de café",
"plural_name": "granos de café"
"name": "coffee bean",
"plural_name": "coffee beans"
},
"toffee bit": {
"aliases": [],
@@ -9576,8 +9576,8 @@
"cheese tortellini": {
"aliases": [],
"description": "",
"name": "tortellini con queso",
"plural_name": "tortellini con queso"
"name": "cheese tortellini",
"plural_name": "cheese tortellinis"
},
"rice noodle": {
"aliases": [],
@@ -9696,8 +9696,8 @@
"mac 'n cheese": {
"aliases": [],
"description": "",
"name": "macarrones con queso",
"plural_name": "macaroones con queso"
"name": "mac 'n cheese",
"plural_name": "mac 'n cheese"
},
"penne rigate": {
"aliases": [],
@@ -11172,8 +11172,8 @@
"blue cheese dressing": {
"aliases": [],
"description": "",
"name": "aderezo de queso azul",
"plural_name": "aderezo de queso azul"
"name": "blue cheese dressing",
"plural_name": "blue cheese dressing"
},
"caesar dressing": {
"aliases": [],
@@ -12902,8 +12902,8 @@
"cheese dip": {
"aliases": [],
"description": "",
"name": "queso fundido",
"plural_name": "queso fundido"
"name": "cheese dip",
"plural_name": "cheese dip"
},
"black bean sauce": {
"aliases": [],

File diff suppressed because it is too large Load Diff

View File

@@ -9,13 +9,13 @@ dependencies = [
"Jinja2==3.1.6",
"Pillow==12.2.0",
"PyYAML==6.0.3",
"SQLAlchemy==2.0.50",
"SQLAlchemy==2.0.51",
"aiofiles==25.1.0",
"alembic==1.18.4",
"apprise==1.11.0",
"bcrypt==5.0.0",
"extruct==0.18.0",
"fastapi==0.136.3",
"fastapi==0.137.1",
"httpx==0.28.1",
"lxml==6.1.1",
"orjson==3.11.9",
@@ -37,7 +37,7 @@ dependencies = [
"authlib==1.7.2",
"html2text==2025.4.15",
"paho-mqtt==1.6.1",
"pydantic-settings==2.14.1",
"pydantic-settings==2.14.2",
"pillow-heif==1.4.0",
"pyjwt==2.13.0",
"openai==2.41.1",
@@ -67,8 +67,8 @@ dev = [
"mkdocs-material==9.7.6",
"mypy==2.1.0",
"pre-commit==4.6.0",
"pylint==4.0.5",
"pytest==9.0.3",
"pylint==4.0.6",
"pytest==9.1.0",
"pytest-asyncio==1.4.0",
"rich==15.0.0",
"ruff==0.15.17",

46
uv.lock generated
View File

@@ -431,7 +431,7 @@ wheels = [
[[package]]
name = "fastapi"
version = "0.136.3"
version = "0.137.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "annotated-doc" },
@@ -440,9 +440,9 @@ dependencies = [
{ name = "typing-extensions" },
{ name = "typing-inspection" },
]
sdist = { url = "https://files.pythonhosted.org/packages/81/2d/ff8d91d7b564d464629a0fd50a4489c97fcb836ac230bf3a7269232a9b1f/fastapi-0.136.3.tar.gz", hash = "sha256:e487fae93ad408e6f47641ee4dfe389864fd7bec92e547ea8498fc13f43e83ab", size = 396410, upload-time = "2026-05-23T18:53:15.192Z" }
sdist = { url = "https://files.pythonhosted.org/packages/d5/b1/e5b92c59d2c37817e77c1a8c2fc1f79cdcc04c68253e5406b43e3204cba7/fastapi-0.137.1.tar.gz", hash = "sha256:822360704230d9533d8d9475399613525968aa2f0b5bd2a3ccc9f18c88fd541c", size = 408293, upload-time = "2026-06-15T11:28:20.79Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e0/82/45359b62a067409bd929ae8a56b8ed13e5a8c8a61194b3c236920999ab83/fastapi-0.136.3-py3-none-any.whl", hash = "sha256:3d2a69bdf04b7e9f3afa292c3bc7a98816bbfafa10bc9b45f3f3700d2f761620", size = 117481, upload-time = "2026-05-23T18:53:16.924Z" },
{ url = "https://files.pythonhosted.org/packages/da/35/380b9a5922f4340e51c309cde09e5bd32e62f02302971bee30dc15aa0624/fastapi-0.137.1-py3-none-any.whl", hash = "sha256:64f6983c59e45c4b9fdc44e57cb8035c2451ee91ea8e8ec042aca37de7cf6b69", size = 121877, upload-time = "2026-06-15T11:28:19.523Z" },
]
[[package]]
@@ -967,7 +967,7 @@ requires-dist = [
{ name = "bcrypt", specifier = "==5.0.0" },
{ name = "beautifulsoup4", specifier = "==4.15.0" },
{ name = "extruct", specifier = "==0.18.0" },
{ name = "fastapi", specifier = "==0.136.3" },
{ name = "fastapi", specifier = "==0.137.1" },
{ name = "html2text", specifier = "==2025.4.15" },
{ name = "httpx", specifier = "==0.28.1" },
{ name = "httpx-curl-cffi", specifier = "==0.1.5" },
@@ -996,7 +996,7 @@ requires-dist = [
{ name = "rapidfuzz", specifier = "==3.14.5" },
{ name = "recipe-scrapers", specifier = "==15.11.0" },
{ name = "requests", specifier = "==2.34.2" },
{ name = "sqlalchemy", specifier = "==2.0.50" },
{ name = "sqlalchemy", specifier = "==2.0.51" },
{ name = "text-unidecode", specifier = "==1.3" },
{ name = "typing-extensions", specifier = "==4.15.0" },
{ name = "tzdata", specifier = "==2026.2" },
@@ -1014,8 +1014,8 @@ dev = [
{ name = "mypy", specifier = "==2.1.0" },
{ name = "pre-commit", specifier = "==4.6.0" },
{ name = "pydantic-to-typescript2", specifier = "==1.0.6" },
{ name = "pylint", specifier = "==4.0.5" },
{ name = "pytest", specifier = "==9.0.3" },
{ name = "pylint", specifier = "==4.0.6" },
{ name = "pytest", specifier = "==9.1.0" },
{ name = "pytest-asyncio", specifier = "==1.4.0" },
{ name = "rich", specifier = "==15.0.0" },
{ name = "ruff", specifier = "==0.15.17" },
@@ -1513,7 +1513,7 @@ wheels = [
[[package]]
name = "pylint"
version = "4.0.5"
version = "4.0.6"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "astroid" },
@@ -1524,9 +1524,9 @@ dependencies = [
{ name = "platformdirs" },
{ name = "tomlkit" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e4/b6/74d9a8a68b8067efce8d07707fe6a236324ee1e7808d2eb3646ec8517c7d/pylint-4.0.5.tar.gz", hash = "sha256:8cd6a618df75deb013bd7eb98327a95f02a6fb839205a6bbf5456ef96afb317c", size = 1572474, upload-time = "2026-02-20T09:07:33.621Z" }
sdist = { url = "https://files.pythonhosted.org/packages/7d/1d/3bb57f303701549550d74bf7ced2b07412be97125c167a0c9d216aa9f762/pylint-4.0.6.tar.gz", hash = "sha256:52f19191bee08bf103f9705ad1a0ece4aa5a0a4ef2bdcbd969375a1e6f6579d5", size = 1585588, upload-time = "2026-06-14T14:43:26.772Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d5/6f/9ac2548e290764781f9e7e2aaf0685b086379dabfb29ca38536985471eaf/pylint-4.0.5-py3-none-any.whl", hash = "sha256:00f51c9b14a3b3ae08cff6b2cdd43f28165c78b165b628692e428fb1f8dc2cf2", size = 536694, upload-time = "2026-02-20T09:07:31.028Z" },
{ url = "https://files.pythonhosted.org/packages/ab/da/acb2e7d4dbd2dfb792d38c0d850481f29ad7049b356d23f56c687d35203b/pylint-4.0.6-py3-none-any.whl", hash = "sha256:d11a0e1fdb7b1cd46ec5d6fc78fee8b95f28695b2d6140e5809925f61e32ea54", size = 538389, upload-time = "2026-06-14T14:43:24.873Z" },
]
[[package]]
@@ -1567,7 +1567,7 @@ wheels = [
[[package]]
name = "pytest"
version = "9.0.3"
version = "9.1.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -1576,9 +1576,9 @@ dependencies = [
{ name = "pluggy" },
{ name = "pygments" },
]
sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" }
sdist = { url = "https://files.pythonhosted.org/packages/84/0e/b5858858d74958632c49b72cb25a3976ff9f632397626715be71c89d3971/pytest-9.1.0.tar.gz", hash = "sha256:41dd9148c08072446394cefd3d79701701335a9f4cae69ba92e39f6c7f5c061c", size = 1634181, upload-time = "2026-06-13T18:52:45.983Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" },
{ url = "https://files.pythonhosted.org/packages/8b/5a/ba30a81239b909821b3153e303e7def45178bf353da4f72380e6c5e8793b/pytest-9.1.0-py3-none-any.whl", hash = "sha256:8ebb0e7888bdf2bdfc602ec51f8f62d50200af37356c74e503c79a94f5c81f32", size = 386453, upload-time = "2026-06-13T18:52:44.045Z" },
]
[[package]]
@@ -1853,22 +1853,22 @@ wheels = [
[[package]]
name = "sqlalchemy"
version = "2.0.50"
version = "2.0.51"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" },
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/57/da/6fbf010c8ebb347679d0d100b22fe9ba5e13fd04046c5df7280d2f0bf706/sqlalchemy-2.0.50.tar.gz", hash = "sha256:af5607d11ef90fd6a5c0549fe0045dce1663d427426bcfb506dcb5346a85a3b9", size = 9907424, upload-time = "2026-05-24T19:20:04.018Z" }
sdist = { url = "https://files.pythonhosted.org/packages/02/f1/a7a892f18d4d224e6b26f706531eafccc41e37594d37d304786969ee13cb/sqlalchemy-2.0.51.tar.gz", hash = "sha256:804dccd8a4a6242c4e30ad961e540e18a588f6527202f2d6791b01845d59fdc9", size = 9912201, upload-time = "2026-06-15T15:41:20.012Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/be/b0/a9d19b43f38f878b1278bca5b00b909f7540d41494396dd2561f9ad0956d/sqlalchemy-2.0.50-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23ae23d8b9d344d30d0a92f06d45825024a5790f1c1dd4cf452636a50d3e58cb", size = 2159807, upload-time = "2026-05-24T19:27:53.086Z" },
{ url = "https://files.pythonhosted.org/packages/f5/2c/191dd58a248fd2cfd4780fa82c375c505e4ad98c8b522fa69ec492130d77/sqlalchemy-2.0.50-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47b71b933e7b4ebad407c8fdfd70d2c4f08b78b3238bb30eebdd6eb32ca51b89", size = 3343358, upload-time = "2026-05-24T20:09:29.279Z" },
{ url = "https://files.pythonhosted.org/packages/8a/2b/514fce8a7df81cf5bad7ff7865de7ac0c5776a38cc043475c4703eb7fe8b/sqlalchemy-2.0.50-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:110fdac56ace278949f00de805edacbd6141e382d992f9ba28238b3a0827a600", size = 3357994, upload-time = "2026-05-24T20:17:13.495Z" },
{ url = "https://files.pythonhosted.org/packages/35/a6/a0e283f5494f92b0d77e319ff77e437b1ffe4a051ba67c81d53234825475/sqlalchemy-2.0.50-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0f5e4ac70e9e757f6b3e87c0491ff034442ecd8dfd36d041a50564c322dafc0e", size = 3289399, upload-time = "2026-05-24T20:09:32.239Z" },
{ url = "https://files.pythonhosted.org/packages/b7/96/1b07325ba71752d6a028b77d07bed1483ad545f794e8b1dc89b3ba3b3c68/sqlalchemy-2.0.50-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:724f3dcbe53dd0151e3cb5e7ec4ba4c620bede579caacd16275dc35ce06e8615", size = 3321216, upload-time = "2026-05-24T20:17:15.581Z" },
{ url = "https://files.pythonhosted.org/packages/ed/8e/bad6ed253e8a99edfc99af02f7173ec48a1d3ed1b9b35a1b8bc1700900cc/sqlalchemy-2.0.50-cp312-cp312-win32.whl", hash = "sha256:1208050441471d003b7c8cb4054fb084f185cf35ac3f0ea270803865bca9939a", size = 2119194, upload-time = "2026-05-24T19:50:04.943Z" },
{ url = "https://files.pythonhosted.org/packages/b6/2d/314a6690dda4b9cfc571eab1a63cf6fe6e1470aa3759ccda6aa016ee0f5a/sqlalchemy-2.0.50-cp312-cp312-win_amd64.whl", hash = "sha256:9d1af51558029a156a70986b7df88f042b3d158d7c8d8fb5072912d4b32d89c7", size = 2146186, upload-time = "2026-05-24T19:50:06.74Z" },
{ url = "https://files.pythonhosted.org/packages/d0/10/f7220e9b784d295d241c86ed99aeb537f92afcd469a64861f2717e9bb077/sqlalchemy-2.0.50-py3-none-any.whl", hash = "sha256:92064363517a3ff8212b5a93b8c62876579d8dfd1ca5b561335f30152d884fa9", size = 1943861, upload-time = "2026-05-24T19:59:01.119Z" },
{ url = "https://files.pythonhosted.org/packages/d5/70/e868bc5412acd101a8280f25c95f10eeae0771c4eb806b02491142810ee8/sqlalchemy-2.0.51-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d78702b26ba1c18b2d0fb2ea940ba7f17a9581b42e8361ff93920ebbee1235a", size = 2160291, upload-time = "2026-06-15T16:08:48.918Z" },
{ url = "https://files.pythonhosted.org/packages/e5/1c/71ee0f8a6b9d7316a1ccd30430b4c62b6c2e36adc96017a4e3a72dce49d6/sqlalchemy-2.0.51-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581921d849d6e6f994d560389192955e80e2950e18fcdfe2ccea863e01158e6e", size = 3343835, upload-time = "2026-06-15T16:19:42.613Z" },
{ url = "https://files.pythonhosted.org/packages/2b/7c/7ab9f9aadc5944fdd06612484ed7918fe376ad871a5f50404dc1536e0194/sqlalchemy-2.0.51-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1d21ce524ab86c23046e992a5b81cb54c21079c6df6e78b8fc77d77cac70a6b9", size = 3358470, upload-time = "2026-06-15T16:26:38.011Z" },
{ url = "https://files.pythonhosted.org/packages/d0/7d/ff77169fee6186de145a7f2b87006c39638391130abbab2b1f63ac6ea583/sqlalchemy-2.0.51-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c5d98a2709840027f5a347c3af0a7c3d5f6c1ff93af2ca1c54494e23cba8f389", size = 3289874, upload-time = "2026-06-15T16:19:45.212Z" },
{ url = "https://files.pythonhosted.org/packages/6f/3b/6c505903710d781b55bc3141ee34a062bf9745a6b5bc7333305b9ed63b33/sqlalchemy-2.0.51-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1181256e0f16479691b5616d36375dc2620ad8332b25978763c3d206ad3f3f1d", size = 3321692, upload-time = "2026-06-15T16:26:39.747Z" },
{ url = "https://files.pythonhosted.org/packages/3c/b7/c5ffe50aa2f4d947c9250e1519d939260329a07fe6272edfccd784b3d007/sqlalchemy-2.0.51-cp312-cp312-win32.whl", hash = "sha256:9f380393be5abeb6815f68fd39271b95127173511b6706b0a630a9995d53f8f5", size = 2119674, upload-time = "2026-06-15T16:23:09.543Z" },
{ url = "https://files.pythonhosted.org/packages/25/dc/46a65916af68a06ef6b972c6050ba4c8f97070fe3fb33097d34229d9bef6/sqlalchemy-2.0.51-cp312-cp312-win_amd64.whl", hash = "sha256:2cf39aabdf48e87c1c2c2ed6d20d33ffa0733b3071ce9c5f66357947dd009080", size = 2146670, upload-time = "2026-06-15T16:23:11.048Z" },
{ url = "https://files.pythonhosted.org/packages/e2/22/dbf013a12ec759e54a34a119e9e217435b3f71b2dd5c61a7ade0a25dae87/sqlalchemy-2.0.51-py3-none-any.whl", hash = "sha256:bb024d8b621d0be75f4f44ecc7c950450026e76d66dc8f791bb5331d7fed59d5", size = 1944334, upload-time = "2026-06-15T16:09:22.418Z" },
]
[[package]]