[oracle-jdk] Refactor script (#237)

Make the script more readable, mostly by:

- using the Product class,
- removing the use of functions when unnecessary,
- a little bit of renaming and documentation.
This commit is contained in:
Marc Wrobel
2023-12-11 22:20:54 +01:00
committed by GitHub
parent 6642c5fff7
commit 22f9e2d4f1

View File

@@ -1,46 +1,26 @@
from requests_html import HTMLSession from requests_html import HTMLSession
from common import dates
from common import endoflife from common import endoflife
"""Fetch Java versions with their dates from https://www.java.com/releases/. """Fetch Java versions from https://www.java.com/releases/.
This script is using requests-html (https://requests-html.kennethreitz.org/) This script is using requests-html because the page needs JavaScript to render correctly."""
because https://www.java.com/releases/ needs JavaScript to render correctly.
requests-html is using pyppeteer internally for executing javascript. And product = endoflife.Product("oracle-jdk")
pyppeteer is relying on Chromium, which is automatically downloaded in print(f"::group::{product.name}")
~/.local/share/pyppeteer by the library. This path can be overridden by r = HTMLSession().get('https://www.java.com/releases/')
declaring a PYPPETEER_HOME environment variable. Unfortunately exporting this r.html.render(sleep=1, scrolldown=3)
variable in the python script does not work, so it has to be done before this
script execution.
"""
PRODUCT = "oracle-jdk" previous_date = None
URL = "https://www.java.com/releases/" for row in r.html.find('#released tr'):
version_cell = row.find('td.anchor', first=True)
if version_cell:
version = version_cell.attrs['id']
date_str = row.find('td')[1].text
date = dates.parse_date(date_str) if date_str else previous_date
product.declare_version(version, date)
previous_date = date
product.remove_version('1.0_alpha') # the only version we don't want, a regex is not needed
def fetch_releases(): product.write()
session = HTMLSession()
r = session.get('https://www.java.com/releases/')
r.html.render(sleep=1, scrolldown=3)
releases = {}
previous_date = None
for row in r.html.find('#released tr'):
version_cell = row.find('td.anchor', first=True)
if version_cell:
version = version_cell.attrs['id']
date = row.find('td')[1].text
date = previous_date if not date else date
print(f"{version}: {date}")
releases[version] = date
previous_date = date
return releases
print(f"::group::{PRODUCT}")
all_versions = fetch_releases()
all_versions.pop('1.0_alpha') # only version we don't want, regex not needed
endoflife.write_releases(PRODUCT, all_versions)
print("::endgroup::") print("::endgroup::")