From a1f7d464f1b161c64543a184e6b4306447dec94a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Wed, 6 May 2026 17:48:02 +0200 Subject: [PATCH] Konjunktionen erweitert --- public/monatsvorhersage.php | 6 +++--- public/monatsvorhersage_old.php | 4 ++-- public/py/__pycache__/api.cpython-312.pyc | Bin 228072 -> 244081 bytes public/py/api.py | 25 ++++++++++++++++++++++ public/wochenvorhersage.php | 4 ++-- 5 files changed, 32 insertions(+), 7 deletions(-) diff --git a/public/monatsvorhersage.php b/public/monatsvorhersage.php index 68358ee..8ac1c52 100644 --- a/public/monatsvorhersage.php +++ b/public/monatsvorhersage.php @@ -26,7 +26,7 @@ $shouldRunForecast = isset($_GET['run']) && $_GET['run'] === '1'; // - Jahreszeitenwechsel und Zeitumstellungen // - Sonnen- und Mondfinsternisse // - Perigäum/Apogäum des Mondes sowie Perihel/Aphel der Sonne -// - Größte Elongationen von Merkur/Venus und größte Venushelligkeit +// - Größte Elongationen sowie untere/obere Konjunktionen von Merkur/Venus und größte Venushelligkeit // - Ereignisse äußerer Planeten und deren Stillstände // - Jupitermonde auf nur einer Planetenseite // - Annäherungen Mond-Planet, Mond-Deep-Sky und Planet-heller-Stern @@ -877,7 +877,7 @@ if (!function_exists('monthForecastBuildNarrativeText')) { $planetObservationEvents = $findEvents( $filteredEvents, - static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['inner_planet_elongation', 'venus_peak_magnitude', 'outer_planet_event', 'planet_conjunction', 'planet_parade', 'mercury_good_visibility', 'golden_gate_of_ecliptic'], true), + static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['inner_planet_event', 'venus_peak_magnitude', 'outer_planet_event', 'planet_conjunction', 'planet_parade', 'mercury_good_visibility', 'golden_gate_of_ecliptic'], true), 5 ); if ($planetObservationEvents !== []) { @@ -1990,7 +1990,7 @@ foreach ($innerPlanetElongationEvents as $elongationEvent) { 'date' => (string) ($elongationEvent['local_date'] ?? ''), 'time' => (string) ($elongationEvent['local_time'] ?? ''), 'local_iso' => (string) ($elongationEvent['local_iso'] ?? ''), - 'type' => 'planet_elongation', + 'type' => 'inner_planet_event', ]; } diff --git a/public/monatsvorhersage_old.php b/public/monatsvorhersage_old.php index ab14485..f3a804f 100644 --- a/public/monatsvorhersage_old.php +++ b/public/monatsvorhersage_old.php @@ -652,7 +652,7 @@ if (!function_exists('monthForecastBuildNarrativeText')) { $planetEvents = $findEvents( $filteredEvents, - static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['inner_planet_elongation', 'venus_peak_magnitude', 'outer_planet_event', 'outer_planet_station', 'planet_conjunction', 'planet_constellation_change', 'planet_parade', 'mercury_good_visibility'], true), + static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['inner_planet_event', 'venus_peak_magnitude', 'outer_planet_event', 'outer_planet_station', 'planet_conjunction', 'planet_constellation_change', 'planet_parade', 'mercury_good_visibility'], true), 5 ); if ($planetEvents !== []) { @@ -1579,7 +1579,7 @@ foreach ($innerPlanetElongationEvents as $elongationEvent) { 'date' => (string) ($elongationEvent['local_date'] ?? ''), 'time' => (string) ($elongationEvent['local_time'] ?? ''), 'local_iso' => (string) ($elongationEvent['local_iso'] ?? ''), - 'type' => 'planet_elongation', + 'type' => 'inner_planet_event', ]; } diff --git a/public/py/__pycache__/api.cpython-312.pyc b/public/py/__pycache__/api.cpython-312.pyc index 46f8a6ad8698e40f8cb50d16769887d74799f7e4..155b5cf3ece1b67afc180ffc3981ea9e5479f26f 100644 GIT binary patch delta 33608 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¨X-1;t3+aW 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 z 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 delta 22280 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 diff --git a/public/py/api.py b/public/py/api.py index ec16734..4a44e0b 100644 --- a/public/py/api.py +++ b/public/py/api.py @@ -3791,6 +3791,31 @@ def action_inner_planet_elongations_for_month(args: list[str]) -> dict: event = astronomy.SearchMaxElongation(body, event.time.AddDays(1.0)) + for event_kind, target_lon, event_label in [ + ("inferior_conjunction", 0.0, "unterer Konjunktion"), + ("superior_conjunction", 180.0, "oberer Konjunktion"), + ]: + event_time = astronomy.SearchRelativeLongitude(body, target_lon, scan_start) + while True: + event_dt_utc = time_to_datetime(event_time) + local_dt = event_dt_utc.astimezone(tz) + if local_dt >= local_end: + break + + if local_dt >= local_start: + events.append({ + "planet_key": key, + "planet_label": label, + "kind": event_kind, + "label": f"{label} in {event_label}", + "utc_iso": event_dt_utc.isoformat().replace("+00:00", "Z"), + "local_iso": local_dt.isoformat(), + "local_date": local_dt.strftime("%d.%m.%Y"), + "local_time": local_dt.strftime("%H:%M"), + }) + + event_time = astronomy.SearchRelativeLongitude(body, target_lon, event_time.AddDays(10.0)) + events.sort(key=lambda item: item["local_iso"]) return { diff --git a/public/wochenvorhersage.php b/public/wochenvorhersage.php index 4bf5f94..2b17aac 100644 --- a/public/wochenvorhersage.php +++ b/public/wochenvorhersage.php @@ -776,7 +776,7 @@ if (!function_exists('monthForecastBuildNarrativeText')) { $planetEvents = $findEvents( $filteredEvents, - static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['inner_planet_elongation', 'venus_peak_magnitude', 'outer_planet_event', 'outer_planet_station', 'planet_conjunction', 'planet_constellation_change', 'planet_parade', 'mercury_good_visibility'], true), + static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['inner_planet_event', 'venus_peak_magnitude', 'outer_planet_event', 'outer_planet_station', 'planet_conjunction', 'planet_constellation_change', 'planet_parade', 'mercury_good_visibility'], true), 5 ); if ($planetEvents !== []) { @@ -1712,7 +1712,7 @@ foreach ($innerPlanetElongationEvents as $elongationEvent) { 'date' => (string) ($elongationEvent['local_date'] ?? ''), 'time' => (string) ($elongationEvent['local_time'] ?? ''), 'local_iso' => (string) ($elongationEvent['local_iso'] ?? ''), - 'type' => 'planet_elongation', + 'type' => 'inner_planet_event', ]; }