initial commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Mealie Batch Recipe Import
|
||||
|
||||
Authenticate via API and bulk-import recipes from URLs. Mealie's built-in scraper handles ~300+ sites but reliability varies wildly.
|
||||
|
||||
## API Auth Pattern
|
||||
|
||||
```python
|
||||
import requests
|
||||
|
||||
MEALIE = "http://127.0.0.1:9925" # or https://grajmedia.duckdns.org:3449
|
||||
|
||||
resp = requests.post(
|
||||
f"{MEALIE}/api/auth/token",
|
||||
data={"username": "email@example.com", "password": "password", "grant_type": ""},
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded"}
|
||||
)
|
||||
token = resp.json()["access_token"]
|
||||
headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
|
||||
```
|
||||
|
||||
## Batch Import
|
||||
|
||||
```python
|
||||
urls = ["https://example.com/recipe-1", "https://example.com/recipe-2"]
|
||||
|
||||
for url in urls:
|
||||
resp = requests.post(
|
||||
f"{MEALIE}/api/recipes/create/url",
|
||||
json={"url": url},
|
||||
headers=headers,
|
||||
timeout=60
|
||||
)
|
||||
# 200/201 = success, 400 = scraper failed
|
||||
```
|
||||
|
||||
## Scraper Reliability (as of June 2026)
|
||||
|
||||
| Site | Reliability | Notes |
|
||||
|---|---|---|
|
||||
| BBC Good Food | High | Consistently works |
|
||||
| RecipeTin Eats | High | Good parser support |
|
||||
| Budget Bytes | Medium | HTTPException ~30% of the time, retry helps |
|
||||
| Damn Delicious | Medium | Intermittent blocks |
|
||||
| AllRecipes | Low | Frequently blocked (Cloudflare) |
|
||||
| Simply Recipes | Low | Frequently blocked |
|
||||
| Gimme Some Oven | Low | Frequently blocked |
|
||||
|
||||
Add `time.sleep(1.5)` between requests to avoid rate limiting.
|
||||
|
||||
## URL Format
|
||||
|
||||
The `/api/recipes/create/url` endpoint expects a full recipe page URL. It does NOT accept search results, category pages, or non-recipe URLs. The scraper extracts title, ingredients, steps, image, and metadata automatically.
|
||||
Reference in New Issue
Block a user