19 Commits

Author SHA1 Message Date
admin e922822286 v0.8.3: prefer h1 for mindmegette title, strip trailing "recept" globally
Mindmegette regular pages: use h1 element (clean meal name like
"Sajtkrémes csirkés leves") instead of og:title (which has "receptje"
suffix). Also add global post-processing to strip trailing recept/
receptje/receptek from titles across all parsers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:43:24 +01:00
admin 76846eb427 fix(mindmegette): use meal name h2 as title for alt-format pages
Alt-format pages (e.g. /alapetelek/) have the meal name in an h2
element above the Hozzávalók header, which is more useful than the
long article title from og:title.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:36:31 +01:00
admin 6f12cc06a4 v0.8.1: fix mindmegette alt page format (wysiwyg ingredients/instructions)
Support alternative mindmegette.hu pages (e.g. /alapetelek/) where
ingredients are in <ul> after h3 "Hozzávalók" and instructions in <ol>
after h3 "Elkészítés" inside the wysiwyg box, instead of structured
div.ingredients containers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:30:47 +01:00
admin 0ec9ce0c6d v0.8.0: gastrohobbi.hu parser, fix ingredient fraction parsing
Add gastrohobbi.hu parser (WPBakery page builder layout): ingredients
with groups, instructions with embedded lists, tags from JSON-LD
articleSection, prep time extraction.

Fix ingredient line parser: fractions like "1/2" no longer split due to
regex backtracking, en-dash ranges normalized, unicode fractions (½¼¾)
recognized as quantity start across all parsers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 19:17:13 +01:00
admin bab59753f3 Fix kiskegyed ingredient parsing: spaces around links, multi-word units
- Use get_text(" ") with whitespace normalization to preserve spaces
  between text nodes and <a> tag content in ingredient lines
- Use non-greedy .+? for unit in dual measurement regex to handle
  multi-word units like "kis fej"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:47:41 +01:00
admin 20fabb84bf v0.7.0: kiskegyed.hu parser, dual measurements, site links as URLs
- New parser for kiskegyed.hu: ingredients (with groups, dual measurements),
  instructions (ol > li > div), tags (section.tags)
- Dual measurement handling: "3 ek (70 g)" extracts alternate measurement
  to comment field
- Cross-site linking: kiskegyed→sobors links are followed to get full recipe
  (mirrors existing sobors→kiskegyed support)
- Supported sites now shown as clickable URLs in the import page
- supported_sites() returns dicts with name and url

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:45:25 +01:00
admin 2408984421 Extract ingredient comments from food field, add import-to-both button
- Global post-processing in scrape() extracts trailing (comment) from
  ingredient food names into the extra/comment field. Works for all parsers.
- Added "Importálás mindkettőbe" button on single import page when both
  Mealie and Tandoor are configured.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:27:58 +01:00
admin baa63a43b2 v0.6.1: follow linked recipes on sobors.hu, white favicon
- Sobors.hu parser: detect external links in instructions and follow them
  to scrape real recipe content (e.g. kiskegyed.hu linked recipes)
- Article-style ingredient fallback for sobors.hu pages without structured
  ingredient containers (h4 + ul > li plain text)
- Favicon changed to logo_notext_white.svg

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:18:54 +01:00
admin a0bcb62588 v0.6.0: Sobors.hu parser, HTTP auth, recipe validation, UI polish
- New sobors.hu parser with ingredient groups and section headers
- Incomplete recipe warnings (missing ingredients/instructions)
- Optional HTTP Basic Auth (configurable on settings page)
- Brand text: "Recept" in white, "Importáló" in blue
- Larger logo (36px), favicon using logo_notext.svg

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:07:05 +01:00
admin 00b097566a Fix nosalty tag extraction: scope to recipe attribute list
The m-tags__tagItem class is used site-wide for SEO/navigation links.
Scope tag extraction to div.p-recipe__attributeList to only get
actual recipe tags.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:41:29 +01:00
admin 73a2319f5a Add nosalty.hu parser
Extracts ingredients (with groups), instructions (with section
headers), tags, and story-as-description from nosalty.hu recipe pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:40:16 +01:00
admin 4dde7bd8b5 Extract parenthesised notes from food name to extra field
E.g. "fehérborecet (ízlés szerint)" → food="fehérborecet", extra="ízlés szerint"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:10:42 +01:00
admin bef4b9978d Add streetkitchen.hu parser with ingredient groups and multiple instruction formats
Handles three instruction layouts: ol steps, ul steps, and paragraph-style.
Parses merged qty+unit strings (e.g. "200g" → qty=200, unit=g).
Deduplicates ingredients by targeting the specific grid container.
Tags extracted from JSON-LD recipeCategory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:02:39 +01:00
admin bbd0889471 feat: tag management — scrape, edit, search existing, import to Mealie/Tandoor
- Scraper extracts tags from mindmegette.hu (<a class="tag">) and schema.org keywords
- Tag editor UI with removable chips, search/autocomplete for existing tags, custom add
- Mealie: auto-create tags via POST /api/organizers/tags, include in recipe PATCH
- Tandoor: include keywords in recipe POST (auto-created by name)
- New GET /tags endpoint returns existing tags from both services for search

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:42:54 +01:00
admin a27b322409 fix: group title on first ingredient + multi-site parser registry
- Fix ingredient groups creating empty entries in Mealie: set title
  field on the first ingredient after the group marker instead
- Refactor scraper with @_register decorator for URL-based site dispatch
- Update README with structured ingredients, groups, MEALIE_INTERNAL_URL

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 08:51:14 +01:00
admin c235d5caa7 fix: image upload (add extension field) + ingredient groups
- Fix Mealie image upload 422: send required `extension` field in form data
- Parse ingredient groups from mindmegette (multiple div.ingredients
  containers with strong.ingredients-group titles)
- Show group headers in UI with dashed-border accent input
- Pass group markers through to Mealie as title-only ingredient entries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 08:44:34 +01:00
admin cb669f1861 feat: structured ingredients with unit/food resolution
Scraper returns {quantity, unit, food, extra} dicts instead of flat
strings. UI shows 4-column ingredient editor. Mealie client resolves
unit/food IDs via API (creates missing ones automatically).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 08:33:24 +01:00
admin 0192de5177 fix: ingredient parsing — match actual HTML elements and add spaces
The scraper looked for span.quantity/span.unit/span.name which don't
exist. The real HTML uses <strong> for qty, plain <span> for unit,
<a class="ingredients-link"> for name, and <small> for extras like
"(darált)". Also add referenceId to Mealie ingredients (required field).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 08:11:28 +01:00
admin f600885b14 feat: initial recipe-importer application
Python/Flask web app that scrapes Hungarian recipe sites (mindmegette.hu)
and imports them into Mealie via its REST API. Includes dark-themed web UI
with editable preview, Dockerfile, build script, and docker-compose.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 21:52:46 +01:00