Welcome to the web-based interface for Mealie Recipe Dredger! This is a complete, standalone Flask application that allows you to manage and control recipe scraping through your browser.
pip install -r requirements.txtpython app.pyNavigate to: http://localhost:5000
web_interface/
βββ app.py # Main Flask application
βββ migrate.py # Migration tool (if needed)
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ README_WEB_INTERFACE.md # Detailed documentation
β
βββ config/ # Configuration management
β βββ __init__.py
β βββ config_manager.py # Config file handlers
β
βββ core/ # Core scraping logic
β βββ __init__.py
β βββ scraper.py # Main scraper class
β βββ mealie_client.py # Mealie API client
β βββ tandoor_client.py # Tandoor API client
β
βββ routes/ # Flask routes/endpoints
β βββ __init__.py
β βββ main.py # Dashboard & logs
β βββ settings.py # Settings management
β βββ scraper_control.py # Scraper controls
β
βββ templates/ # HTML templates
β βββ base.html # Base template
β βββ dashboard.html # Main dashboard
β βββ settings.html # Settings page
β βββ logs.html # Log viewer
β
βββ static/ # Static assets
β βββ css/
β β βββ style.css # Styling
β βββ js/
β βββ app.js # JavaScript utilities
β
βββ data/ # Configuration & site lists
β βββ config.json # Application configuration
β βββ sites.txt # Complete site list (all 157 sites)
β β
β βββ CATEGORIZED SITE LISTS ββ
β βββ sites_african_soul_food.txt # 18 sites
β βββ sites_caribbean.txt # 12 sites
β βββ sites_indian_middle_eastern.txt # 21 sites
β βββ sites_latin_american.txt # 9 sites
β βββ sites_east_asian.txt # 18 sites
β βββ sites_instant_pot_air_fryer.txt # 12 sites
β βββ sites_general_high_quality.txt # 67 sites
β
βββ logs/ # Scraper logs
βββ scraper.log # Runtime logs
- Real-time Status: Monitor scraping progress with auto-refresh every 2 seconds
- Start/Stop Controls: Control the scraper with a single click
- Site List Selector: Switch between different cuisine categories
- Progress Bar: Visual progress tracking
- Statistics: Total recipes imported, sites completed, current site
- Enable/Disable Services: Toggle Mealie and Tandoor independently
- API Configuration: Set URLs and API tokens for both services
- Scraper Settings: Configure target recipes per site, scan depth, dry run mode
- Connection Testing: Test your API connections before starting
- Real-time Viewing: See scraper logs as they're generated
- Auto-refresh: Automatically updates when scraper is running
- Last 500 Lines: Most recent log entries displayed
The data/ directory contains pre-organized site lists:
- sites.txt: All 157 recipe sites in one file
Each category file includes descriptive headers and is ready to use:
-
sites_african_soul_food.txt (18 sites)
- African and Soul Food recipes
- Includes West African, Soul Food, and Southern cuisine
-
sites_caribbean.txt (12 sites)
- Caribbean island recipes
- Jamaican, Cuban, Dominican, Puerto Rican cuisine
-
sites_indian_middle_eastern.txt (21 sites)
- Indian, Pakistani, Middle Eastern recipes
- Curries, kebabs, Mediterranean dishes
-
sites_latin_american.txt (9 sites)
- Mexican and Latin American recipes
- Tacos, empanadas, South American cuisine
-
sites_east_asian.txt (18 sites)
- Chinese, Japanese, Korean, Thai, Vietnamese
- Stir-fries, sushi, ramen, pho
-
sites_instant_pot_air_fryer.txt (12 sites)
- Modern appliance recipes
- Pressure cooker, slow cooker, air fryer
-
sites_general_high_quality.txt (67 sites)
- Top-rated general food blogs
- Diverse recipes, baking, healthy options
- Edit config.json in the
data/directory:
{
"mealie": {
"enabled": true,
"url": "http://your-mealie-ip:9000",
"api_token": "your-token-here"
},
"tandoor": {
"enabled": false,
"url": "http://your-tandoor-ip:8080",
"api_key": "your-key-here"
},
"scraper": {
"dry_run": false,
"target_recipes_per_site": 50,
"scan_depth": 1000,
"delay_between_imports": 1.5
},
"active_site_list": "sites.txt"
}-
Get API Tokens:
- Mealie: User Profile β Manage API Tokens
- Tandoor: Settings β API Tokens
-
Test Connections: Use the "Test Connection" buttons on the Settings page
To use a specific category:
- Go to the Dashboard
- Find the Site Lists section
- Select the radio button for your desired category
- Click Start Scraper
The scraper will only import recipes from sites in that list!
Enable Dry Run Mode in settings to test the scraper without actually importing recipes. This helps you:
- See which recipes would be found
- Test your site lists
- Verify the scraper is working correctly
- Create a new
.txtfile in thedata/directory - Name it
sites_yourname.txt - Add URLs (one per line)
- Use
#for comments and headers - Select it from the Dashboard
Example format:
# ========================================
# MY FAVORITE BAKING BLOGS
# ========================================
https://sallysbakingaddiction.com
https://preppykitchen.com
https://sugarspunrun.com
You can enable both Mealie and Tandoor simultaneously! The scraper will:
- Import new recipes to both services
- Skip duplicates in each service independently
- Track progress for both
Edit app.py and change the port:
app.run(host='0.0.0.0', port=8080, debug=True)- Verify the URL includes
http://orhttps:// - Check the port number is correct
- Ensure your recipe manager is running
- Test the connection using the Settings page
- Enable at least one service (Mealie or Tandoor)
- Verify your site list has URLs
- Check logs for error messages
- The sites may not have new recipes (already imported)
- Try a different site list
- Increase the
scan_depthin settings - Check that sites are accessible from your network
The dashboard shows:
- Status: Running or Stopped
- Progress: Percentage complete (0-100%)
- Current Site: Which blog is being scraped now
- Total Imported: Number of recipes successfully imported
- Sites Progress: How many sites completed vs total
- Store your
config.jsonsecurely (contains API tokens) - Don't commit
config.jsonto version control - Use HTTPS URLs for Mealie/Tandoor if possible
- Consider using environment variables for sensitive data
See README_WEB_INTERFACE.md for more detailed documentation including:
- Advanced configuration options
- API token setup guides
- Docker deployment (coming soon)
- Troubleshooting guide
- Check the Logs page for error messages
- Review
README_WEB_INTERFACE.mdfor detailed docs - Verify your
config.jsonis valid JSON - Test API connections on the Settings page
MIT License - See LICENSE file for details
Happy Recipe Collecting! π³