diff options
| author | Adam Janovsky | 2025-01-27 16:31:36 +0100 |
|---|---|---|
| committer | J08nY | 2025-02-01 22:57:40 +0100 |
| commit | 92f7e3e2c7bc6ed32bef2fe02a59ef4c6225c6c7 (patch) | |
| tree | 5c6048b16995ff0c452cbcc145a6f79e073cfa62 /src/sec_certs/utils | |
| parent | bcbb31e609c1f03f8b66b9e0bc0c27ce9cd7e562 (diff) | |
| download | sec-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.py | 38 |
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) |
