#!/usr/bin/env python3
"""Insert 24 wal glossar entries + module_glossar mapping via PHP-CLI bridge.

Generates SQL and pipes to mysql/PHP. Avoids Bash quoting hell with German umlauts.
"""
import json, subprocess, os, sys

ENTRIES = [
    ('buckelwal','Buckelwal','Bis 16 m langer Bartenwal mit auffälligem Buckel und sehr langen Brustflossen, der jährlich tausende Kilometer wandert.','Der Buckelwal (Megaptera novaeangliae) ist ein Bartenwal aus der Familie der Furchenwale. Er wird 13-17 m lang und 25-40 t schwer. Charakteristisch sind die langen Brustflossen (bis 4,6 m, längste aller Wale), die Höcker am Kopf (Tubercles) und die einzigartig gemusterte Schwanzflosse (Fluke), die wie ein Fingerabdruck zur Identifikation dient. Buckelwale wandern jährlich bis zu 8.000 km zwischen polaren Nahrungsgebieten und tropischen Geburts-/Paarungsgebieten. Sie ernähren sich von Krill und kleinen Schwarmfischen, die sie mit der Bubble-Net-Methode jagen. Bestand weltweit ca. 135.000 Tiere — IUCN Status „Least Concern", einige Bestände aber noch gefährdet.','arten','biologie',60),
    ('bartenwale','Bartenwale','Wale mit hornigen Filterplatten statt Zähnen, die kleine Beute aus dem Wasser sieben.','Die Bartenwale (Mysticeti) bilden eine der beiden Hauptgruppen der Wale (zweite: Zahnwale). Statt Zähnen haben sie Barten — bis zu 800 Hornplatten aus Keratin im Oberkiefer. Dazu zählen Blauwal, Buckelwal, Finnwal, Grauwal, Glattwale. Bartenwale können sehr alt werden (Grönlandwal bis 200 Jahre) und sind die größten Tiere der Erde.','familie','biologie',61),
    ('barten','Barten','Aus Keratin bestehende Hornplatten im Walmaul, die als Sieb dienen.','Barten sind die namensgebenden Filterplatten der Bartenwale. Sie bestehen aus Keratin (wie unsere Fingernägel) und hängen vom Oberkiefer wie ein Vorhang nach unten. Wenn der Wal mit offenem Maul durch einen Krill-Schwarm taucht und dann das Maul schließt, wird Wasser ausgepresst, Krill bleibt in den Barten hängen. Eine Barten-Reihe kann 4 m lang sein.','körperteil','biologie',62),
    ('tubercles','Tubercles / Höcker','Beulen am Vorderrand der Brustflosse — Vorbild für moderne Rotorblätter (Bionik).','Die Höcker (Tubercles) am Vorderrand der Buckelwal-Brustflossen sind etwa golfballgroß. Sie zwingen das vorbeiströmende Wasser in kontrollierte Wirbel, wodurch der Strömungsabriss bei steilem Anstellwinkel verzögert wird — der Wal kann enger kurven. Diese Entdeckung führte zur Bionik-Anwendung „Tubercle Technology" bei Windrotoren, Flugzeug-Flügeln und Lüftern.','anatomie','biologie',63),
    ('fluke','Fluke','Die waagrechte Schwanzflosse des Wals — jeder Buckelwal hat ein einzigartiges Fluken-Muster.','Die Fluke (Schwanzflosse) ist der Hauptantrieb des Wals — sie schlägt nicht seitwärts wie bei Fischen, sondern auf und ab. Die Unterseite der Buckelwal-Fluke zeigt einzigartige Pigmentierungs-Muster und Narben, die wie ein Fingerabdruck zur Individual-Identifikation genutzt werden (HappyWhale-Foto-ID-Datenbank hat über 100.000 identifizierte Buckelwale).','anatomie','biologie',64),
    ('pektoralflosse','Pektoralflosse','Die Brustflosse; beim Buckelwal mit bis zu 4,6 m die längste aller Wale.','Die Pektoralflossen (Brustflossen) dienen Walen zur Steuerung und Stabilisierung. Der Buckelwal hat die proportional längsten Pektoralflossen aller Wale: bis zu 4,6 m oder etwa ein Drittel der Körperlänge. Daher der wissenschaftliche Name Megaptera = „Großflügel". Die Vorderkante hat Höcker (Tubercles).','anatomie','biologie',65),
    ('blasloch','Blasloch','Das Nasenloch oben am Kopf — Bartenwale haben zwei, Zahnwale eins.','Das Blasloch ist die nach oben verlagerte Nasenöffnung. Bei Bartenwalen wie dem Buckelwal sind es zwei nebeneinander; bei Zahnwalen (Pottwal, Delfine) nur eines. Das Blasloch öffnet sich nur beim Atmen — sonst ist es muskulär verschlossen.','anatomie','biologie',66),
    ('blas','Blas','Die sichtbare Atemwolke beim Ausatmen — beim Buckelwal buschig bis 3 m hoch.','Wenn der Wal ausatmet, schießt warme, feuchte Atemluft mit hohem Druck heraus und kondensiert in der kalten Außenluft zu einer sichtbaren Säule, dem Blas. Form und Höhe sind artspezifisch: Buckelwal-Blas niedrig und buschig (3 m), Blauwal-Blas dünn und 9-12 m hoch.','verhalten','biologie',67),
    ('echolokation','Echolokation','Orten durch Schall-Echos — Bartenwale nutzen sie NICHT, das tun Zahnwale.','Echolokation ist das Auffinden von Objekten oder Beute mittels ausgesendeter Klicklaute und der Analyse der Echos. Zahnwale wie Pottwal und Delfine beherrschen es perfekt. Bartenwale wie der Buckelwal kommunizieren zwar über tiefe Frequenzen, orientieren sich aber nicht via Echolokation, sondern über Hören, Sehen, Tasten und kontinuierliche akustische Karten ihres Lebensraums.','sinn','biologie',68),
    ('walgesang','Walgesang','Lange, wiederholte Lautfolgen, die nur männliche Buckelwale singen — sie ändern sich jede Saison.','Männliche Buckelwale singen lange (bis 30 min), strukturierte Lautfolgen aus mehreren Themen — vermutlich zur Paarungs-Werbung. Auffällig: in einer Region singen alle Männchen die gleiche „Saison-Version", die sich von Jahr zu Jahr verändert (Tier-Kultur!). Roger Payne hat den Walgesang 1971 wissenschaftlich beschrieben und damit die „Save the Whales"-Bewegung ausgelöst.','verhalten','biologie',69),
    ('knochenleitung','Knochenleitung','Bartenwale „hören" tiefe Frequenzen, indem Schall ihren Schädel schwingen lässt.','Bartenwale haben kein normales Außenohr. Tiefe Frequenzen (10-130 Hz) — der Bereich, in dem sie kommunizieren — werden über den Unterkiefer und Schädelknochen an die Innenohr-Strukturen geleitet. Dadurch hören sie ca. 10× empfindlicher als Druckmechanismen erlauben würden. Schiffslärm liegt im selben Frequenzbereich — und macht die Wale akustisch „taub".','sinn','biologie',70),
    ('krill','Krill','Kleine, garnelenähnliche Krebstierchen — Hauptnahrung vieler Bartenwale.','Krill (Antarktischer Krill, Euphausia superba) ist ein 5-6 cm langes Krebstier, das in riesigen Schwärmen lebt — die größten Tiergemeinschaften der Erde nach Biomasse. Krill ist die Hauptnahrung der Bartenwale, von Robben, Pinguinen und vielen Fischen. Durch Klimawandel (Eisrückgang) und kommerzielle Krill-Fischerei wird Krill stellenweise um bis zu 80 % weniger.','nahrung','biologie',71),
    ('bubble-net','Bubble-Net-Feeding','Jagdtechnik: Buckelwale blasen einen Luftblasen-Ring um Fischschwärme.','Bei der „Bubble-Net"-Jagd schwimmen Buckelwale (oft im Team) spiralförmig nach oben, blasen dabei Luftblasen aus den Blaslöchern. So entsteht ein „Vorhang" aus Blasen um den Fischschwarm — die Fische trauen sich nicht durch und werden zur Wasseroberfläche getrieben. Dann fressen die Wale mit weit geöffnetem Maul.','verhalten','biologie',72),
    ('migration','Migration','Jährliche Wanderung zwischen kalten Nahrungsgründen und warmen Geburts-Gebieten.','Buckelwale unternehmen jährlich eine der längsten Migrationen aller Säugetiere: bis zu 8.000 km. Im Sommer fressen sie in polaren Gewässern, wo Krill und Schwarmfische in großen Mengen vorkommen. Im Winter wandern sie in tropische Gewässer (Hawaii, Karibik, Westaustralien), wo Jungtiere geboren und Paarungen vollzogen werden. Während der Wanderung fressen sie kaum — sie leben von ihrer Speckschicht (Blubber).','verhalten','biologie',73),
    ('drafting','Drafting','Energiesparendes „Mitschwimmen" eines Kalbs in der Druckwelle der Mutter.','Wal-Kälber schwimmen oft direkt hinter oder neben der Mutter und nutzen die Wasserströmung um die Mutter herum. Dadurch sparen sie etwa 20-30 % Energie. Wichtig auf langen Wanderungen, da Mutter und Kalb beide ohne Nahrungs-Aufnahme von Polargebiet zu Tropengebiet schwimmen.','verhalten','biologie',74),
    ('myoglobin','Myoglobin','Sauerstoff-Speicherprotein im Muskel — Wale haben 10-20× mehr davon als Menschen.','Myoglobin ist ein eisenhaltiges Protein in Muskeln, das Sauerstoff bindet und speichert. Wale haben extrem hohe Myoglobin-Konzentrationen. Das ermöglicht lange Tauchgänge: Buckelwale können 30-45 Minuten unter Wasser bleiben, ein Pottwal sogar 90 Minuten. Sauerstoff wird nicht in der Lunge gespeichert (würde durch Druck zerquetscht), sondern in Muskeln und Blut.','physiologie','biologie',75),
    ('ship-strike','Ship Strike / Schiffskollision','Zusammenstoß zwischen Schiff und Wal — eine der häufigsten Todesursachen für Großwale.','Bei Ship Strikes (Schiffskollisionen) wird der Wal vom Bug oder Rumpf eines Schiffes getroffen oder vom Propeller verletzt. Geschätzt werden jährlich ca. 20.000 Wale weltweit durch Kollisionen getötet. Buckel- und Finnwale sind besonders häufig betroffen. Die Mortalität steigt steil zwischen 10 und 14 Knoten Schiffsgeschwindigkeit — eine Reduktion auf 10 kn senkt die Todeswahrscheinlichkeit um ca. 27 %.','bedrohung','geografie',76),
    ('tss','TSS / Verkehrstrennungsgebiet','Von der IMO festgelegte „Einbahn-Spuren" für Schiffe — können verlegt werden, um Wal-Lebensräume zu umgehen.','Ein Traffic Separation Scheme (TSS, Verkehrstrennungsgebiet) ist eine von der International Maritime Organization festgelegte Schiffs-Fahrrinne mit Richtungs-Vorgabe. TSS können zum Walschutz verlegt werden: vor Boston wurde 2007 das TSS verlegt, um durch das Stellwagen Bank Marine Sanctuary zu führen. Resultat: Risiko für Glattwale -58 %, für alle Bartenwale -81 %.','schutz','geografie',77),
    ('imo','IMO','International Maritime Organization (UN-Behörde) — beschließt internationale Schifffahrtsregeln.','Die IMO ist eine UN-Sonderorganisation mit Sitz in London. Sie regelt internationale Schifffahrt: Sicherheit, Umweltschutz, Routen, Standards. Walschutz-Maßnahmen wie TSS-Verlegungen oder Geschwindigkeitslimits müssen von der IMO beschlossen werden, damit sie für alle Flaggenstaaten verbindlich sind.','organisation','geografie',78),
    ('iwc','IWC','International Whaling Commission — internationaler Wal-Schutzbeschluss-Träger.','Die IWC wurde 1946 gegründet, ursprünglich zur Regulierung des Walfangs. Seit 1986 gilt das kommerzielle Walfang-Moratorium. Heute koordiniert die IWC Walschutz, Forschung und führt eine globale Schiffskollisions-Datenbank. Mitglieder sind ca. 90 Staaten.','organisation','geografie',79),
    ('knoten','Knoten (kn)','Schiffsgeschwindigkeit: 1 kn ≈ 1,85 km/h.','Ein Knoten (kn) ist eine internationale Schifffahrts- und Luftfahrt-Einheit: eine Seemeile pro Stunde = 1,852 km/h. Containerschiffe fahren typisch 18-24 kn. Für Walschutz ist die Grenze 10 kn bedeutsam — darüber steigt die Mortalität bei Wal-Kollision steil an.','einheit','geografie',80),
    ('geisternetz','Geisternetz','Verlorenes Fischernetz, das jahrzehntelang Tiere fängt.','Geisternetze (engl. ghost nets) sind verlorene, weggeworfene oder zerrissene Fischernetze, die weiter im Meer treiben. Sie fangen unbemerkt jahrzehntelang Fische, Meeressäuger, Schildkröten und Seevögel. Weltweit sterben jährlich über 300.000 Wale und Delfine durch Beifang und Geisternetze — die größte Einzeltodesursache für kleine Wale.','bedrohung','geografie',81),
    ('bycatch','Beifang (Bycatch)','Versehentlich gefangene Tiere, die nicht das Ziel der Fischerei waren.','Beifang sind nicht-Zielarten, die in Fischfanggeräten gefangen werden — z. B. Wale in Treibnetzen, Delfine in Thunfischnetzen, Schildkröten in Langleinen. Beifang ist weltweit die größte Bedrohung für viele Meeressäuger und Seevögel.','bedrohung','geografie',82),
    ('marine-sanctuary','Marine Sanctuary','Schutzgebiet im Meer — eingeschränkte menschliche Nutzung.','Marine Sanctuaries oder Meeresschutzgebiete sind Areale mit eingeschränkter menschlicher Nutzung (Fischerei, Schifffahrt, Tourismus). Bekannte Beispiele: Stellwagen Bank (USA), Pelagos Sanctuary (Mittelmeer F/I/MC), Great Barrier Reef Marine Park (Australien). Trotz Ausweisung sind weniger als 7 % der Wal-Verbreitungsgebiete weltweit geschützt.','schutz','geografie',83),
]

