#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Apply titles and optional subtitles to recipes in MariaDB. """ import os import sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from app.database import get_connection sys.stdout.reconfigure(encoding='utf-8') # Mapping of ID -> (new_title, new_subtitle) SUBTITLE_UPDATES = { # Specifically requested by user: 51: ("Kressesuppe", "mit Croutons"), # Parenthetical subtitles: 9: ("Gebratene Kasknödel", "Käseknödel aus der Pfanne"), 24: ("Galaktoboureko", "Griechischer Grießauflauf"), 30: ("Heidelbeer-Tiramisu", "fruchtig-frisch ohne Ei"), 29: ("Zitronen-Tiramisu", "mit Lemon Curd (ohne rohes Ei)"), 37: ("Donauwelle", "Super Easy vom Blech"), 39: ("Fudgy Kidneybohnen-Brownies", "ohne Mehl"), 82: ("Blumenkohl-Curry mit Reis", "Cauliflower Curry"), 87: ("Pla Pad Krapao", "Thai-Basilikum-Fischfilet mit Reis"), 92: ("Schmackefatz", "Süßer Nudel-Quark-Auflauf"), 95: ("Saftiger Karottenkuchen", "Rüblikuchen"), 107: ("Jian Baos", "Gebratene Bao-Taschen"), 108: ("Okonomiyaki", "Japanischer Kohlpfannkuchen"), 109: ("Klassische Dim Sum", "Gyoza / Dumplings"), 112: ("Soft Cinnamon Rolls", "Amerikanische Zimtschnecken"), 113: ("Zimtschneckenkuchen", "ohne Hefe"), # Long composite titles with "mit ..." / "auf ..." / "aus ...": 3: ("Champignons wie vom Weihnachtsmarkt", "mit Knoblauchsauce"), 7: ("Spaghetti in Zitronenbutter", "und Lachs mit Macadamiakruste"), 8: ("Orzo-Halloumi-Salat", "mit Granatapfel & Honig-Senf-Dressing"), 11: ("Cremige Zucchini-Bohnenpfanne", "mit Erdnussbutter"), 12: ("Blätterteigpäckchen", "mit grünem Spargel & Pecorino"), 14: ("Traditionelle italienische Focaccia", "mit Rosmarin"), 15: ("Fluffige Bao Buns", "mit marinierten Champignons & Edamame"), 16: ("Schnelle Ramen", "mit Miso-Dashibrühe & Räuchertofu"), 17: ("Traditionelle Ramen", "mit Shoyu-Tare & knusprigem Hack"), 18: ("One-Pot Mie-Nudeln", "mit Kokos, Curry & Erdnussbutter"), 19: ("Gemüse nach Gonbao-Art", "mit gerösteten Erdnüssen"), 20: ("Knuspriger Orangentofu", "mit Duftreis"), 21: ("Lachs in Thai-Curry-Soße", "mit Zucchini & goldenem Reis"), 22: ("American Pancakes", "mit Beeren & Ahornsirup"), 25: ("Crema Catalana", "mit feiner Zuckerkruste"), 26: ("Cremiges veganes Schokomousse", "aus Seidentofu"), 27: ("Mango-Limetten-Triffle", "mit weißer Schokolade"), 28: ("Lebkuchen-Mousse", "mit Glühweinkirschen"), 32: ("Zimt-Biskuitrolle", "mit karamellisierten Pflaumen & Krokant"), 34: ("Apfel-Salzkaramell-Tarte", "mit Erdnüssen"), 36: ("Bounty®-Kuchen", "vom Blech mit Kokoscreme"), 38: ("Gedeckter Apfelkuchen", "mit Streuseln"), 53: ("Blätterteig Lauchstrudel", "mit Speck"), 56: ("Klassische Senfeier", "mit Schnittlauch & Kresse"), 57: ("Würzige Fischboulette", "in Kräuterpanade"), 59: ("Maultaschen", "auf warmem Wurzelgemüse-Salat"), 60: ("Allgäuer Käsenudeln", "mit Tomatensauce"), 63: ("Spaghetti Napoletana", "mit knusprigen Butterbröseln"), 65: ("Thunfischsauce", "mit Orecchiette"), 68: ("Glasierte Garnelen", "auf Umami-Kartoffelstampf"), 71: ("Korean Glazed Potatoes", "mit Chili-Öl & Gurkensalat"), 72: ("Teriyaki-Fischfilet", "auf Ingwer-Süßkartoffelstampf"), 74: ("Schummel-Paella", "mit Meeresfrüchten & Hähnchen"), 75: ("Vegane Bowl", "mit Sesam-Süßkartoffel & Avocado"), 77: ("Hausgemachtes Naan-Brot", "mit Knoblauchbutter"), 79: ("Rahm-Fladen", "mit Schmand, Speck & Frühlingszwiebeln"), 80: ("Schwäbische Dinnete", "mit Kartoffeln und Käse"), 81: ("Veggie Po-Boy Sandwich", "mit crunchy Champignons"), 83: ("Curry-Pfannkuchen", "mit würziger Bohnenfüllung"), 85: ("Indisches rotes Linsen-Dal", "mit Kokos"), 86: ("Pad Thai", "mit veganem Hähnchen"), 88: ("Shredded Tofu-Linsen-Curry", "mit Kokosmilch"), 89: ("Umami-Kräuterseitlinge", "mit Sesam & Frühlingszwiebeln"), 90: ("Apple Crumble", "mit Haferflocken-Streuseln"), 91: ("Palatschinken", "mit feiner Walnussfüllung"), 97: ("Rhabarberkuchen", "mit Quarkcreme und Streuseln"), 98: ("Zwetschgenkuchen", "mit feinen Zimtstreuseln"), 103: ("Soba „Sommerrollen“-Salat", "mit Tofu und Erdnussdressing"), 111: ("Zimt-Apfel-Blondies", "mit Mandelkruste") } def main(): conn = get_connection() cur = conn.cursor() count = 0 for rid, (title, subtitle) in SUBTITLE_UPDATES.items(): cur.execute("UPDATE recipes SET title = %s, subtitle = %s WHERE id = %s", (title, subtitle, rid)) count += 1 print(f"Updated #{rid}: '{title}' | Untertitel: '{subtitle}'") conn.commit() conn.close() print(f"\nSuccessfully updated {count} recipes with titles and subtitles.") if __name__ == "__main__": main()