diff --git a/modules/autobuild.py b/modules/autobuild.py index 677fa3b..068f849 100644 --- a/modules/autobuild.py +++ b/modules/autobuild.py @@ -3,7 +3,7 @@ import threading import time -STATUS_URL = "https://builds.kolibrios.org/status.html" +STATUS_URL = "http://builds.kolibrios.org/status.html" STATUS_SEC = 300 # refetch each 5 minutes autobuild_date = {"YYYY": "YYYY", "MM": "MM", "DD": "DD"} @@ -17,7 +17,6 @@ def _refresh_build_date_once(): global autobuild_date, autobuild_vers try: from urllib.request import Request, urlopen - req = Request( STATUS_URL, headers={ @@ -30,46 +29,58 @@ def _refresh_build_date_once(): r.headers.get_content_charset() or "utf-8", "replace" ) + ver_re = re.compile( + r"\b(\d+\.\d+\.\d+\.\d+\+\d{3,8}-[0-9a-fA-F]{7,40})\b" + ) + last_ver = None + rows = re.findall(r"(]*>.*?)", html, flags=re.I | re.S) - if not rows: - return - - last_commit_ver = None - for row in rows: cls = re.search(r'class\s*=\s*"([^"]*)"', row, flags=re.I) classes = cls.group(1).lower() if cls else "" - - text = re.sub(r"<[^>]+>", " ", row) - if "commit" in classes: - mver = re.search( - r"\b(\d+\.\d+\.\d+\.\d+\+\d{3,8}-[0-9a-fA-F]{7,40})\b", row - ) + mver = ver_re.search(row) if mver: - last_commit_ver = mver.group(1) - - elif "success" in classes: - mts = re.search( - r"\b(\d{4})\.(\d{2})\.(\d{2})\s+\d{2}:\d{2}:\d{2}\b", text + last_ver = mver.group(1) + continue + if "success" not in classes: + continue + text = re.sub(r"<[^>]+>", " ", row) + mts = re.search( + r"\b(\d{4})\.(\d{2})\.(\d{2})\s+\d{2}:\d{2}:\d{2}\b", text + ) + if mts: + autobuild_date["YYYY"], autobuild_date["MM"], autobuild_date["DD"] = mts.groups() + else: + mds = re.search(r"\b(\d{2})\.(\d{2})\.(\d{4})\b", text) + if not mds: + return + autobuild_date["YYYY"], autobuild_date["MM"], autobuild_date["DD"] = ( + mds.group(3), + mds.group(2), + mds.group(1), ) - if not mts: - mds = re.search(r"\b(\d{2})\.(\d{2})\.(\d{4})\b", text) - if mds: - autobuild_date["YYYY"] = mds.group(1) - autobuild_date["MM"] = mds.group(2) - autobuild_date["DD"] = mds.group(3) - else: - return - else: - ( - autobuild_date["YYYY"], - autobuild_date["MM"], - autobuild_date["DD"], - ) = mts.groups() + if last_ver: + autobuild_vers = last_ver + return - if last_commit_ver: - autobuild_vers = last_commit_ver + # Fallback for plain-text log format (no HTML table) + # Example: 2025.09.20 20:45:10 user 💚 Build processing completed successfully. Thank you. + log_line_re = re.compile( + r"^(\d{4})\.(\d{2})\.(\d{2})\s+\d{2}:\d{2}:\d{2}\s+(.*)$" + ) + for raw in html.splitlines(): + mline = log_line_re.match(raw.strip()) + if not mline: + continue + yyyy, mm, dd, rest = mline.groups() + mver = ver_re.search(rest) + if mver: + last_ver = mver.group(1) + if "Build processing completed successfully" in rest: + autobuild_date["YYYY"], autobuild_date["MM"], autobuild_date["DD"] = yyyy, mm, dd + if last_ver: + autobuild_vers = last_ver return except Exception: