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 4ef38dc..4b12884 100644 Binary files a/public/py/__pycache__/api.cpython-314.pyc and b/public/py/__pycache__/api.cpython-314.pyc differ 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,