[plesk] Add automation (closes #79)
Only 18.0.20.3 and later are picked up : - format of the title for 18.0.20 and 18.0.19 are different, - there is not entry for GA of versions 18.0.18 and older. Co-authored-by: Marc Wrobel <marc.wrobel@gmail.com>
This commit is contained in:
53
src/plesk.py
Normal file
53
src/plesk.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
import json
|
||||||
|
from datetime import datetime
|
||||||
|
import urllib.request
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
|
URL = "https://docs.plesk.com/release-notes/obsidian/change-log"
|
||||||
|
PRODUCT = "plesk"
|
||||||
|
|
||||||
|
|
||||||
|
def make_bs_request(url):
|
||||||
|
req = urllib.request.Request(url)
|
||||||
|
with urllib.request.urlopen(req, timeout=5) as response:
|
||||||
|
return BeautifulSoup(response.read(), features="html5lib")
|
||||||
|
|
||||||
|
|
||||||
|
# Only 18.0.20.3 and later will be picked up :
|
||||||
|
# - format of the title for 18.0.20 and 18.0.19 are different,
|
||||||
|
# - there is not entry for GA of version 18.0.18 and older.
|
||||||
|
def fetch_releases():
|
||||||
|
result = {}
|
||||||
|
|
||||||
|
soup = make_bs_request(URL)
|
||||||
|
releases = soup.find_all("div", class_="changelog-entry--obsidian")
|
||||||
|
for release in releases:
|
||||||
|
version = release.h2.text.strip()
|
||||||
|
if not version.startswith('Plesk Obsidian 18'):
|
||||||
|
continue
|
||||||
|
|
||||||
|
version = version.replace(' Update ', '.').replace('Plesk Obsidian ', '')
|
||||||
|
if ' ' in version:
|
||||||
|
continue
|
||||||
|
date = datetime.strptime(release.p.text.strip(), '%d %B %Y').strftime("%Y-%m-%d")
|
||||||
|
result[version] = date
|
||||||
|
print(f"{version}: {date}")
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print(f"::group::{PRODUCT}")
|
||||||
|
|
||||||
|
releases = fetch_releases()
|
||||||
|
with open(f"releases/{PRODUCT}.json", "w") as f:
|
||||||
|
f.write(json.dumps(dict(
|
||||||
|
# sort by date then version (desc)
|
||||||
|
sorted(releases.items(), key=lambda x: (x[1], x[0]), reverse=True)
|
||||||
|
), indent=2))
|
||||||
|
|
||||||
|
print("::endgroup::")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user