# Write SQL to temp file (avoids quoting issues)
import tempfile
sql_lines = []
for slug, title, short, text, unit, cat, sort in ENTRIES:
    # Escape single quotes by doubling
    esc = lambda s: s.replace("'", "''") if s else ''
    sql_lines.append(
        f"INSERT INTO glossar (key_slug,title,short,text,unit,category,sort_order) "
        f"VALUES ('{esc(slug)}','{esc(title)}','{esc(short)}','{esc(text)}','{esc(unit)}','{esc(cat)}',{sort}) "
        f"ON DUPLICATE KEY UPDATE title=VALUES(title), short=VALUES(short), text=VALUES(text), unit=VALUES(unit), category=VALUES(category), sort_order=VALUES(sort_order);"
    )
    sql_lines.append(f"INSERT IGNORE INTO module_glossar_v2 (module_slug, glossar_slug) VALUES ('wal','{esc(slug)}');")

with tempfile.NamedTemporaryFile(mode='w', suffix='.sql', delete=False, encoding='utf-8') as f:
    f.write('\n'.join(sql_lines))
    sql_path = f.name

# Run via mysql with utf8mb4
mysql_cmd = ['C:/xampp/mysql/bin/mysql.exe', '--default-character-set=utf8mb4', '-u', 'root', 'geograsim']
with open(sql_path, encoding='utf-8') as f:
    result = subprocess.run(mysql_cmd, stdin=f, capture_output=True, text=True, encoding='utf-8')
print('STDOUT:', result.stdout[:500])
print('STDERR:', result.stderr[:500] if result.stderr else 'none')
print(f'Inserted/Updated: {len(ENTRIES)} Wal-Glossar-Eintraege + module_glossar')
os.unlink(sql_path)
