From d441ebaed1bc51c9c17e872bc2ca0348af5f9cd9 Mon Sep 17 00:00:00 2001 From: Claude Dev Date: Tue, 24 Mar 2026 23:33:03 +0100 Subject: [PATCH] Militaerschiff-Datenbank: 20 Marinen, 80+ Schiffsklassen Abgedeckte Marinen: USA (13 Klassen: Nimitz, Ford, Arleigh-Burke, Ticonderoga, Wasp, America, Virginia, Ohio, LCS, San Antonio, Constellation...) Russland (11: Kuznetsov, Gorshkov, Grigorovich, Udaloy, Kirov, Slava, Borei, Yasen, Kilo, Karakurt, Ivan Gren) China (7: Liaoning/Shandong/Fujian, 052D, 055, 054A, 075, 071, 093/094) UK (6: Queen Elizabeth, Type 45, Type 23, Astute, Vanguard, Albion) Frankreich (6: CDG, FREMM, Horizon, Mistral, Suffren, Triomphant) Deutschland (6: F125, F124, K130, 212A, EGV, F514) Japan (7: Izumo, Hyuga, Maya, Atago, Kongo, Mogami, Soryu) Indien (4: Vikrant, Kolkata, Shivalik, Kamorta) Suedkorea (3: Dokdo, Sejong, Chungmugong) Australien (3: Canberra, Hobart, Anzac) Italien (3: Cavour, Bergamini, Orizzonte) + Tuerkei, Israel, Norwegen, Niederlande, Spanien, Aegypten, Singapur Keyword-Matching nach Schiffsname + MMSI-Laendercode. Bilder aus Wikimedia Commons fuer Hauptklassen. --- src/milship_db.py | 400 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 324 insertions(+), 76 deletions(-) diff --git a/src/milship_db.py b/src/milship_db.py index e123a2b..c7a5902 100644 --- a/src/milship_db.py +++ b/src/milship_db.py @@ -114,89 +114,337 @@ MID_COUNTRIES = { "679": "Simbabwe", } -# Bekannte Militaerschiff-Klassen mit Bildern (Wikimedia Commons) -MILITARY_SHIP_DB = { - # Format: MMSI-Prefix oder exakte MMSI -> Schiffsdaten - # USA (MMSI 338*, 366-369*) - "_class_usa_carrier": { - "class": "Nimitz/Gerald R. Ford-Klasse", - "type": "Flugzeugtraeger", - "country": "USA", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/USS_Abraham_Lincoln_%28CVN-72%29_closeup.jpg/640px-USS_Abraham_Lincoln_%28CVN-72%29_closeup.jpg", - }, - "_class_usa_destroyer": { - "class": "Arleigh-Burke-Klasse", - "type": "Zerstoerer", - "country": "USA", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/US_Navy_050715-N-8163B-003.jpg/640px-US_Navy_050715-N-8163B-003.jpg", - }, - "_class_russia_frigate": { - "class": "Admiral Gorshkov-Klasse", - "type": "Fregatte", - "country": "Russland", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Admiral_Gorshkov_frigate.jpg/640px-Admiral_Gorshkov_frigate.jpg", - }, - "_class_china_destroyer": { - "class": "Type 052D", - "type": "Zerstoerer", - "country": "China", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/90/Type_052D_Kunming.jpg/640px-Type_052D_Kunming.jpg", - }, - "_class_uk_carrier": { - "class": "Queen Elizabeth-Klasse", - "type": "Flugzeugtraeger", - "country": "UK", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/HMS_Queen_Elizabeth_in_Gibraltar_-_2018_%2828386226189%29.jpg/640px-HMS_Queen_Elizabeth_in_Gibraltar_-_2018_%2828386226189%29.jpg", - }, - "_class_germany_frigate": { - "class": "Baden-Wuerttemberg-Klasse (F125)", - "type": "Fregatte", - "country": "Deutschland", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Fregatte_Baden-W%C3%BCrttemberg_F222_%28cropped%29.jpg/640px-Fregatte_Baden-W%C3%BCrttemberg_F222_%28cropped%29.jpg", - }, - "_class_france_carrier": { - "class": "Charles de Gaulle (R91)", - "type": "Flugzeugtraeger", - "country": "Frankreich", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Charles_De_Gaulle_PEO.jpg/640px-Charles_De_Gaulle_PEO.jpg", - }, - "_class_default_military": { - "class": "Militaerschiff", - "type": "Unbekannt", - "country": "", - "image": "", - }, +# Schiffsklassen nach Land mit Wikimedia-Bildern +# Jede Klasse: (Keywords im Namen, Klassenname, Typ, Bild-URL) +SHIP_CLASSES = { + # === USA (338, 366-369) === + "USA": [ + (["CVN","NIMITZ","LINCOLN","WASHINGTON","STENNIS","VINSON","TRUMAN","EISENHOWER","REAGAN","ROOSEVELT","BUSH","CARL VINSON"], + "Nimitz-Klasse", "Flugzeugtraeger", + "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/USS_Abraham_Lincoln_%28CVN-72%29_closeup.jpg/640px-USS_Abraham_Lincoln_%28CVN-72%29_closeup.jpg"), + (["FORD","KENNEDY","ENTERPRISE CVN"], + "Gerald R. Ford-Klasse", "Flugzeugtraeger", + "https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/USS_Gerald_R._Ford_%28CVN-78%29_underway_on_8_June_2017.jpg/640px-USS_Gerald_R._Ford_%28CVN-78%29_underway_on_8_June_2017.jpg"), + (["DDG","ARLEIGH","BURKE"], + "Arleigh-Burke-Klasse", "Zerstoerer", + "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/US_Navy_050715-N-8163B-003.jpg/640px-US_Navy_050715-N-8163B-003.jpg"), + (["CG","TICONDEROGA","BUNKER HILL","SHILOH","ANTIETAM","LAKE ERIE","CHANCELLORSVILLE"], + "Ticonderoga-Klasse", "Kreuzer", + "https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/CG-53_Mobile_Bay.jpg/640px-CG-53_Mobile_Bay.jpg"), + (["LHD","WASP","ESSEX","MAKIN","BATAAN","BONHOMME","KEARSARGE","BOXER","IWO JIMA"], + "Wasp-Klasse", "Amphibisches Angriffsschiff", + "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/USS_Wasp_%28LHD-1%29.jpg/640px-USS_Wasp_%28LHD-1%29.jpg"), + (["LHA","AMERICA","TRIPOLI","BOUGAINVILLE"], + "America-Klasse", "Amphibisches Angriffsschiff", + "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/USS_America_%28LHA-6%29_off_Pascagoula_2013.JPG/640px-USS_America_%28LHA-6%29_off_Pascagoula_2013.JPG"), + (["SSN","VIRGINIA","LOS ANGELES","SEAWOLF","CONNECTICUT","JIMMY CARTER"], + "Virginia/Los Angeles-Klasse", "Atom-U-Boot", + "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/USS_Virginia_%28SSN-774%29.jpg/640px-USS_Virginia_%28SSN-774%29.jpg"), + (["SSBN","OHIO","COLUMBIA"], + "Ohio-Klasse", "Strategisches Atom-U-Boot (SSBN)", + "https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/USS_Ohio_%28SSGN-726%29.jpg/640px-USS_Ohio_%28SSGN-726%29.jpg"), + (["LCS","FREEDOM","INDEPENDENCE","LITTORAL"], + "Freedom/Independence-Klasse", "Littoral Combat Ship", + "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/USS_Freedom_%28LCS-1%29.jpg/640px-USS_Freedom_%28LCS-1%29.jpg"), + (["FFG","CONSTELLATION"], + "Constellation-Klasse", "Fregatte", + ""), + (["LPD","SAN ANTONIO","PORTLAND","ANCHORAGE","ARLINGTON"], + "San Antonio-Klasse", "Amphibisches Transportschiff", + "https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/USS_San_Antonio_LPD-17.jpg/640px-USS_San_Antonio_LPD-17.jpg"), + (["MCM","AVENGER"], + "Avenger-Klasse", "Minenjaeger", + ""), + (["T-AO","T-AKE","T-ESB","LEWIS","SUPPLY"], + "Supply/Lewis-Klasse", "Versorgungsschiff", + ""), + ], + # === Russland (273) === + "Russland": [ + (["KUZNETSOV","ADMIRAL KUZNETSOV"], + "Admiral Kuznetsov", "Flugzeugtraeger", + "https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Admiral_Kuznetsov_aircraft_carrier.jpg/640px-Admiral_Kuznetsov_aircraft_carrier.jpg"), + (["GORSHKOV","KASATONOV","GOLOVKO","ISAKOV"], + "Admiral Gorshkov-Klasse (Pr. 22350)", "Fregatte", + "https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Admiral_Gorshkov_frigate.jpg/640px-Admiral_Gorshkov_frigate.jpg"), + (["GRIGOROVICH","ESSEN","MAKAROV"], + "Admiral Grigorovich-Klasse (Pr. 11356)", "Fregatte", + ""), + (["UDALOY","SEVEROMORSK","LEVCHENKO","CHABANENKO"], + "Udaloy-Klasse (Pr. 1155)", "Zerstoerer", + ""), + (["KIROV","PYOTR","NAKHIMOV"], + "Kirov-Klasse (Pr. 1144)", "Schlachtkreuzer", + "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/080118-N-0000X-001_Kirov-class_battlecruiser.jpg/640px-080118-N-0000X-001_Kirov-class_battlecruiser.jpg"), + (["SLAVA","MOSKVA","MARSHAL","VARYAG"], + "Slava-Klasse (Pr. 1164)", "Raketenkreuzer", + ""), + (["BOREI","YURI DOLGORUKIY","KNYAZ","GENERALISSIMUS"], + "Borei-Klasse (Pr. 955)", "Strategisches Atom-U-Boot (SSBN)", + ""), + (["YASEN","SEVERODVINSK","KAZAN","NOVOSIBIRSK"], + "Yasen-Klasse (Pr. 885)", "Atom-U-Boot (SSGN)", + ""), + (["KILO","ROSTOV","NOVOROSSIYSK","VARSHAVYANKA"], + "Kilo-Klasse (Pr. 636)", "Diesel-U-Boot", + ""), + (["KARAKURT","BUYAN"], + "Karakurt/Buyan-Klasse", "Korvette", + ""), + (["IVAN GREN","PYOTR MORGUNOV"], + "Ivan Gren-Klasse", "Landungsschiff", + ""), + ], + # === China (412-414) === + "China": [ + (["LIAONING","SHANDONG","FUJIAN"], + "Liaoning/Shandong/Fujian", "Flugzeugtraeger", + "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Liaoning_aircraft_carrier_Nov_2012.jpg/640px-Liaoning_aircraft_carrier_Nov_2012.jpg"), + (["052D","KUNMING","CHANGSHA","HEFEI","YINCHUAN"], + "Type 052D", "Zerstoerer", + ""), + (["055","NANCHANG","LHASA","DALIAN","ANSHAN"], + "Type 055 Renhai-Klasse", "Zerstoerer", + ""), + (["054A","XUZHOU","HUANGGANG","YANCHENG"], + "Type 054A Jiangkai-Klasse", "Fregatte", + ""), + (["075","HAINAN","GUANGXI","ANHUI"], + "Type 075", "Amphibisches Angriffsschiff", + ""), + (["071","KUNLUNSHAN","JINGGANG"], + "Type 071 Yuzhao-Klasse", "Landungsschiff", + ""), + (["093","094","095","096"], + "Type 093/094", "Atom-U-Boot", + ""), + ], + # === UK (232-235) === + "UK": [ + (["QUEEN ELIZABETH","PRINCE OF WALES"], + "Queen Elizabeth-Klasse", "Flugzeugtraeger", + "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/HMS_Queen_Elizabeth_in_Gibraltar_-_2018_%2828386226189%29.jpg/640px-HMS_Queen_Elizabeth_in_Gibraltar_-_2018_%2828386226189%29.jpg"), + (["DARING","DRAGON","DIAMOND","DEFENDER","DUNCAN","DAUNTLESS"], + "Type 45 Daring-Klasse", "Zerstoerer", + "https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/HMS_Daring-1.jpg/640px-HMS_Daring-1.jpg"), + (["DUKE","IRON DUKE","LANCASTER","RICHMOND","SUTHERLAND","PORTLAND","KENT","WESTMINSTER","NORTHUMBERLAND","ARGYLL","MONTROSE","ST ALBANS"], + "Type 23 Duke-Klasse", "Fregatte", + ""), + (["ASTUTE","AMBUSH","ARTFUL","AUDACIOUS","ANSON","AGAMEMNON"], + "Astute-Klasse", "Atom-U-Boot (SSN)", + ""), + (["VANGUARD","VICTORIOUS","VIGILANT","VENGEANCE"], + "Vanguard-Klasse", "Strategisches Atom-U-Boot (SSBN)", + ""), + (["ALBION","BULWARK"], + "Albion-Klasse", "Amphibisches Transportschiff", + ""), + ], + # === Frankreich (226-228) === + "Frankreich": [ + (["CHARLES DE GAULLE","CDG"], + "Charles de Gaulle (R91)", "Flugzeugtraeger", + "https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Charles_De_Gaulle_PEO.jpg/640px-Charles_De_Gaulle_PEO.jpg"), + (["FREMM","AQUITAINE","NORMANDIE","PROVENCE","LANGUEDOC","AUVERGNE","BRETAGNE","ALSACE","LORRAINE"], + "FREMM-Klasse", "Fregatte", + ""), + (["HORIZON","FORBIN","CHEVALIER PAUL"], + "Horizon-Klasse", "Zerstoerer", + ""), + (["MISTRAL","TONNERRE","DIXMUDE"], + "Mistral-Klasse", "Hubschraubertraeger", + ""), + (["SUFFREN","DUGUAY"], + "Suffren-Klasse (Barracuda)", "Atom-U-Boot (SSN)", + ""), + (["TRIOMPHANT","TEMERAIRE","VIGILANT FR","TERRIBLE"], + "Triomphant-Klasse", "Strategisches Atom-U-Boot (SSBN)", + ""), + ], + # === Deutschland (211, 218) === + "Deutschland": [ + (["BADEN","NORDRHEIN","SACHSEN-ANHALT","RHEINLAND"], + "Baden-Wuerttemberg-Klasse (F125)", "Fregatte", + "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Fregatte_Baden-W%C3%BCrttemberg_F222_%28cropped%29.jpg/640px-Fregatte_Baden-W%C3%BCrttemberg_F222_%28cropped%29.jpg"), + (["SACHSEN","HAMBURG","HESSEN"], + "Sachsen-Klasse (F124)", "Fregatte", + ""), + (["BRAUNSCHWEIG","MAGDEBURG","ERFURT","OLDENBURG","LUDWIGSHAFEN"], + "Braunschweig-Klasse (K130)", "Korvette", + ""), + (["U31","U32","U33","U34","U35","U36"], + "Klasse 212A", "U-Boot", + ""), + (["BONN","FRANKFURT","BERLIN FGS"], + "Berlin-Klasse (EGV)", "Einsatzgruppenversorger", + ""), + (["ELBE","MOSEL","RHEIN","DONAU","MAIN","WERRA"], + "Elbe-Klasse (F514)", "Flottendienstboot", + ""), + ], + # === Japan (431-432) === + "Japan": [ + (["IZUMO","KAGA JS"], + "Izumo-Klasse", "Hubschraubertraeger/Leichter Traeger", + ""), + (["HYUGA","ISE JS"], + "Hyuga-Klasse", "Hubschraubertraeger", + ""), + (["MAYA","HAGURO"], + "Maya-Klasse", "Zerstoerer", + ""), + (["ATAGO","ASHIGARA"], + "Atago-Klasse", "Zerstoerer", + ""), + (["KONGO","KIRISHIMA","MYOKO","CHOKAI"], + "Kongo-Klasse", "Zerstoerer", + ""), + (["MOGAMI","KUMANO","NOSHIRO"], + "Mogami-Klasse (FFM)", "Fregatte", + ""), + (["SORYU","TAIGEI"], + "Soryu/Taigei-Klasse", "U-Boot", + ""), + ], + # === Indien (419) === + "Indien": [ + (["VIKRAMADITYA","VIKRANT INS"], + "Vikrant/Vikramaditya", "Flugzeugtraeger", + ""), + (["KOLKATA","KOCHI","CHENNAI INS"], + "Kolkata-Klasse (P15A)", "Zerstoerer", + ""), + (["SHIVALIK","SATPURA","SAHYADRI"], + "Shivalik-Klasse (P17)", "Fregatte", + ""), + (["KAMORTA","KADMATT","KILTAN","KAVARATTI"], + "Kamorta-Klasse (P28)", "Korvette", + ""), + ], + # === Suedkorea (440-441) === + "Suedkorea": [ + (["DOKDO","MARADO"], + "Dokdo-Klasse", "Amphibisches Angriffsschiff", + ""), + (["SEJONG","YULGOK","JEONGJO"], + "Sejong-Klasse (KDX-III)", "Zerstoerer", + ""), + (["CHUNGMUGONG","DAEJOYEONG","WANG GEON"], + "Chungmugong-Klasse (KDX-II)", "Zerstoerer", + ""), + ], + # === Australien (503) === + "Australien": [ + (["CANBERRA","ADELAIDE HMAS"], + "Canberra-Klasse", "Amphibisches Angriffsschiff", + ""), + (["HOBART","BRISBANE","SYDNEY HMAS"], + "Hobart-Klasse (AWD)", "Zerstoerer", + ""), + (["ANZAC","ARUNTA","WARRAMUNGA","STUART","PARRAMATTA","BALLARAT","TOOWOOMBA","PERTH HMAS"], + "Anzac-Klasse", "Fregatte", + ""), + ], + # === Italien (247) === + "Italien": [ + (["CAVOUR","TRIESTE ITS"], + "Cavour/Trieste", "Flugzeugtraeger", + ""), + (["BERGAMINI","FASAN","ALPINO","CARABINIERE","MARCEGLIA","RIZZO","SCHERGAT","FERRARIS"], + "FREMM (Bergamini-Klasse)", "Fregatte", + ""), + (["ORIZZONTE","ANDREA DORIA","CAIO DUILIO"], + "Orizzonte-Klasse (Horizon)", "Zerstoerer", + ""), + ], + # === Tuerkei (271) === + "Tuerkei": [ + (["ANADOLU","TCG"], + "Anadolu (L-400)", "Amphibisches Angriffsschiff", + ""), + (["ISTANBUL","IZMIR TCG"], + "Istanbul-Klasse (I)", "Fregatte", + ""), + ], + # === Israel (428) === + "Israel": [ + (["SAAR","MAGEN","OZ","ATZMAUT"], + "Sa'ar 6-Klasse", "Korvette", + ""), + ], + # === Norwegen (257-259) === + "Norwegen": [ + (["FRIDTJOF NANSEN","ROALD AMUNDSEN","OTTO SVERDRUP","HELGE INGSTAD","THOR HEYERDAHL"], + "Fridtjof Nansen-Klasse", "Fregatte", + ""), + ], + # === Niederlande (244-246) === + "Niederlande": [ + (["DE ZEVEN","EVERTSEN","TROMP HNLMS"], + "De Zeven Provincien-Klasse", "Fregatte", + ""), + (["KAREL DOORMAN","ROTTERDAM","JOHAN DE WITT"], + "Karel Doorman/Rotterdam", "Amphibisches Transportschiff", + ""), + ], + # === Spanien (224-225) === + "Spanien": [ + (["JUAN CARLOS"], + "Juan Carlos I (L-61)", "Amphibisches Angriffsschiff", + ""), + (["ALVARO DE BAZAN","MENDEZ","BLAS DE LEZO","CRISTOBAL","ROGER DE LAURIA"], + "Alvaro de Bazan-Klasse (F100)", "Fregatte", + ""), + ], + # === Aegypten (622) === + "Aegypten": [ + (["GAMAL ABDEL","ANWAR EL"], + "Mistral-Klasse (ex-FR)", "Hubschraubertraeger", + ""), + ], + # === Singapur (563-566) === + "Singapur": [ + (["FORMIDABLE","INTREPID","STEADFAST","TENACIOUS","STALWART","SUPREME"], + "Formidable-Klasse", "Fregatte", + ""), + ], +} + +# MID -> Land-Key Mapping +MID_TO_NAVY = { + "338": "USA", "366": "USA", "367": "USA", "368": "USA", "369": "USA", + "273": "Russland", + "412": "China", "413": "China", "414": "China", + "232": "UK", "233": "UK", "234": "UK", "235": "UK", + "226": "Frankreich", "227": "Frankreich", "228": "Frankreich", + "211": "Deutschland", "218": "Deutschland", + "431": "Japan", "432": "Japan", + "419": "Indien", + "440": "Suedkorea", "441": "Suedkorea", + "503": "Australien", + "247": "Italien", + "271": "Tuerkei", + "428": "Israel", + "257": "Norwegen", "258": "Norwegen", "259": "Norwegen", + "244": "Niederlande", "245": "Niederlande", "246": "Niederlande", + "224": "Spanien", "225": "Spanien", + "622": "Aegypten", + "563": "Singapur", "564": "Singapur", "565": "Singapur", "566": "Singapur", } -def get_country_from_mmsi(mmsi): - """Bestimmt das Land anhand der MMSI (erste 3 Ziffern).""" - if not mmsi: - return "Unbekannt" - mid = str(mmsi)[:3] - return MID_COUNTRIES.get(mid, "Unbekannt") def classify_military_ship(mmsi, name=""): - """Versucht ein Militaerschiff zu klassifizieren.""" + """Klassifiziert ein Militaerschiff nach MMSI + Name.""" country = get_country_from_mmsi(mmsi) mid = str(mmsi)[:3] if mmsi else "" name_upper = (name or "").upper() - # Laender-basierte Klassenzuordnung - if mid in ("338","366","367","368","369"): # USA - if any(w in name_upper for w in ("CVN","CARRIER","ENTERPRISE","FORD","NIMITZ","LINCOLN","WASHINGTON","REAGAN","BUSH","EISENHOWER","TRUMAN","STENNIS","VINSON")): - return {**MILITARY_SHIP_DB["_class_usa_carrier"], "country": country} - return {**MILITARY_SHIP_DB["_class_usa_destroyer"], "country": country} - if mid in ("273",): # Russland - return {**MILITARY_SHIP_DB["_class_russia_frigate"], "country": country} - if mid in ("412","413","414"): # China - return {**MILITARY_SHIP_DB["_class_china_destroyer"], "country": country} - if mid in ("232","233","234","235"): # UK - if any(w in name_upper for w in ("QUEEN","ELIZABETH","PRINCE","WALES")): - return {**MILITARY_SHIP_DB["_class_uk_carrier"], "country": country} - if mid in ("211","218"): # Deutschland - return {**MILITARY_SHIP_DB["_class_germany_frigate"], "country": country} - if mid in ("226","227","228"): # Frankreich - if any(w in name_upper for w in ("CHARLES","GAULLE")): - return {**MILITARY_SHIP_DB["_class_france_carrier"], "country": country} + navy_key = MID_TO_NAVY.get(mid) + if navy_key and navy_key in SHIP_CLASSES: + for keywords, class_name, ship_type, image in SHIP_CLASSES[navy_key]: + if any(kw in name_upper for kw in keywords): + return {"class": class_name, "type": ship_type, "country": country, "image": image} + # Kein Keyword-Match: Generisches Militaerschiff des Landes + return {"class": "Militaerschiff (" + navy_key + ")", "type": "Unbekannt", "country": country, "image": ""} return {"class": "Militaerschiff", "type": "Unbekannt", "country": country, "image": ""}