No description
Find a file
2026-04-12 18:12:29 +02:00
tests feat: add week first day 2026-04-12 18:12:29 +02:00
.gitignore first commit 2026-04-12 15:55:59 +02:00
.python-version first commit 2026-04-12 15:55:59 +02:00
main.py feat: add week first day 2026-04-12 18:12:29 +02:00
pyproject.toml feat: proper name for uvx usage 2026-04-12 15:57:19 +02:00
README.md feat: add week first day 2026-04-12 18:12:29 +02:00
uv.lock first commit 2026-04-12 15:55:59 +02:00

hello-fresh-extract

Extract HelloFresh France menu recipes and export them as a Markdown checklist.

Features

  • Parse recipes from https://www.hellofresh.fr/menus
  • Optional week-specific menu via YYYY-Www format (example: 2026-W17)
  • Configurable normalized image width via --image-width (default: 400)
  • Markdown output with unchecked checkboxes:
    • title + subtitle on first line
    • image URL on next line
    • time on next line
    • tag on next line
  • Image URL normalization for HelloFresh transformed media links:
    • example: .../w_3840,.../c_fill,.../hellofresh_s3/image/...jpg
    • becomes: .../w_400/hellofresh_s3/image/...jpg
  • Output file naming:
    • default menu: menus.md
    • week menu: <week>-<monday>.md (example: 2026-W17-2026-04-20.md)

Install

uv sync

Usage

Current/default menu

python3 main.py

Writes menus.md.

Specific week menu

python3 main.py --week 2026-W17

Fetches https://www.hellofresh.fr/menus/2026-W17 and writes 2026-W17-2026-04-20.md.

Specific week menu with custom image width

python3 main.py --week 2026-W17 --image-width 720

Image URLs are normalized to .../w_720/hellofresh_s3/image/....

Markdown output example

# HelloFresh menu 2026-W17
## Monday 2026-04-20

- [ ] **Poulet rôti** — avec pommes de terre  
  ![](https://media.hellofresh.com/image-a.jpg)  
  Temps: 35 min  
  Tag: Œufs non inclus

Testing

This project includes unit tests + a simple smoke test.

Run all tests:

pytest -q

Lint and type-check

ruff check .
uvx pyright --pythonpath .venv/bin/python