aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sec_certs/utils
diff options
context:
space:
mode:
authorAdam Janovsky2025-01-27 16:31:36 +0100
committerJ08nY2025-02-01 22:57:40 +0100
commit92f7e3e2c7bc6ed32bef2fe02a59ef4c6225c6c7 (patch)
tree5c6048b16995ff0c452cbcc145a6f79e073cfa62 /src/sec_certs/utils
parentbcbb31e609c1f03f8b66b9e0bc0c27ce9cd7e562 (diff)
downloadsec-certs-92f7e3e2c7bc6ed32bef2fe02a59ef4c6225c6c7.tar.gz
sec-certs-92f7e3e2c7bc6ed32bef2fe02a59ef4c6225c6c7.tar.zst
sec-certs-92f7e3e2c7bc6ed32bef2fe02a59ef4c6225c6c7.zip
process PP maintenances
Diffstat (limited to 'src/sec_certs/utils')
-rw-r--r--src/sec_certs/utils/cc_html_parsing.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/sec_certs/utils/cc_html_parsing.py b/src/sec_certs/utils/cc_html_parsing.py
new file mode 100644
index 00000000..956353bf
--- /dev/null
+++ b/src/sec_certs/utils/cc_html_parsing.py
@@ -0,0 +1,38 @@
+import logging
+from datetime import datetime
+from typing import Any
+
+from bs4 import Tag
+
+from sec_certs import constants
+
+logger = logging.getLogger(__name__)
+
+
+def html_row_get_maintenance_div(cell: Tag) -> Tag | None:
+ divs = cell.find_all("div")
+ for d in divs:
+ if d.find("div") and d.stripped_strings and list(d.stripped_strings)[0] == "Maintenance Report(s)":
+ return d
+ return None
+
+
+def parse_maintenance_div(main_div: Tag) -> list[tuple[Any, ...]]:
+ possible_updates = list(main_div.find_all("li"))
+ maintenance_updates = set()
+ for u in possible_updates:
+ text = list(u.stripped_strings)[0]
+ main_date = datetime.strptime(text.split(" ")[0], "%Y-%m-%d").date() if text else None
+ main_title = text.split("– ")[1]
+ main_report_link = None
+ main_st_link = None
+ links = u.find_all("a")
+ for link in links:
+ if link.get("title").startswith("Maintenance Report:"):
+ main_report_link = constants.CC_PORTAL_BASE_URL + link.get("href")
+ elif link.get("title").startswith("Maintenance ST"):
+ main_st_link = constants.CC_PORTAL_BASE_URL + link.get("href")
+ else:
+ logger.error("Unknown link in Maintenance part!")
+ maintenance_updates.add((main_date, main_title, main_report_link, main_st_link))
+ return list(maintenance_updates)