[apple] Add 2020-2021 and 2022-2023 security update pages (#467)
This commit is contained in:
26
src/apple.py
26
src/apple.py
@@ -8,7 +8,9 @@ from common.releasedata import ProductData, config_from_argv
|
||||
"""Fetches and parses version and release date information from Apple's support website."""
|
||||
|
||||
URLS = [
|
||||
"https://support.apple.com/en-us/HT201222", # latest
|
||||
"https://support.apple.com/kb/HT201222", # latest
|
||||
"https://support.apple.com/en-us/121012", # 2022-2023
|
||||
"https://support.apple.com/en-us/120989", # 2020-2021
|
||||
"https://support.apple.com/kb/HT213078", # 2018-2019
|
||||
"https://support.apple.com/kb/HT213077", # 2016-2017
|
||||
"https://support.apple.com/kb/HT209441", # 2015
|
||||
@@ -25,17 +27,21 @@ DATE_PATTERN = re.compile(r"\b\d+\s[A-Za-z]+\s\d+\b")
|
||||
|
||||
config = config_from_argv()
|
||||
with ProductData(config.product) as product_data:
|
||||
# URLs are cached to avoid rate limiting by support.apple.com.
|
||||
soups = [BeautifulSoup(response.text, features="html5lib") for response in http.fetch_urls(URLS)]
|
||||
responses = http.fetch_urls(URLS)
|
||||
|
||||
for soup in soups:
|
||||
versions_table = soup.find(id="tableWraper")
|
||||
versions_table = versions_table if versions_table else soup.find('table', class_="gb-table")
|
||||
for response in responses:
|
||||
soup = BeautifulSoup(response.text, "html5lib")
|
||||
versions_table = soup.select_one("#tableWraper")
|
||||
versions_table = versions_table if versions_table else soup.select_one("table.gb-table")
|
||||
|
||||
for row in versions_table.findAll("tr")[1:]:
|
||||
cells = row.findAll("td")
|
||||
version_text = cells[0].get_text().strip()
|
||||
date_text = cells[2].get_text().strip()
|
||||
if not versions_table:
|
||||
message = f"no versions table found in {response.url}"
|
||||
raise ValueError(message)
|
||||
|
||||
for row in versions_table.find_all("tr")[1:]:
|
||||
cells = row.find_all("td")
|
||||
version_text = cells[0].get_text(separator=" ").strip()
|
||||
date_text = cells[2].get_text(separator=" ").strip()
|
||||
|
||||
date_match = DATE_PATTERN.search(date_text)
|
||||
if not date_match:
|
||||
|
||||
Reference in New Issue
Block a user