From 08de43621e79c191ca1734e0af3c272752bde7fe Mon Sep 17 00:00:00 2001 From: Eskimue Date: Sat, 4 Apr 2026 14:16:10 +0200 Subject: [PATCH] ISS in die Monatsvorhersage eingebaut --- .codex-temp/check_api_import.py | 4 + .codex-temp/php-server-error.log | 512 ++++++++++++++++++++++ .codex-temp/render_month_sat.php | 12 + .codex-temp/render_month_sat_search.php | 15 + .codex-temp/render_month_sat_search2.php | 15 + public/monatsvorhersage_old.php | 294 ++++++++++++- public/py/__pycache__/api.cpython-314.pyc | Bin 148239 -> 209212 bytes public/py/api.py | 7 + 8 files changed, 852 insertions(+), 7 deletions(-) create mode 100644 .codex-temp/check_api_import.py create mode 100644 .codex-temp/render_month_sat.php create mode 100644 .codex-temp/render_month_sat_search.php create mode 100644 .codex-temp/render_month_sat_search2.php diff --git a/.codex-temp/check_api_import.py b/.codex-temp/check_api_import.py new file mode 100644 index 0000000..d19290c --- /dev/null +++ b/.codex-temp/check_api_import.py @@ -0,0 +1,4 @@ +import json, base64, sys +sys.path.insert(0, r'c:\Users\HP\source\repos\skyview.astronomiemuseum.de\public\py') +import api +print('ok-import') diff --git a/.codex-temp/php-server-error.log b/.codex-temp/php-server-error.log index e69de29..0d7d47c 100644 --- a/.codex-temp/php-server-error.log +++ b/.codex-temp/php-server-error.log @@ -0,0 +1,512 @@ +[Sat Apr 4 13:05:02 2026] PHP 8.5.4 Development Server (http://127.0.0.1:8000) started +[Sat Apr 4 13:05:02 2026] 127.0.0.1:56847 Accepted +[Sat Apr 4 13:05:02 2026] 127.0.0.1:56847 [200]: GET / +[Sat Apr 4 13:05:02 2026] 127.0.0.1:56847 Closing +[Sat Apr 4 13:05:06 2026] 127.0.0.1:60094 Accepted +[Sat Apr 4 13:05:08 2026] 127.0.0.1:60094 [200]: GET / +[Sat Apr 4 13:05:08 2026] 127.0.0.1:60094 Closing +[Sat Apr 4 13:05:08 2026] 127.0.0.1:55506 Accepted +[Sat Apr 4 13:05:08 2026] 127.0.0.1:55506 [200]: GET /css/style.css +[Sat Apr 4 13:05:08 2026] 127.0.0.1:55506 Closing +[Sat Apr 4 13:05:08 2026] 127.0.0.1:52560 Accepted +[Sat Apr 4 13:05:08 2026] 127.0.0.1:49223 Accepted +[Sat Apr 4 13:05:08 2026] 127.0.0.1:52560 [200]: GET /images/star16x16.png +[Sat Apr 4 13:05:08 2026] 127.0.0.1:49223 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:05:08 2026] 127.0.0.1:52560 Closing +[Sat Apr 4 13:05:08 2026] 127.0.0.1:49223 Closing +[Sat Apr 4 13:05:08 2026] 127.0.0.1:64599 Accepted +[Sat Apr 4 13:05:10 2026] 127.0.0.1:64599 [200]: GET /favicon.ico +[Sat Apr 4 13:05:10 2026] 127.0.0.1:64599 Closing +[Sat Apr 4 13:05:10 2026] 127.0.0.1:63078 Accepted +[Sat Apr 4 13:05:20 2026] 127.0.0.1:63078 [200]: GET /monatsvorhersage.php +[Sat Apr 4 13:05:20 2026] 127.0.0.1:63078 Closing +[Sat Apr 4 13:05:20 2026] 127.0.0.1:64746 Accepted +[Sat Apr 4 13:05:20 2026] 127.0.0.1:57663 Accepted +[Sat Apr 4 13:05:20 2026] 127.0.0.1:64746 [200]: GET /css/style.css +[Sat Apr 4 13:05:39 2026] 127.0.0.1:57663 [200]: GET /monatsvorhersage_old.php +[Sat Apr 4 13:05:39 2026] 127.0.0.1:57663 Closing +[Sat Apr 4 13:05:39 2026] 127.0.0.1:60792 Accepted +[Sat Apr 4 13:05:39 2026] 127.0.0.1:64746 Closing +[Sat Apr 4 13:05:39 2026] 127.0.0.1:51819 Accepted +[Sat Apr 4 13:05:39 2026] 127.0.0.1:60792 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:05:39 2026] 127.0.0.1:51819 [200]: GET /css/style.css +[Sat Apr 4 13:05:39 2026] 127.0.0.1:60792 Closing +[Sat Apr 4 13:05:39 2026] 127.0.0.1:51819 Closing +[Sat Apr 4 13:05:40 2026] 127.0.0.1:55510 Accepted +[Sat Apr 4 13:05:40 2026] 127.0.0.1:55510 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:05:40 2026] 127.0.0.1:55510 Closing +[Sat Apr 4 13:05:40 2026] 127.0.0.1:61999 Accepted +[Sat Apr 4 13:05:40 2026] 127.0.0.1:56212 Accepted +[Sat Apr 4 13:05:40 2026] 127.0.0.1:61999 [200]: GET /images/star16x16.png +[Sat Apr 4 13:05:40 2026] 127.0.0.1:56212 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:05:40 2026] 127.0.0.1:61999 Closing +[Sat Apr 4 13:05:40 2026] 127.0.0.1:56212 Closing +[Sat Apr 4 13:05:40 2026] 127.0.0.1:64580 Accepted +[Sat Apr 4 13:05:40 2026] 127.0.0.1:64580 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:05:40 2026] 127.0.0.1:64580 Closing +[Sat Apr 4 13:05:40 2026] 127.0.0.1:55814 Accepted +[Sat Apr 4 13:05:42 2026] 127.0.0.1:55814 [200]: GET /favicon.ico +[Sat Apr 4 13:05:42 2026] 127.0.0.1:55814 Closing +[Sat Apr 4 13:05:42 2026] 127.0.0.1:62833 Accepted +[Sat Apr 4 13:07:52 2026] 127.0.0.1:62833 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:07:52 2026] 127.0.0.1:62833 Closing +[Sat Apr 4 13:07:52 2026] 127.0.0.1:51688 Accepted +[Sat Apr 4 13:08:11 2026] 127.0.0.1:51688 [200]: GET /monatsvorhersage_old.php?year=2026&month=8 +[Sat Apr 4 13:08:11 2026] 127.0.0.1:51688 Closing +[Sat Apr 4 13:08:11 2026] 127.0.0.1:51110 Accepted +[Sat Apr 4 13:08:11 2026] 127.0.0.1:51110 [200]: GET /css/style.css +[Sat Apr 4 13:08:11 2026] 127.0.0.1:51110 Closing +[Sat Apr 4 13:08:12 2026] 127.0.0.1:61842 Accepted +[Sat Apr 4 13:08:12 2026] 127.0.0.1:61842 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:08:12 2026] 127.0.0.1:61842 Closing +[Sat Apr 4 13:08:12 2026] 127.0.0.1:64415 Accepted +[Sat Apr 4 13:08:12 2026] 127.0.0.1:62641 Accepted +[Sat Apr 4 13:08:12 2026] 127.0.0.1:64415 [200]: GET /images/star16x16.png +[Sat Apr 4 13:08:12 2026] 127.0.0.1:62641 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:08:12 2026] 127.0.0.1:64415 Closing +[Sat Apr 4 13:08:12 2026] 127.0.0.1:62641 Closing +[Sat Apr 4 13:08:12 2026] 127.0.0.1:63695 Accepted +[Sat Apr 4 13:08:12 2026] 127.0.0.1:63695 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:08:12 2026] 127.0.0.1:63695 Closing +[Sat Apr 4 13:08:12 2026] 127.0.0.1:65119 Accepted +[Sat Apr 4 13:08:14 2026] 127.0.0.1:65119 [200]: GET /favicon.ico +[Sat Apr 4 13:08:14 2026] 127.0.0.1:65119 Closing +[Sat Apr 4 13:08:14 2026] 127.0.0.1:50310 Accepted +[Sat Apr 4 13:09:39 2026] 127.0.0.1:50310 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:09:39 2026] 127.0.0.1:50310 Closing +[Sat Apr 4 13:11:39 2026] 127.0.0.1:51038 Accepted +[Sat Apr 4 13:11:59 2026] 127.0.0.1:51038 [200]: GET /monatsvorhersage_old.php?month=8&year=2026 +[Sat Apr 4 13:11:59 2026] 127.0.0.1:51038 Closing +[Sat Apr 4 13:15:49 2026] 127.0.0.1:61379 Accepted +[Sat Apr 4 13:16:07 2026] 127.0.0.1:61379 [200]: GET /monatsvorhersage_old.php?year=2026&month=8 +[Sat Apr 4 13:16:07 2026] 127.0.0.1:61379 Closing +[Sat Apr 4 13:16:07 2026] 127.0.0.1:57225 Accepted +[Sat Apr 4 13:16:07 2026] 127.0.0.1:57225 [200]: GET /css/style.css +[Sat Apr 4 13:16:07 2026] 127.0.0.1:57225 Closing +[Sat Apr 4 13:16:08 2026] 127.0.0.1:54279 Accepted +[Sat Apr 4 13:16:08 2026] 127.0.0.1:63941 Accepted +[Sat Apr 4 13:16:08 2026] 127.0.0.1:50404 Accepted +[Sat Apr 4 13:16:08 2026] 127.0.0.1:54279 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:16:08 2026] 127.0.0.1:63941 [200]: GET /images/star16x16.png +[Sat Apr 4 13:16:08 2026] 127.0.0.1:50404 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:16:08 2026] 127.0.0.1:54279 Closing +[Sat Apr 4 13:16:08 2026] 127.0.0.1:63941 Closing +[Sat Apr 4 13:16:08 2026] 127.0.0.1:50404 Closing +[Sat Apr 4 13:16:08 2026] 127.0.0.1:65327 Accepted +[Sat Apr 4 13:16:08 2026] 127.0.0.1:65327 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:16:08 2026] 127.0.0.1:65327 Closing +[Sat Apr 4 13:16:08 2026] 127.0.0.1:59854 Accepted +[Sat Apr 4 13:16:10 2026] 127.0.0.1:59854 [200]: GET /favicon.ico +[Sat Apr 4 13:16:10 2026] 127.0.0.1:59854 Closing +[Sat Apr 4 13:16:10 2026] 127.0.0.1:56915 Accepted +[Sat Apr 4 13:17:37 2026] 127.0.0.1:56915 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:17:37 2026] 127.0.0.1:56915 Closing +[Sat Apr 4 13:19:31 2026] 127.0.0.1:62466 Accepted +[Sat Apr 4 13:19:49 2026] 127.0.0.1:62466 [200]: GET /monatsvorhersage_old.php?year=2026&month=8 +[Sat Apr 4 13:19:49 2026] 127.0.0.1:62466 Closing +[Sat Apr 4 13:19:49 2026] 127.0.0.1:56563 Accepted +[Sat Apr 4 13:19:49 2026] 127.0.0.1:56563 [200]: GET /css/style.css +[Sat Apr 4 13:19:49 2026] 127.0.0.1:56563 Closing +[Sat Apr 4 13:19:50 2026] 127.0.0.1:64763 Accepted +[Sat Apr 4 13:19:50 2026] 127.0.0.1:57365 Accepted +[Sat Apr 4 13:19:50 2026] 127.0.0.1:65177 Accepted +[Sat Apr 4 13:19:50 2026] 127.0.0.1:64763 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:19:50 2026] 127.0.0.1:57365 [200]: GET /images/star16x16.png +[Sat Apr 4 13:19:50 2026] 127.0.0.1:65177 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:19:50 2026] 127.0.0.1:64763 Closing +[Sat Apr 4 13:19:50 2026] 127.0.0.1:57365 Closing +[Sat Apr 4 13:19:50 2026] 127.0.0.1:65177 Closing +[Sat Apr 4 13:19:50 2026] 127.0.0.1:55468 Accepted +[Sat Apr 4 13:19:50 2026] 127.0.0.1:55468 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:19:50 2026] 127.0.0.1:55468 Closing +[Sat Apr 4 13:19:50 2026] 127.0.0.1:59829 Accepted +[Sat Apr 4 13:19:52 2026] 127.0.0.1:59829 [200]: GET /favicon.ico +[Sat Apr 4 13:19:52 2026] 127.0.0.1:59829 Closing +[Sat Apr 4 13:19:52 2026] 127.0.0.1:59742 Accepted +[Sat Apr 4 13:20:29 2026] 127.0.0.1:59742 [200]: GET /monatsvorhersage_old.php?year=2026&month=4 +[Sat Apr 4 13:20:29 2026] 127.0.0.1:59742 Closing +[Sat Apr 4 13:20:29 2026] 127.0.0.1:56911 Accepted +[Sat Apr 4 13:20:29 2026] 127.0.0.1:56911 [200]: GET /css/style.css +[Sat Apr 4 13:20:29 2026] 127.0.0.1:56911 Closing +[Sat Apr 4 13:20:29 2026] 127.0.0.1:56768 Accepted +[Sat Apr 4 13:20:29 2026] 127.0.0.1:55966 Accepted +[Sat Apr 4 13:20:29 2026] 127.0.0.1:63374 Accepted +[Sat Apr 4 13:20:29 2026] 127.0.0.1:56768 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:20:29 2026] 127.0.0.1:55966 [200]: GET /images/star16x16.png +[Sat Apr 4 13:20:29 2026] 127.0.0.1:63374 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:20:29 2026] 127.0.0.1:56768 Closing +[Sat Apr 4 13:20:29 2026] 127.0.0.1:55966 Closing +[Sat Apr 4 13:20:29 2026] 127.0.0.1:63374 Closing +[Sat Apr 4 13:20:29 2026] 127.0.0.1:49904 Accepted +[Sat Apr 4 13:20:29 2026] 127.0.0.1:49904 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:20:29 2026] 127.0.0.1:49904 Closing +[Sat Apr 4 13:20:29 2026] 127.0.0.1:58593 Accepted +[Sat Apr 4 13:20:31 2026] 127.0.0.1:58593 [200]: GET /favicon.ico +[Sat Apr 4 13:20:31 2026] 127.0.0.1:58593 Closing +[Sat Apr 4 13:20:31 2026] 127.0.0.1:52115 Accepted +[Sat Apr 4 13:21:39 2026] 127.0.0.1:52115 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:21:39 2026] 127.0.0.1:52115 Closing +[Sat Apr 4 13:23:23 2026] 127.0.0.1:64731 Accepted +[Sat Apr 4 13:23:41 2026] 127.0.0.1:64731 [200]: GET /monatsvorhersage_old.php?year=2026&month=4 +[Sat Apr 4 13:23:41 2026] 127.0.0.1:64731 Closing +[Sat Apr 4 13:23:41 2026] 127.0.0.1:58328 Accepted +[Sat Apr 4 13:23:41 2026] 127.0.0.1:58328 [200]: GET /css/style.css +[Sat Apr 4 13:23:41 2026] 127.0.0.1:58328 Closing +[Sat Apr 4 13:23:41 2026] 127.0.0.1:58441 Accepted +[Sat Apr 4 13:23:41 2026] 127.0.0.1:54768 Accepted +[Sat Apr 4 13:23:41 2026] 127.0.0.1:62374 Accepted +[Sat Apr 4 13:23:41 2026] 127.0.0.1:58441 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:23:41 2026] 127.0.0.1:54768 [200]: GET /images/star16x16.png +[Sat Apr 4 13:23:41 2026] 127.0.0.1:62374 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:23:41 2026] 127.0.0.1:58441 Closing +[Sat Apr 4 13:23:41 2026] 127.0.0.1:54768 Closing +[Sat Apr 4 13:23:41 2026] 127.0.0.1:62374 Closing +[Sat Apr 4 13:23:42 2026] 127.0.0.1:63045 Accepted +[Sat Apr 4 13:23:42 2026] 127.0.0.1:63045 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:23:42 2026] 127.0.0.1:63045 Closing +[Sat Apr 4 13:23:42 2026] 127.0.0.1:58545 Accepted +[Sat Apr 4 13:23:43 2026] 127.0.0.1:58545 [200]: GET /favicon.ico +[Sat Apr 4 13:23:43 2026] 127.0.0.1:58545 Closing +[Sat Apr 4 13:23:43 2026] 127.0.0.1:62655 Accepted +[Sat Apr 4 13:25:25 2026] 127.0.0.1:62655 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:25:25 2026] 127.0.0.1:62655 Closing +[Sat Apr 4 13:25:56 2026] 127.0.0.1:61286 Accepted +[Sat Apr 4 13:26:14 2026] 127.0.0.1:61286 [200]: GET /monatsvorhersage_old.php?year=2026&month=4 +[Sat Apr 4 13:26:14 2026] 127.0.0.1:61286 Closing +[Sat Apr 4 13:26:14 2026] 127.0.0.1:50887 Accepted +[Sat Apr 4 13:26:14 2026] 127.0.0.1:50887 [200]: GET /css/style.css +[Sat Apr 4 13:26:14 2026] 127.0.0.1:50887 Closing +[Sat Apr 4 13:26:14 2026] 127.0.0.1:51178 Accepted +[Sat Apr 4 13:26:14 2026] 127.0.0.1:62601 Accepted +[Sat Apr 4 13:26:14 2026] 127.0.0.1:50633 Accepted +[Sat Apr 4 13:26:14 2026] 127.0.0.1:51178 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:26:14 2026] 127.0.0.1:62601 [200]: GET /images/star16x16.png +[Sat Apr 4 13:26:14 2026] 127.0.0.1:50633 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:26:14 2026] 127.0.0.1:51178 Closing +[Sat Apr 4 13:26:14 2026] 127.0.0.1:62601 Closing +[Sat Apr 4 13:26:14 2026] 127.0.0.1:50633 Closing +[Sat Apr 4 13:26:15 2026] 127.0.0.1:64777 Accepted +[Sat Apr 4 13:26:15 2026] 127.0.0.1:64777 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:26:15 2026] 127.0.0.1:64777 Closing +[Sat Apr 4 13:26:15 2026] 127.0.0.1:54587 Accepted +[Sat Apr 4 13:26:16 2026] 127.0.0.1:54587 [200]: GET /favicon.ico +[Sat Apr 4 13:26:16 2026] 127.0.0.1:54587 Closing +[Sat Apr 4 13:26:16 2026] 127.0.0.1:59843 Accepted +[Sat Apr 4 13:27:02 2026] 127.0.0.1:59843 [200]: GET /monatsvorhersage_old.php?year=2026&month=4 +[Sat Apr 4 13:27:02 2026] 127.0.0.1:59843 Closing +[Sat Apr 4 13:27:02 2026] 127.0.0.1:60256 Accepted +[Sat Apr 4 13:27:02 2026] 127.0.0.1:60256 [200]: GET /css/style.css +[Sat Apr 4 13:27:02 2026] 127.0.0.1:60256 Closing +[Sat Apr 4 13:27:03 2026] 127.0.0.1:50709 Accepted +[Sat Apr 4 13:27:03 2026] 127.0.0.1:50709 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:27:03 2026] 127.0.0.1:50709 Closing +[Sat Apr 4 13:27:03 2026] 127.0.0.1:55625 Accepted +[Sat Apr 4 13:27:03 2026] 127.0.0.1:61166 Accepted +[Sat Apr 4 13:27:03 2026] 127.0.0.1:55625 [200]: GET /images/star16x16.png +[Sat Apr 4 13:27:03 2026] 127.0.0.1:61166 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:27:03 2026] 127.0.0.1:55625 Closing +[Sat Apr 4 13:27:03 2026] 127.0.0.1:61166 Closing +[Sat Apr 4 13:27:03 2026] 127.0.0.1:56924 Accepted +[Sat Apr 4 13:27:03 2026] 127.0.0.1:56924 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:27:03 2026] 127.0.0.1:56924 Closing +[Sat Apr 4 13:27:03 2026] 127.0.0.1:58839 Accepted +[Sat Apr 4 13:27:04 2026] 127.0.0.1:58839 [200]: GET /favicon.ico +[Sat Apr 4 13:27:04 2026] 127.0.0.1:58839 Closing +[Sat Apr 4 13:27:04 2026] 127.0.0.1:59023 Accepted +[Sat Apr 4 13:28:04 2026] 127.0.0.1:59023 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:28:04 2026] 127.0.0.1:59023 Closing +[Sat Apr 4 13:28:24 2026] 127.0.0.1:65445 Accepted +[Sat Apr 4 13:28:43 2026] 127.0.0.1:65445 [200]: GET /monatsvorhersage_old.php?year=2026&month=6 +[Sat Apr 4 13:28:43 2026] 127.0.0.1:65445 Closing +[Sat Apr 4 13:28:43 2026] 127.0.0.1:57680 Accepted +[Sat Apr 4 13:28:43 2026] 127.0.0.1:57680 [200]: GET /css/style.css +[Sat Apr 4 13:28:43 2026] 127.0.0.1:57680 Closing +[Sat Apr 4 13:28:43 2026] 127.0.0.1:64580 Accepted +[Sat Apr 4 13:28:43 2026] 127.0.0.1:59058 Accepted +[Sat Apr 4 13:28:43 2026] 127.0.0.1:59321 Accepted +[Sat Apr 4 13:28:43 2026] 127.0.0.1:64580 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:28:43 2026] 127.0.0.1:59058 [200]: GET /images/star16x16.png +[Sat Apr 4 13:28:43 2026] 127.0.0.1:59321 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:28:43 2026] 127.0.0.1:64580 Closing +[Sat Apr 4 13:28:43 2026] 127.0.0.1:59058 Closing +[Sat Apr 4 13:28:43 2026] 127.0.0.1:59321 Closing +[Sat Apr 4 13:28:43 2026] 127.0.0.1:57091 Accepted +[Sat Apr 4 13:28:43 2026] 127.0.0.1:57091 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:28:43 2026] 127.0.0.1:57091 Closing +[Sat Apr 4 13:28:44 2026] 127.0.0.1:64529 Accepted +[Sat Apr 4 13:28:45 2026] 127.0.0.1:64529 [200]: GET /favicon.ico +[Sat Apr 4 13:28:45 2026] 127.0.0.1:64529 Closing +[Sat Apr 4 13:28:45 2026] 127.0.0.1:57521 Accepted +[Sat Apr 4 13:29:45 2026] 127.0.0.1:57521 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:29:45 2026] 127.0.0.1:57521 Closing +[Sat Apr 4 13:29:45 2026] 127.0.0.1:60715 Accepted +[Sat Apr 4 13:30:04 2026] 127.0.0.1:60715 [200]: GET /monatsvorhersage_old.php?year=2026&month=7 +[Sat Apr 4 13:30:04 2026] 127.0.0.1:60715 Closing +[Sat Apr 4 13:30:04 2026] 127.0.0.1:63768 Accepted +[Sat Apr 4 13:30:04 2026] 127.0.0.1:63768 [200]: GET /css/style.css +[Sat Apr 4 13:30:04 2026] 127.0.0.1:63768 Closing +[Sat Apr 4 13:30:04 2026] 127.0.0.1:53424 Accepted +[Sat Apr 4 13:30:04 2026] 127.0.0.1:63669 Accepted +[Sat Apr 4 13:30:04 2026] 127.0.0.1:61253 Accepted +[Sat Apr 4 13:30:04 2026] 127.0.0.1:53424 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:30:04 2026] 127.0.0.1:63669 [200]: GET /images/star16x16.png +[Sat Apr 4 13:30:04 2026] 127.0.0.1:61253 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:30:04 2026] 127.0.0.1:53424 Closing +[Sat Apr 4 13:30:04 2026] 127.0.0.1:63669 Closing +[Sat Apr 4 13:30:04 2026] 127.0.0.1:61253 Closing +[Sat Apr 4 13:30:05 2026] 127.0.0.1:64094 Accepted +[Sat Apr 4 13:30:05 2026] 127.0.0.1:64094 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:30:05 2026] 127.0.0.1:64094 Closing +[Sat Apr 4 13:30:05 2026] 127.0.0.1:51726 Accepted +[Sat Apr 4 13:30:06 2026] 127.0.0.1:51726 [200]: GET /favicon.ico +[Sat Apr 4 13:30:06 2026] 127.0.0.1:51726 Closing +[Sat Apr 4 13:30:06 2026] 127.0.0.1:52200 Accepted +[Sat Apr 4 13:30:50 2026] 127.0.0.1:52200 [200]: GET /monatsvorhersage_old.php?year=2026&month=11 +[Sat Apr 4 13:30:50 2026] 127.0.0.1:52200 Closing +[Sat Apr 4 13:30:50 2026] 127.0.0.1:62487 Accepted +[Sat Apr 4 13:30:50 2026] 127.0.0.1:62487 [200]: GET /css/style.css +[Sat Apr 4 13:30:50 2026] 127.0.0.1:62487 Closing +[Sat Apr 4 13:30:50 2026] 127.0.0.1:60781 Accepted +[Sat Apr 4 13:30:50 2026] 127.0.0.1:60781 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:30:50 2026] 127.0.0.1:60781 Closing +[Sat Apr 4 13:30:50 2026] 127.0.0.1:53275 Accepted +[Sat Apr 4 13:30:50 2026] 127.0.0.1:49256 Accepted +[Sat Apr 4 13:30:50 2026] 127.0.0.1:53275 [200]: GET /images/star16x16.png +[Sat Apr 4 13:30:50 2026] 127.0.0.1:49256 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:30:50 2026] 127.0.0.1:53275 Closing +[Sat Apr 4 13:30:50 2026] 127.0.0.1:49256 Closing +[Sat Apr 4 13:30:51 2026] 127.0.0.1:63389 Accepted +[Sat Apr 4 13:30:51 2026] 127.0.0.1:63389 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:30:51 2026] 127.0.0.1:63389 Closing +[Sat Apr 4 13:30:51 2026] 127.0.0.1:61832 Accepted +[Sat Apr 4 13:30:52 2026] 127.0.0.1:61832 [200]: GET /favicon.ico +[Sat Apr 4 13:30:52 2026] 127.0.0.1:61832 Closing +[Sat Apr 4 13:30:52 2026] 127.0.0.1:59473 Accepted +[Sat Apr 4 13:31:32 2026] 127.0.0.1:59473 [200]: GET /monatsvorhersage_old.php?year=2026&month=12 +[Sat Apr 4 13:31:32 2026] 127.0.0.1:59473 Closing +[Sat Apr 4 13:31:32 2026] 127.0.0.1:65461 Accepted +[Sat Apr 4 13:31:32 2026] 127.0.0.1:65461 [200]: GET /css/style.css +[Sat Apr 4 13:31:32 2026] 127.0.0.1:65461 Closing +[Sat Apr 4 13:31:32 2026] 127.0.0.1:62904 Accepted +[Sat Apr 4 13:31:32 2026] 127.0.0.1:62904 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:31:32 2026] 127.0.0.1:62904 Closing +[Sat Apr 4 13:31:32 2026] 127.0.0.1:54230 Accepted +[Sat Apr 4 13:31:32 2026] 127.0.0.1:56692 Accepted +[Sat Apr 4 13:31:32 2026] 127.0.0.1:54230 [200]: GET /images/star16x16.png +[Sat Apr 4 13:31:32 2026] 127.0.0.1:56692 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:31:32 2026] 127.0.0.1:54230 Closing +[Sat Apr 4 13:31:32 2026] 127.0.0.1:56692 Closing +[Sat Apr 4 13:31:33 2026] 127.0.0.1:55075 Accepted +[Sat Apr 4 13:31:33 2026] 127.0.0.1:55075 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:31:33 2026] 127.0.0.1:55075 Closing +[Sat Apr 4 13:31:33 2026] 127.0.0.1:64547 Accepted +[Sat Apr 4 13:31:34 2026] 127.0.0.1:64547 [200]: GET /favicon.ico +[Sat Apr 4 13:31:34 2026] 127.0.0.1:64547 Closing +[Sat Apr 4 13:31:34 2026] 127.0.0.1:55972 Accepted +[Sat Apr 4 13:32:38 2026] 127.0.0.1:55972 [200]: GET /monatsvorhersage_old.php?year=2026&month=6 +[Sat Apr 4 13:32:38 2026] 127.0.0.1:55972 Closing +[Sat Apr 4 13:32:38 2026] 127.0.0.1:59385 Accepted +[Sat Apr 4 13:32:38 2026] 127.0.0.1:59385 [200]: GET /css/style.css +[Sat Apr 4 13:32:38 2026] 127.0.0.1:59385 Closing +[Sat Apr 4 13:32:38 2026] 127.0.0.1:57529 Accepted +[Sat Apr 4 13:32:38 2026] 127.0.0.1:57529 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:32:38 2026] 127.0.0.1:57529 Closing +[Sat Apr 4 13:32:38 2026] 127.0.0.1:52680 Accepted +[Sat Apr 4 13:32:38 2026] 127.0.0.1:53823 Accepted +[Sat Apr 4 13:32:38 2026] 127.0.0.1:52680 [200]: GET /images/star16x16.png +[Sat Apr 4 13:32:38 2026] 127.0.0.1:53823 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:32:38 2026] 127.0.0.1:52680 Closing +[Sat Apr 4 13:32:38 2026] 127.0.0.1:53823 Closing +[Sat Apr 4 13:32:38 2026] 127.0.0.1:55373 Accepted +[Sat Apr 4 13:32:38 2026] 127.0.0.1:55373 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:32:38 2026] 127.0.0.1:55373 Closing +[Sat Apr 4 13:32:39 2026] 127.0.0.1:57222 Accepted +[Sat Apr 4 13:32:40 2026] 127.0.0.1:57222 [200]: GET /favicon.ico +[Sat Apr 4 13:32:40 2026] 127.0.0.1:57222 Closing +[Sat Apr 4 13:32:40 2026] 127.0.0.1:65119 Accepted +[Sat Apr 4 13:33:49 2026] 127.0.0.1:65119 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:33:49 2026] 127.0.0.1:65119 Closing +[Sat Apr 4 13:38:06 2026] 127.0.0.1:58712 Accepted +[Sat Apr 4 13:38:25 2026] 127.0.0.1:58712 [200]: GET /monatsvorhersage_old.php?year=2026&month=6 +[Sat Apr 4 13:38:25 2026] 127.0.0.1:58712 Closing +[Sat Apr 4 13:38:25 2026] 127.0.0.1:49291 Accepted +[Sat Apr 4 13:38:25 2026] 127.0.0.1:49291 [200]: GET /css/style.css +[Sat Apr 4 13:38:25 2026] 127.0.0.1:49291 Closing +[Sat Apr 4 13:38:25 2026] 127.0.0.1:54898 Accepted +[Sat Apr 4 13:38:25 2026] 127.0.0.1:64556 Accepted +[Sat Apr 4 13:38:25 2026] 127.0.0.1:52911 Accepted +[Sat Apr 4 13:38:25 2026] 127.0.0.1:54898 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:38:25 2026] 127.0.0.1:64556 [200]: GET /images/star16x16.png +[Sat Apr 4 13:38:25 2026] 127.0.0.1:52911 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:38:25 2026] 127.0.0.1:54898 Closing +[Sat Apr 4 13:38:25 2026] 127.0.0.1:64556 Closing +[Sat Apr 4 13:38:25 2026] 127.0.0.1:52911 Closing +[Sat Apr 4 13:38:25 2026] 127.0.0.1:52036 Accepted +[Sat Apr 4 13:38:25 2026] 127.0.0.1:52036 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:38:25 2026] 127.0.0.1:52036 Closing +[Sat Apr 4 13:38:25 2026] 127.0.0.1:51944 Accepted +[Sat Apr 4 13:38:27 2026] 127.0.0.1:51944 [200]: GET /favicon.ico +[Sat Apr 4 13:38:27 2026] 127.0.0.1:51944 Closing +[Sat Apr 4 13:38:27 2026] 127.0.0.1:51201 Accepted +[Sat Apr 4 13:40:25 2026] 127.0.0.1:51201 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:40:25 2026] 127.0.0.1:51201 Closing +[Sat Apr 4 13:44:22 2026] 127.0.0.1:62240 Accepted +[Sat Apr 4 13:44:45 2026] 127.0.0.1:62240 [200]: GET /monatsvorhersage_old.php?year=2026&month=6 +[Sat Apr 4 13:44:45 2026] 127.0.0.1:62240 Closing +[Sat Apr 4 13:44:45 2026] 127.0.0.1:56366 Accepted +[Sat Apr 4 13:44:45 2026] 127.0.0.1:56366 [200]: GET /css/style.css +[Sat Apr 4 13:44:45 2026] 127.0.0.1:56366 Closing +[Sat Apr 4 13:44:46 2026] 127.0.0.1:61203 Accepted +[Sat Apr 4 13:44:46 2026] 127.0.0.1:60789 Accepted +[Sat Apr 4 13:44:46 2026] 127.0.0.1:58216 Accepted +[Sat Apr 4 13:44:46 2026] 127.0.0.1:61203 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:44:46 2026] 127.0.0.1:60789 [200]: GET /images/star16x16.png +[Sat Apr 4 13:44:46 2026] 127.0.0.1:58216 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:44:46 2026] 127.0.0.1:61203 Closing +[Sat Apr 4 13:44:46 2026] 127.0.0.1:60789 Closing +[Sat Apr 4 13:44:46 2026] 127.0.0.1:58216 Closing +[Sat Apr 4 13:44:46 2026] 127.0.0.1:51748 Accepted +[Sat Apr 4 13:44:46 2026] 127.0.0.1:51748 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:44:46 2026] 127.0.0.1:51748 Closing +[Sat Apr 4 13:44:46 2026] 127.0.0.1:58822 Accepted +[Sat Apr 4 13:44:48 2026] 127.0.0.1:58822 [200]: GET /favicon.ico +[Sat Apr 4 13:44:48 2026] 127.0.0.1:58822 Closing +[Sat Apr 4 13:44:48 2026] 127.0.0.1:59663 Accepted +[Sat Apr 4 13:45:47 2026] 127.0.0.1:59663 [200]: GET /monatsvorhersage_old.php?year=2026&month=3 +[Sat Apr 4 13:45:47 2026] 127.0.0.1:59663 Closing +[Sat Apr 4 13:45:47 2026] 127.0.0.1:58444 Accepted +[Sat Apr 4 13:45:47 2026] 127.0.0.1:58444 [200]: GET /css/style.css +[Sat Apr 4 13:45:47 2026] 127.0.0.1:58444 Closing +[Sat Apr 4 13:45:47 2026] 127.0.0.1:54748 Accepted +[Sat Apr 4 13:45:47 2026] 127.0.0.1:50160 Accepted +[Sat Apr 4 13:45:47 2026] 127.0.0.1:63963 Accepted +[Sat Apr 4 13:45:47 2026] 127.0.0.1:54748 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:45:47 2026] 127.0.0.1:50160 [200]: GET /images/star16x16.png +[Sat Apr 4 13:45:47 2026] 127.0.0.1:63963 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:45:47 2026] 127.0.0.1:54748 Closing +[Sat Apr 4 13:45:47 2026] 127.0.0.1:50160 Closing +[Sat Apr 4 13:45:47 2026] 127.0.0.1:63963 Closing +[Sat Apr 4 13:45:47 2026] 127.0.0.1:49669 Accepted +[Sat Apr 4 13:45:47 2026] 127.0.0.1:49669 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:45:47 2026] 127.0.0.1:49669 Closing +[Sat Apr 4 13:45:48 2026] 127.0.0.1:62598 Accepted +[Sat Apr 4 13:45:49 2026] 127.0.0.1:62598 [200]: GET /favicon.ico +[Sat Apr 4 13:45:49 2026] 127.0.0.1:62598 Closing +[Sat Apr 4 13:45:49 2026] 127.0.0.1:64872 Accepted +[Sat Apr 4 13:47:10 2026] 127.0.0.1:64872 [200]: GET /monatsvorhersage_old.php?year=2026&month=3 +[Sat Apr 4 13:47:10 2026] 127.0.0.1:64872 Closing +[Sat Apr 4 13:47:10 2026] 127.0.0.1:52271 Accepted +[Sat Apr 4 13:47:10 2026] 127.0.0.1:52271 [200]: GET /css/style.css +[Sat Apr 4 13:47:10 2026] 127.0.0.1:52271 Closing +[Sat Apr 4 13:47:10 2026] 127.0.0.1:60145 Accepted +[Sat Apr 4 13:47:10 2026] 127.0.0.1:60145 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:47:10 2026] 127.0.0.1:60145 Closing +[Sat Apr 4 13:47:10 2026] 127.0.0.1:64268 Accepted +[Sat Apr 4 13:47:10 2026] 127.0.0.1:54962 Accepted +[Sat Apr 4 13:47:10 2026] 127.0.0.1:64268 [200]: GET /images/star16x16.png +[Sat Apr 4 13:47:10 2026] 127.0.0.1:54962 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:47:10 2026] 127.0.0.1:64268 Closing +[Sat Apr 4 13:47:10 2026] 127.0.0.1:54962 Closing +[Sat Apr 4 13:47:10 2026] 127.0.0.1:60276 Accepted +[Sat Apr 4 13:47:10 2026] 127.0.0.1:60276 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:47:10 2026] 127.0.0.1:60276 Closing +[Sat Apr 4 13:47:11 2026] 127.0.0.1:57233 Accepted +[Sat Apr 4 13:47:12 2026] 127.0.0.1:57233 [200]: GET /favicon.ico +[Sat Apr 4 13:47:12 2026] 127.0.0.1:57233 Closing +[Sat Apr 4 13:47:12 2026] 127.0.0.1:57496 Accepted +[Sat Apr 4 13:48:32 2026] 127.0.0.1:57496 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:48:32 2026] 127.0.0.1:57496 Closing +[Sat Apr 4 13:52:34 2026] 127.0.0.1:59903 Accepted +[Sat Apr 4 13:53:02 2026] 127.0.0.1:59903 [200]: GET /monatsvorhersage_old.php?year=2026&month=3 +[Sat Apr 4 13:53:02 2026] 127.0.0.1:59903 Closing +[Sat Apr 4 13:53:02 2026] 127.0.0.1:57051 Accepted +[Sat Apr 4 13:53:02 2026] 127.0.0.1:57051 [200]: GET /css/style.css +[Sat Apr 4 13:53:02 2026] 127.0.0.1:57051 Closing +[Sat Apr 4 13:53:02 2026] 127.0.0.1:55642 Accepted +[Sat Apr 4 13:53:02 2026] 127.0.0.1:55642 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:53:02 2026] 127.0.0.1:55642 Closing +[Sat Apr 4 13:53:02 2026] 127.0.0.1:58427 Accepted +[Sat Apr 4 13:53:02 2026] 127.0.0.1:55928 Accepted +[Sat Apr 4 13:53:02 2026] 127.0.0.1:58427 [200]: GET /images/star16x16.png +[Sat Apr 4 13:53:02 2026] 127.0.0.1:55928 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:53:02 2026] 127.0.0.1:58427 Closing +[Sat Apr 4 13:53:02 2026] 127.0.0.1:55928 Closing +[Sat Apr 4 13:53:03 2026] 127.0.0.1:61870 Accepted +[Sat Apr 4 13:53:03 2026] 127.0.0.1:61870 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:53:03 2026] 127.0.0.1:61870 Closing +[Sat Apr 4 13:53:03 2026] 127.0.0.1:54335 Accepted +[Sat Apr 4 13:53:04 2026] 127.0.0.1:54335 [200]: GET /favicon.ico +[Sat Apr 4 13:53:04 2026] 127.0.0.1:54335 Closing +[Sat Apr 4 13:53:04 2026] 127.0.0.1:62912 Accepted +[Sat Apr 4 13:54:05 2026] 127.0.0.1:62912 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:54:05 2026] 127.0.0.1:62912 Closing +[Sat Apr 4 13:54:06 2026] 127.0.0.1:49467 Accepted +[Sat Apr 4 13:54:33 2026] 127.0.0.1:49467 [200]: GET /monatsvorhersage_old.php?year=2026&month=3 +[Sat Apr 4 13:54:33 2026] 127.0.0.1:49467 Closing +[Sat Apr 4 13:54:33 2026] 127.0.0.1:54734 Accepted +[Sat Apr 4 13:54:33 2026] 127.0.0.1:54734 [200]: GET /css/style.css +[Sat Apr 4 13:54:34 2026] 127.0.0.1:54734 Closing +[Sat Apr 4 13:54:34 2026] 127.0.0.1:60887 Accepted +[Sat Apr 4 13:54:34 2026] 127.0.0.1:51648 Accepted +[Sat Apr 4 13:54:34 2026] 127.0.0.1:58048 Accepted +[Sat Apr 4 13:54:34 2026] 127.0.0.1:60887 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:54:34 2026] 127.0.0.1:51648 [200]: GET /images/star16x16.png +[Sat Apr 4 13:54:34 2026] 127.0.0.1:58048 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:54:34 2026] 127.0.0.1:60887 Closing +[Sat Apr 4 13:54:34 2026] 127.0.0.1:51648 Closing +[Sat Apr 4 13:54:34 2026] 127.0.0.1:58048 Closing +[Sat Apr 4 13:54:34 2026] 127.0.0.1:64802 Accepted +[Sat Apr 4 13:54:34 2026] 127.0.0.1:64802 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:54:34 2026] 127.0.0.1:64802 Closing +[Sat Apr 4 13:54:34 2026] 127.0.0.1:63820 Accepted +[Sat Apr 4 13:54:36 2026] 127.0.0.1:63820 [200]: GET /favicon.ico +[Sat Apr 4 13:54:36 2026] 127.0.0.1:63820 Closing +[Sat Apr 4 13:54:36 2026] 127.0.0.1:52071 Accepted +[Sat Apr 4 13:55:40 2026] 127.0.0.1:52071 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:55:40 2026] 127.0.0.1:52071 Closing +[Sat Apr 4 13:57:33 2026] 127.0.0.1:51514 Accepted +[Sat Apr 4 13:58:01 2026] 127.0.0.1:51514 [200]: GET /monatsvorhersage_old.php?year=2026&month=3 +[Sat Apr 4 13:58:01 2026] 127.0.0.1:51514 Closing +[Sat Apr 4 13:58:01 2026] 127.0.0.1:64035 Accepted +[Sat Apr 4 13:58:01 2026] 127.0.0.1:64035 [200]: GET /css/style.css +[Sat Apr 4 13:58:01 2026] 127.0.0.1:64035 Closing +[Sat Apr 4 13:58:02 2026] 127.0.0.1:62594 Accepted +[Sat Apr 4 13:58:02 2026] 127.0.0.1:62594 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 13:58:02 2026] 127.0.0.1:62594 Closing +[Sat Apr 4 13:58:02 2026] 127.0.0.1:57161 Accepted +[Sat Apr 4 13:58:02 2026] 127.0.0.1:64207 Accepted +[Sat Apr 4 13:58:02 2026] 127.0.0.1:57161 [200]: GET /images/star16x16.png +[Sat Apr 4 13:58:02 2026] 127.0.0.1:64207 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 13:58:02 2026] 127.0.0.1:57161 Closing +[Sat Apr 4 13:58:02 2026] 127.0.0.1:64207 Closing +[Sat Apr 4 13:58:02 2026] 127.0.0.1:62295 Accepted +[Sat Apr 4 13:58:02 2026] 127.0.0.1:62295 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 13:58:02 2026] 127.0.0.1:62295 Closing +[Sat Apr 4 13:58:02 2026] 127.0.0.1:58421 Accepted +[Sat Apr 4 13:58:03 2026] 127.0.0.1:58421 [200]: GET /favicon.ico +[Sat Apr 4 13:58:03 2026] 127.0.0.1:58421 Closing +[Sat Apr 4 13:58:03 2026] 127.0.0.1:64749 Accepted +[Sat Apr 4 13:59:29 2026] 127.0.0.1:64749 Closed without sending a request; it was probably just an unused speculative preconnection +[Sat Apr 4 13:59:29 2026] 127.0.0.1:64749 Closing +[Sat Apr 4 14:00:30 2026] 127.0.0.1:59949 Accepted +[Sat Apr 4 14:00:58 2026] 127.0.0.1:59949 [200]: GET /monatsvorhersage_old.php?year=2026&month=3 +[Sat Apr 4 14:00:58 2026] 127.0.0.1:59949 Closing +[Sat Apr 4 14:00:58 2026] 127.0.0.1:58547 Accepted +[Sat Apr 4 14:00:58 2026] 127.0.0.1:58547 [200]: GET /css/style.css +[Sat Apr 4 14:00:58 2026] 127.0.0.1:58547 Closing +[Sat Apr 4 14:00:59 2026] 127.0.0.1:52032 Accepted +[Sat Apr 4 14:00:59 2026] 127.0.0.1:59328 Accepted +[Sat Apr 4 14:00:59 2026] 127.0.0.1:61499 Accepted +[Sat Apr 4 14:00:59 2026] 127.0.0.1:52032 [200]: GET /js/astronomy.browser.min.js +[Sat Apr 4 14:00:59 2026] 127.0.0.1:59328 [200]: GET /images/star16x16.png +[Sat Apr 4 14:00:59 2026] 127.0.0.1:61499 [200]: GET /images/star16x16_rays.png +[Sat Apr 4 14:00:59 2026] 127.0.0.1:52032 Closing +[Sat Apr 4 14:00:59 2026] 127.0.0.1:59328 Closing +[Sat Apr 4 14:00:59 2026] 127.0.0.1:61499 Closing +[Sat Apr 4 14:00:59 2026] 127.0.0.1:52843 Accepted +[Sat Apr 4 14:00:59 2026] 127.0.0.1:52843 [200]: GET /images/moons/moon4geocron.png +[Sat Apr 4 14:00:59 2026] 127.0.0.1:52843 Closing +[Sat Apr 4 14:00:59 2026] 127.0.0.1:63369 Accepted +[Sat Apr 4 14:01:01 2026] 127.0.0.1:63369 [200]: GET /favicon.ico +[Sat Apr 4 14:01:01 2026] 127.0.0.1:63369 Closing +[Sat Apr 4 14:01:01 2026] 127.0.0.1:61071 Accepted diff --git a/.codex-temp/render_month_sat.php b/.codex-temp/render_month_sat.php new file mode 100644 index 0000000..a5195fd --- /dev/null +++ b/.codex-temp/render_month_sat.php @@ -0,0 +1,12 @@ + 1]; +$_GET['month'] = '4'; +$_GET['year'] = '2026'; +ob_start(); +require __DIR__ . '/../public/monatsvorhersage_old.php'; +$html = ob_get_clean(); +if (preg_match_all('/(.*?)<\/span>\s*(.*?)<\/span>\s*(.*?)<\/span>/s', $html, $m)) { + echo 'rendered', PHP_EOL; +} else { + echo 'rendered-no-match', PHP_EOL; +} diff --git a/.codex-temp/render_month_sat_search.php b/.codex-temp/render_month_sat_search.php new file mode 100644 index 0000000..e102df0 --- /dev/null +++ b/.codex-temp/render_month_sat_search.php @@ -0,0 +1,15 @@ += 0 ? '+' : '-'; + $abs = abs($value); + $exp = (int) floor(log10($abs)) + 1; + $mantissa = (int) round($abs / pow(10, $exp) * 1e5); + if ($mantissa >= 100000) { + $mantissa = 10000; + $exp++; + } + + $expSign = $exp >= 0 ? '+' : '-'; + return sprintf('%s%05d%s%d', $sign, $mantissa, $expSign, abs($exp)); + } +} + +if (!function_exists('monthForecastTleMmDot')) { + function monthForecastTleMmDot(float $value): string + { + $sign = $value >= 0 ? ' ' : '-'; + return sprintf('%s.%08d', $sign, (int) round(abs($value) * 1e8)); + } +} + +if (!function_exists('monthForecastTleEpoch')) { + function monthForecastTleEpoch(string $epochStr): string + { + $dt = new DateTimeImmutable($epochStr, new DateTimeZone('UTC')); + $yy = (int) $dt->format('Y') % 100; + $jan1 = new DateTimeImmutable($dt->format('Y') . '-01-01 00:00:00', new DateTimeZone('UTC')); + $secs = (float) $dt->format('U') - (float) $jan1->format('U'); + $day = $secs / 86400.0 + 1.0; + + return sprintf('%02d%012.8f', $yy, $day); + } +} + +if (!function_exists('monthForecastTleIntlDesig')) { + function monthForecastTleIntlDesig(?string $objectId): string + { + if (!$objectId) { + return str_repeat(' ', 8); + } + + if (preg_match('/^(\d{4})-(\d+)([A-Z]*)$/i', trim($objectId), $match)) { + $yy = substr($match[1], 2, 2); + $launch = str_pad($match[2], 3, '0', STR_PAD_LEFT); + $piece = str_pad(strtoupper($match[3]), 3, ' ', STR_PAD_RIGHT); + return substr(str_pad($yy . $launch . $piece, 8, ' '), 0, 8); + } + + return str_pad(substr($objectId, 0, 8), 8); + } +} + +if (!function_exists('monthForecastBuildTleLine1')) { + function monthForecastBuildTleLine1(array $sat, array $tle): string + { + $norad = (int) ($sat['norad_cat_id'] ?? 0); + $class = in_array($sat['classification_type'] ?? '', ['U', 'C', 'S'], true) + ? (string) $sat['classification_type'] + : 'U'; + + $line = sprintf( + '1 %05d%1s %-8s %14s %10s %8s %8s %1d %4d', + $norad, + $class, + monthForecastTleIntlDesig($sat['object_id'] ?? null), + monthForecastTleEpoch((string) ($tle['epoch'] ?? '')), + monthForecastTleMmDot((float) ($tle['mean_motion_dot'] ?? 0)), + monthForecastTleExp((float) ($tle['mean_motion_ddot'] ?? 0)), + monthForecastTleExp((float) ($tle['bstar'] ?? 0)), + (int) ($tle['ephemeris_type'] ?? 0), + (int) ($tle['element_set_no'] ?? 0) + ); + $line = str_pad($line, 68); + + return $line . monthForecastTleChecksum($line); + } +} + +if (!function_exists('monthForecastBuildTleLine2')) { + function monthForecastBuildTleLine2(array $sat, array $tle): string + { + $norad = (int) ($sat['norad_cat_id'] ?? 0); + $ecc = (float) ($tle['eccentricity'] ?? 0); + $eccStr = substr(sprintf('%.7f', $ecc), 2); + + $line = sprintf( + '2 %05d %8.4f %8.4f %7s %8.4f %8.4f %11.8f%5d', + $norad, + (float) ($tle['inclination'] ?? 0), + (float) ($tle['ra_of_asc_node'] ?? 0), + $eccStr, + (float) ($tle['arg_of_pericenter'] ?? 0), + (float) ($tle['mean_anomaly'] ?? 0), + (float) ($tle['mean_motion'] ?? 0), + (int) ($tle['rev_at_epoch'] ?? 0) + ); + $line = str_pad($line, 68); + + return $line . monthForecastTleChecksum($line); + } +} + if (!function_exists('findMonthForecastSolarLongitudeCrossing')) { function findMonthForecastSolarLongitudeCrossing( DateTimeImmutable $rangeStartLocal, @@ -610,6 +765,44 @@ try { 'zhr_variable' => trim((string) ($row['zhr_variable'] ?? '')), ]; } + + if ($loggedIn && isset($_SESSION['user_id'])) { + $favoriteSatelliteStmt = $pdo->prepare( + "SELECT s.id, s.norad_cat_id, s.object_name, s.object_id, s.classification_type, + s.std_mag, s.rcs_size, s.rcs, + t.epoch, t.mean_motion, t.eccentricity, t.inclination, + t.ra_of_asc_node, t.arg_of_pericenter, t.mean_anomaly, + t.ephemeris_type, t.element_set_no, t.rev_at_epoch, + t.bstar, t.mean_motion_dot, t.mean_motion_ddot + FROM app_user_satellites us + INNER JOIN sat_satellites s ON s.id = us.satellite_id + INNER JOIN sat_tle_current t ON t.satellite_id = s.id + WHERE us.user_id = :user_id + AND us.is_favorite = 1 + AND t.epoch IS NOT NULL + AND t.mean_motion IS NOT NULL + ORDER BY s.object_name ASC + LIMIT 1" + ); + $favoriteSatelliteStmt->execute([ + ':user_id' => (int) $_SESSION['user_id'], + ]); + $favoriteSatelliteRow = $favoriteSatelliteStmt->fetch(); + if (is_array($favoriteSatelliteRow)) { + $favoriteSatelliteName = trim((string) ($favoriteSatelliteRow['object_name'] ?? '')); + $favoriteSatellitePayload = [[ + 'id' => (int) ($favoriteSatelliteRow['id'] ?? 0), + 'norad_cat_id' => (int) ($favoriteSatelliteRow['norad_cat_id'] ?? 0), + 'object_name' => $favoriteSatelliteName, + 'is_favorite' => true, + 'std_mag' => $favoriteSatelliteRow['std_mag'] !== null ? (float) $favoriteSatelliteRow['std_mag'] : null, + 'rcs_size' => $favoriteSatelliteRow['rcs_size'] !== null ? (string) $favoriteSatelliteRow['rcs_size'] : null, + 'rcs' => $favoriteSatelliteRow['rcs'] !== null && (float) $favoriteSatelliteRow['rcs'] > 0 ? (float) $favoriteSatelliteRow['rcs'] : null, + 'tle_line1' => monthForecastBuildTleLine1($favoriteSatelliteRow, $favoriteSatelliteRow), + 'tle_line2' => monthForecastBuildTleLine2($favoriteSatelliteRow, $favoriteSatelliteRow), + ]]; + } + } } catch (Throwable $e) { $starDataError = $e->getMessage(); } @@ -628,6 +821,11 @@ $chartLocalTime = new DateTimeImmutable( new DateTimeZone($chartTimezone) ); $chartUtcTime = $chartLocalTime->setTimezone(new DateTimeZone('UTC')); +$monthStartLocal = new DateTimeImmutable( + sprintf('%04d-%02d-01 00:00:00', $selectedYear, $selectedMonth), + new DateTimeZone($chartTimezone) +); +$monthEndLocal = $monthStartLocal->modify('first day of next month'); $pythonExecutable = PHP_OS_FAMILY === 'Windows' ? 'python' : '/usr/bin/python'; $pythonScriptPath = __DIR__ . '/py/api.py'; @@ -682,6 +880,34 @@ if (is_array($pythonDecoded) && ($pythonDecoded['ok'] ?? false)) { $planetErrorText = $pythonRaw; } +if (!empty($favoriteSatellitePayload)) { + $favoriteSatellitePassOutput = []; + $favoriteSatellitePassArgs = [ + $pythonScriptPath, + 'satellite_passes', + (string) $chartLatitude, + (string) $chartLongitude, + (string) $chartElevation, + $chartTimezone, + $monthStartLocal->setTimezone(new DateTimeZone('UTC'))->format('Y-m-d\TH:i:s\Z'), + $monthEndLocal->setTimezone(new DateTimeZone('UTC'))->format('Y-m-d\TH:i:s\Z'), + base64_encode((string) json_encode($favoriteSatellitePayload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)), + ]; + $favoriteSatellitePassCommand = $pythonExecutable . ' ' . implode(' ', array_map('escapeshellarg', $favoriteSatellitePassArgs)) . ' 2>&1'; + exec($favoriteSatellitePassCommand, $favoriteSatellitePassOutput); + $favoriteSatellitePassRaw = trim(implode("\n", $favoriteSatellitePassOutput)); + $favoriteSatellitePassDecoded = json_decode($favoriteSatellitePassRaw, true); + + if (is_array($favoriteSatellitePassDecoded) && ($favoriteSatellitePassDecoded['ok'] ?? false)) { + $favoriteSatelliteResults = is_array($favoriteSatellitePassDecoded['results'] ?? null) + ? $favoriteSatellitePassDecoded['results'] + : []; + $favoriteSatellitePasses = is_array($favoriteSatelliteResults[0]['passes'] ?? null) + ? $favoriteSatelliteResults[0]['passes'] + : []; + } +} + $moonPhaseOutput = []; $moonPhaseExitCode = 0; $moonPhaseArgs = [ @@ -1465,21 +1691,22 @@ foreach ($moonOccultations as $occultationEvent) { $starLabel = (string) ($star['label'] ?? 'Stern'); $starMag = isset($star['mag']) ? number_format((float) $star['mag'], 1, ',', '') : ''; + $maximumLocalDate = (string) ($maximum['local_date'] ?? ''); + if ($maximumLocalDate !== '') { + $parsedMaximumDate = DateTimeImmutable::createFromFormat('Y-m-d', $maximumLocalDate); + if ($parsedMaximumDate instanceof DateTimeImmutable) { + $maximumLocalDate = $parsedMaximumDate->format('d.m.Y'); + } + } $monthEventList[] = [ 'event' => 'Mond bedeckt ' . $starLabel . ($starMag !== '' ? ' (' . $starMag . ' mag)' : ''), - 'date' => (string) ($maximum['local_date'] ?? ''), + 'date' => $maximumLocalDate, 'time' => (string) ($maximum['local_time'] ?? ''), 'local_iso' => (string) ($maximum['local_iso'] ?? ''), 'type' => 'moon_occultation', ]; } -$monthStartLocal = new DateTimeImmutable( - sprintf('%04d-%02d-01 00:00:00', $selectedYear, $selectedMonth), - new DateTimeZone($chartTimezone) -); -$monthEndLocal = $monthStartLocal->modify('first day of next month'); - foreach ($meteorShowerPeaks as $meteorShowerPeak) { if (!monthForecastRadiantIsVisible($chartLatitude, $meteorShowerPeak['radiant_delta_deg'] ?? null)) { continue; @@ -1531,6 +1758,59 @@ foreach ($meteorShowerPeaks as $meteorShowerPeak) { } +foreach ($favoriteSatellitePasses as $satellitePass) { + if (!is_array($satellitePass)) { + continue; + } + + $peakUtc = trim((string) ($satellitePass['peak_utc'] ?? '')); + if ($peakUtc === '') { + continue; + } + + $peakAltitude = isset($satellitePass['peak_el']) ? (float) $satellitePass['peak_el'] : null; + $peakSunAltitude = isset($satellitePass['peak_sun_altitude_deg']) ? (float) $satellitePass['peak_sun_altitude_deg'] : null; + $peakMagnitude = isset($satellitePass['peak_mag']['mag']) ? (float) $satellitePass['peak_mag']['mag'] : null; + if ($peakAltitude === null || $peakSunAltitude === null) { + continue; + } + + if ($peakAltitude < $favoriteSatelliteBestPassMinAltitudeDeg) { + continue; + } + + if ($peakSunAltitude > $favoriteSatelliteBestPassMaxSunAltitudeDeg) { + continue; + } + + try { + $peakDateTime = (new DateTimeImmutable($peakUtc))->setTimezone(new DateTimeZone($chartTimezone)); + } catch (Throwable) { + continue; + } + + if ($favoriteSatelliteBestPassOnlyFirstNightHalf && (int) $peakDateTime->format('G') < 12) { + continue; + } + + if ($peakMagnitude === null || $peakMagnitude > $favoriteSatelliteBestPassMaxPeakMagnitude) { + continue; + } + + $peakAltitudeText = number_format($peakAltitude, 0, ',', ''); + $eventLabel = 'Guter Ueberflug ' . ($favoriteSatelliteName !== null && $favoriteSatelliteName !== '' ? $favoriteSatelliteName : 'Favoriten-Satellit'); + $peakMagnitudeText = number_format($peakMagnitude, 1, ',', ''); + $eventLabel .= ' (max. ' . $peakAltitudeText . ' Grad, ' . $peakMagnitudeText . ' mag)'; + + $monthEventList[] = [ + 'event' => $eventLabel, + 'date' => $peakDateTime->format('d.m.Y'), + 'time' => $peakDateTime->format('H:i'), + 'local_iso' => $peakDateTime->format(DateTimeInterface::ATOM), + 'type' => 'favorite_satellite_pass', + ]; +} + usort( $monthEventList, static fn (array $a, array $b): int => strcmp((string) ($a['local_iso'] ?? ''), (string) ($b['local_iso'] ?? '')) diff --git a/public/py/__pycache__/api.cpython-314.pyc b/public/py/__pycache__/api.cpython-314.pyc index 4ef38dcb25ebdad2fffcb057e22fd2694172bdc7..4b12884300755bc8fc3954271027b975952a1bc9 100644 GIT binary patch delta 67696 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èNq3ItY&P=Vtdch= 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 Rb(Q8T%Rf{qR7rfI{XZwAGGG7z delta 28434 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 ae{Iw?9fzf~_q4{VrhN&I@V_X7=KmkZ-0%bd diff --git a/public/py/api.py b/public/py/api.py index 56f44e6..a60e11f 100644 --- a/public/py/api.py +++ b/public/py/api.py @@ -3941,6 +3941,7 @@ def action_satellite_passes(args: list[str]) -> dict: # Magnitude at peak peak_mag = None + peak_sun_altitude_deg = None if peak_time: jd5, fr5 = _jday_from_dt(peak_time) e5, r5, _ = satrec.sgp4(jd5, fr5) @@ -3953,6 +3954,11 @@ def action_satellite_passes(args: list[str]) -> dict: r5, sun5, obs_ecef, lat_rad, lon_rad, _gmst_rad(jd5 + fr5) ) + peak_sun_altitude_deg = body_altitude_deg( + astronomy.Body.Sun, + astronomy.Observer(latitude, longitude, elevation_m), + peak_time, + ) duration_s = int(round((los_time - aos_time).total_seconds())) local_tz = tz @@ -3970,6 +3976,7 @@ def action_satellite_passes(args: list[str]) -> dict: "los_az": round(los_az, 2) if los_az is not None else None, "peak_az": round(peak_az, 2) if peak_az is not None else None, "peak_el": round(peak_el, 2), + "peak_sun_altitude_deg": round(float(peak_sun_altitude_deg), 2) if peak_sun_altitude_deg is not None else None, "duration_s": duration_s, "path": path, "shadow_entry": shadow_entry,