This repository has been archived on 2026-05-21. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Beyt-Beytak-Abu-Ali-alt/build_menu.py
2026-05-21 15:35:54 +02:00

174 lines
15 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""Generate menu HTML from Beyt Beytak speisekarte data."""
IMG = "images/gerichte"
def card(name, price, desc, allergens="", img=None, tags=None, diet="", noix="false"):
tags = list(tags or [])
if allergens:
tags.append(('blue', allergens))
tags_html = ""
if tags:
tags_html = '\n <div class="menu-card__tags">\n'
for cls, text in tags:
tags_html += f' <span class="tag tag--{cls}">{text}</span>\n'
tags_html += ' </div>'
img_html = '<div class="menu-card__img menu-card__img--empty"></div>'
if img:
alt = name.replace('&', '&amp;')
img_html = f'''<div class="menu-card__img">
<img src="{img}" alt="{alt}" loading="lazy">
</div>'''
diet_attr = f' data-diet="{diet}"' if diet else ' data-diet=""'
return f''' <div class="menu-card"{diet_attr} data-noix="{noix}">
{img_html}
<div class="menu-card__body">
<div class="menu-card__top">
<h3>{name}</h3>
<span class="menu-card__price">{price}</span>
</div>
<p>{desc}</p>{tags_html}
</div>
</div>
'''
def tab_panel(tab_id, items, active=False):
active_cls = ' active' if active else ''
cards = '\n'.join(items)
return f''' <div class="menu__content{active_cls}" id="tab-{tab_id}" role="tabpanel" aria-labelledby="tab-{tab_id}">
<div class="menu__grid">
{cards}
</div>
</div>
'''
# --- VORSPEISEN ---
vorspeisen = [
card("Taboulah", "5,00 €", "Petersilie, Tomaten, Bulgur, Zitronensaft, Olivenöl", "A1", img=f"{IMG}/taboulah.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Fattoush", "6,00 €", "Frittiertes Brot, Tomaten, Gurken, Römersalat, Minze, Zwiebeln, Knoblauch, Olivenöl, Granatapfelsirup", "A1, K", img=f"{IMG}/fattoush.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Baba Ghanoush", "5,00 €", "Gegrillte Aubergine, Joghurt, Tahina, Knoblauchsoße, Olivenöl", "F, J", img=f"{IMG}/baba-ghanoush.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Hummus", "5,00 €", "Kichererbsen, Tahina, Zitronensaft, Olivenöl", "I", img=f"{IMG}/hummus.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("4× Käse Börek", "5,00 €", "Käse, Teigblätter", "A1, F, B", img=f"{IMG}/kaese-boerek.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("4× Spinat Börek", "5,00 €", "Spinat, Käse, Zwiebeln", "A1, F, B", img=f"{IMG}/spinat-boerek.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("4× Hackfleisch Börek", "5,00 €", "Hackfleisch, Zwiebel, Teigblätter", "A1, F", img=f"{IMG}/hackfleisch-boerek.png"),
card("Kibbe frittiert", "2,00 €", "Bulgur, Zwiebel, Hackfleisch", "A1, K, H", img=f"{IMG}/kibbe-frittiert.png"),
card("Salat Spezial", "7,00 €", "Tomaten, Gurken, Zwiebeln, Feta Käse, Olivenöl", "F, K", img=f"{IMG}/salat-spezial.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Gefüllte Weinblätter (Yalinyi)", "5,00 €", "Weinblätter, Reis, Petersilie, Zwiebeln, Knoblauch, Tomaten, Paprika, Granatapfelsirup, Olivenöl", "K", img=f"{IMG}/weinblaetter.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Abu Ali Salat Spezial mit Hähnchen", "8,00 €", "Kopfsalat, Tomaten, Gurken, Oliven, Hähnchenfilet, Käse, Granatapfelsirup, Olivenöl", "F", img=f"{IMG}/abu-ali-salat.png"),
card("Vorspeisen-Teller vegetarisch", "11,00 €", "Taboulah, Hummus, Baba Ghanoush, 2× Falafel, 1× Spinat Börek, 1× Käse Börek", "A1, H, J, I, F", img=f"{IMG}/vorspeisen-teller.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Falafel-Teller", "6,00 €", "4× Falafel, Hummus, Tomaten, Gurken, Brot", "A1, J, H, I", img=f"{IMG}/falafel-teller.png", tags=[('green', 'Vegan')], diet="vg"),
card("Linsensuppe", "3,50 €", "Linsen, Karotten, Kartoffeln", "A1, I, E", img=f"{IMG}/linsensuppe.png", tags=[('green', 'Vegetarisch')], diet="v"),
]
# --- MENÜ (Hauptgerichte) ---
menue = [
card("Mexicano", "14,90 €", "Hähnchenbruststreifen, Karotten, Zwiebel, Paprika, mit Reis oder Pommes, Coleslaw, Spezialsoße, gebratenes Brot mit Paprikasauce und Käse", "A1, B, I, 2, F, 4, 1", img=f"{IMG}/menue-mexicano.png"),
card("Faijta", "14,90 €", "Hähnchenbruststreifen, Champignons, Paprika, Zwiebel, Senf, Käse, mit Reis oder Pommes, Coleslaw, Spezialsoße, gebratenes Brot mit Paprikasauce und Käse", "A1, B, I, F, 2, 4, 1", img=f"{IMG}/menue-faijta.png"),
card("Francisco", "14,90 €", "Hähnchenbruststreifen, Champignons, Paprika, Zwiebel, Mais, Käse, mit Reis oder Pommes, Coleslaw, Spezialsoße, gebratenes Brot mit Paprikasauce und Käse", "A1, B, I, F, 2, 4, 2", img=f"{IMG}/menue-francisco.png"),
card("Philadelphia", "15,90 €", "Lammfiletstreifen, Champignons, Zwiebel, Paprika, mit Reis oder Pommes, Coleslaw, Spezialsoße, gebratenes Brot mit Paprikasauce und Käse", "A1, B, I, 2, F, 4, 2", img=f"{IMG}/menue-philadelphia.png"),
card("Hähnchenspieß", "14,90 €", "4× Hähnchenspieß mit Reis oder Pommes, Coleslaw, Spezialsoße, gebratenes Brot mit Paprikasauce und Käse", "A1, B, I, 2, F, 1", img=f"{IMG}/menue-haehnchenspiess.png"),
card("Crispy", "12,90 €", "4× Hähnchenbrust mit Reis oder Pommes, Coleslaw, Spezialsoße, gebratenes Brot mit Paprikasauce und Käse", "A1, B, I, 2, 1, F", img=f"{IMG}/menue-crispy.png"),
card("Hähnchenleber", "12,90 €", "Hähnchenleber, Zwiebel, grüner Koriander, Paprika, mit Reis oder Pommes, Coleslaw, Spezialsoße, gebratenes Brot mit Paprikasauce und Käse", "A1, F, B, I, 2, 1", img=f"{IMG}/menue-haehnchenleber.png"),
card("Broasted — halbes Hähnchen frittiert", "14,90 €", "Halbes Hähnchen frittiert, Pommes, eingelegtes Gemüse, Knoblauchsoße", "A1, B, I, 2, 1, F", img=f"{IMG}/menue-broasted.png"),
card("Mendi Lammfleisch mit Reis", "15,00 €", "Lammfleisch mit Knochen, gewürztes Reis, Salat mit Joghurt und Gurke", "F, G", img=f"{IMG}/menue-mendi-lamm.png", noix="true"),
card("Kebsi — halbes Hähnchen mit Reis", "13,50 €", "Halbes Hähnchen, gewürztes Reis, Salat mit Joghurt und Gurke", "F, G", img=f"{IMG}/menue-kebsi.png", noix="true"),
card("Arabischer Shawarma-Teller", "11,00 €", "Selbstgemachte Shawarma vom Grill, Pommes, eingelegtes Gemüse, Knoblauchsoße, Coleslaw", "A, B, F, K", img=f"{IMG}/menue-shawarma.png"),
card("Nuggets mit Pommes", "10,00 €", "10 Nuggets mit Pommes, Knoblauchsoße", "A1, B, I, 2, 1, F", img=f"{IMG}/menue-nuggets.png"),
]
# --- PASTITIEN ---
pastitien = [
card("Lahmacun", "2,75 €", "Hackfleisch, Tomaten, Paprika, Zwiebeln, Knoblauch, Petersilie", "A1", img=f"{IMG}/lahmacun.png"),
card("Käse Manaesch", "2,50 €", "Käse auf dünnem Fladenteig", "A1, F, J", img=f"{IMG}/kaese-manaesch.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Dreieckige Käsetasche", "2,50 €", "Käse", "A1, F", img=f"{IMG}/kaesetasche.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Hähnchen-Pide", "2,75 €", "Hähnchenbruststreifen, Käse, Zwiebeln, Paprika, Karotten", "A1, F", img=f"{IMG}/haehnchen-pide.png"),
card("Hackfleisch-Pide", "2,75 €", "Hackfleisch, Käse, Zwiebeln, Granatapfelsirup", "A1, F", img=f"{IMG}/hackfleisch-pide.png"),
card("Sucuk-Pide", "2,75 €", "Sucuk, Käse, Paprikasauce", "A1, F, 2, 3, 4", img=f"{IMG}/sucuk-pide.png"),
card("Dreieckige Spinattasche", "2,50 €", "Spinat, Zwiebeln, Käse", "A1, F", img=f"{IMG}/spinattasche.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Hähnchenleber-Pide", "2,50 €", "Hähnchenleber, grüner Koriander, Zwiebeln, Käse", "A1, F", img=f"{IMG}/haehnchenleber-pide.png"),
card("Paprika Manaesch", "2,50 €", "Paprikasauce, Zwiebeln, Käse", "A1, F", img=f"{IMG}/paprika-manaesch.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Zaater Manaesch", "2,50 €", "Sesam, Gewürze, Olivenöl, Käse", "A1, F, J", img=f"{IMG}/zaater-manaesch.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Toshka", "5,00 €", "Hackfleisch, Käse", "A1, F", img=f"{IMG}/toshka.png"),
card("4× Mini-Pide", "5,00 €", "Käse, Sucuk, Gemüse, Hähnchen", "A1, F, I, K, E", img=f"{IMG}/mini-pide.png"),
card("Steak Manaesch", "6,00 €", "Lammsteak-Stücke", "A1", img=f"{IMG}/steak-manaesch.png"),
]
# --- SANDWICHES ---
sandwiches = [
card("Mexicano", "7,50 €", "Hähnchenbruststreifen, Paprika, Zwiebel, Karotten, Käse, Coleslaw, Baguette oder arabisches Brot", "A1, F, B, 1, 2", img=f"{IMG}/sandwich-mexicano.png"),
card("Faijta", "7,50 €", "Hähnchenbruststreifen, Champignons, Paprika, Zwiebel, Senf, Käse, Pommes, Coleslaw, Baguette oder arabisches Brot", "A1, F, 2, 4, B, I", img=f"{IMG}/sandwich-faijta.png"),
card("Francisco", "7,50 €", "Hähnchenbruststreifen, Mais, Champignons, Käse, Paprika, Coleslaw, Pommes, Baguette oder arabisches Brot", "A1, 2, 4, B, I, F", img=f"{IMG}/sandwich-francisco.png"),
card("Philadelphia", "8,50 €", "Lammfiletstreifen, Champignons, Paprika, Zwiebeln, Pommes, Käse, Coleslaw, Spezialsoße, Baguette oder arabisches Brot", "A1, 2, 4, B, I, F, 1", img=f"{IMG}/sandwich-philadelphia.png"),
card("Hähnchenspieß", "7,50 €", "2× Hähnchenspieß, eingelegte Gurken, Pommes, Knoblauchsoße, Käse, Baguette oder arabisches Brot", "A1, F, B", img=f"{IMG}/sandwich-haehnchenspiess.png"),
card("Crispysandwich", "7,50 €", "2× Hähnchenbrust frittiert, Coleslaw, Pommes, Spezialsauce, Baguette oder arabisches Brot", "A1, B, 1, 2, I", img=f"{IMG}/sandwich-crispy.png"),
card("Hähnchenleber", "7,00 €", "Hähnchenleber, Zwiebel, grüner Koriander, Pommes, eingelegte Gurken, Knoblauchsoße, Baguette oder arabisches Brot", "A1, F, B", img=f"{IMG}/sandwich-haehnchenleber.png"),
card("Burger", "8,00 €", "Rindfleisch gemischt mit Lammfleisch, Zwiebel, Tomaten, Salat, Spezialsauce", "A1, F, I, 1, 2, B", img=f"{IMG}/sandwich-burger.png"),
card("Cheeseburger", "8,00 €", "Rindfleisch gemischt mit Lammfleisch, Zwiebel, Tomaten, Salat, Käse, Spezialsauce", "A1, F, 1, 2, B, I", img=f"{IMG}/sandwich-cheeseburger.png"),
card("Shawarma-Sandwich", "7,00 €", "Selbstgemachte Shawarma vom Grill, Knoblauchsoße, eingelegte Gurken, Granatapfelsirup", "A1, 2, 4, B, I, F", img=f"{IMG}/sandwich-shawarma.png"),
card("Kebab-Sandwich", "7,00 €", "2× Kebab-Spieße, Petersilie, Zwiebeln, Paprikasauce, nach Wahl mit Pommes", "A1, 2, 4, B, I, F", img=f"{IMG}/sandwich-kebab.png"),
card("Chickencheeseburger", "8,00 €", "Hähnchenbrust frittiert, Salat, Zwiebel, Tomaten, Käse, Spezialsauce", "A1, F, I, 1, 2, B", img=f"{IMG}/sandwich-chickencheeseburger.png"),
card("Pommessandwich", "6,00 €", "Pommes, Coleslaw, Käse, Ketchup, Knoblauchsoße, Baguette oder arabisches Brot", "A1, B, F, H, I, 2", img=f"{IMG}/sandwich-pommes.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Falafel-Sandwich", "6,00 €", "Falafel, Salat, Gurken, Minze, Tomaten, Tahina, Essiggurke, arabisches Brot", "A, G, N, E", img=f"{IMG}/sandwich-falafel.png", tags=[('green', 'Vegan')], diet="vg", noix="true"),
card("Arabisches Sucuk-Sandwich", "7,00 €", "2× Sucuk-Spieße, Knoblauchsoße, Essiggurken, Paprikasauce, nach Wahl mit Pommes", "A1, 2, 4, B, I, F", img=f"{IMG}/sandwich-sucuk.png"),
]
# --- PIZZA ---
pizza = [
card("Margherita", "8,50 €", "Tomatensauce, Käse", "A1, F", img=f"{IMG}/pizza-margherita.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Salami", "9,50 €", "Tomatensauce, Käse, Geflügelsalami", "A1, F, 1, 2, 4", img=f"{IMG}/pizza-salami.png"),
card("Thunfisch", "9,50 €", "Tomatensauce, Käse, Thunfisch, Zwiebeln", "A1, F, D, 1", img=f"{IMG}/pizza-thunfisch.png"),
card("Champignon", "9,50 €", "Tomatensauce, Käse, Champignons", "A1, F, 2, 4", img=f"{IMG}/pizza-champignon.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Vegetariana", "9,50 €", "Tomatensauce, Käse, Mais, Pilze, Paprika, frische Tomaten, Oliven", "A1, F, 2, 4", img=f"{IMG}/pizza-vegetariana.png", tags=[('green', 'Vegetarisch')], diet="v"),
card("Sucuk", "9,50 €", "Tomatensauce, Käse, Sucuk", "A1, F, 2, 3, 4", img=f"{IMG}/pizza-sucuk.png"),
card("Abu Ali Spezial-Pizza", "11,00 €", "Tomatensauce, Käse, Hähnchenbruststreifen, Pilze, Oliven, Paprika", "A, F, 2, 4", img=f"{IMG}/pizza-abu-ali.png", tags=[('orange', 'Beliebt!')]),
card("Hackfleischpizza", "9,50 €", "Tomatensauce, Käse, Hackfleisch", "A1, F", img=f"{IMG}/pizza-hackfleisch.png"),
card("Familienpizza", "25,00 €", "Ca. 50 cm Durchmesser, Zutaten nach Wahl", "A1, F", img=f"{IMG}/pizza-familie.png", tags=[('orange', 'Ca. 50 cm')]),
]
tabs_html = ''' <div class="menu__tabs" role="tablist">
<button class="menu__tab active" data-tab="vorspeisen" role="tab" aria-selected="true" aria-controls="tab-vorspeisen">Vorspeisen</button>
<button class="menu__tab" data-tab="menue" role="tab" aria-selected="false" aria-controls="tab-menue">Menü</button>
<button class="menu__tab" data-tab="pastitien" role="tab" aria-selected="false" aria-controls="tab-pastitien">Pastitien</button>
<button class="menu__tab" data-tab="sandwiches" role="tab" aria-selected="false" aria-controls="tab-sandwiches">Sandwiches</button>
<button class="menu__tab" data-tab="pizza" role="tab" aria-selected="false" aria-controls="tab-pizza">Pizza</button>
</div>
<p class="menu__allergen-hinweis">Allergen- und Zusatzstoffkennzeichnung: AN (Allergene), 114 (Zusatzstoffe). Details auf Anfrage im Restaurant.</p>
'''
panels = (
tab_panel("vorspeisen", vorspeisen, active=True)
+ tab_panel("menue", menue)
+ tab_panel("pastitien", pastitien)
+ tab_panel("sandwiches", sandwiches)
+ tab_panel("pizza", pizza)
)
filters_html = ''' <div class="menu__filters" id="menuFilters">
<button class="menu__filter" data-filter="v">Vegetarisch</button>
<button class="menu__filter" data-filter="vg">Vegan</button>
<button class="menu__filter" data-filter="noix">Ohne Nüsse</button>
<button class="menu__filter-reset" id="filterReset">Zurücksetzen</button>
</div>
'''
menu_inner = filters_html + tabs_html + panels
with open("index.html", "r", encoding="utf-8") as f:
html = f.read()
start = html.find(' <div class="menu__filters" id="menuFilters">')
end = html.find(' <div class="menu__footer">')
if start == -1 or end == -1:
raise SystemExit("Could not find menu boundaries")
html = html[:start] + menu_inner + html[end:]
with open("index.html", "w", encoding="utf-8") as f:
f.write(html)
total = len(vorspeisen) + len(menue) + len(pastitien) + len(sandwiches) + len(pizza)
print(f"Menu rebuilt: {total} Gerichte, alle mit Bildern")