Files
endoflife-date-release-data/src/looker.py
Marc Wrobel 5ba19940ec [looker] Refactor script (#233)
Make the script more readable, mostly by:

- using the Product classes,
- a little bit of renaming and documentation.
2023-12-10 22:34:06 +01:00

38 lines
1.2 KiB
Python

import re
import xml.dom.minidom
from bs4 import BeautifulSoup
from common import http
from common import dates
from common import endoflife
"""Fetch Looker versions from the Google Cloud release notes RSS feed.
"""
ANNOUNCEMENT_PATTERN = re.compile(r"includes\s+the\s+following\s+changes", re.IGNORECASE)
VERSION_PATTERN = re.compile(r"Looker\s+(?P<version>\d+\.\d+)", re.IGNORECASE)
product = endoflife.Product("looker")
print(f"::group::{product.name}")
response = http.fetch_url("https://cloud.google.com/feeds/looker-release-notes.xml")
rss = xml.dom.minidom.parseString(response.text)
for item in rss.getElementsByTagName("entry"):
content = item.getElementsByTagName("content")[0].firstChild.nodeValue
content_soup = BeautifulSoup(content, features="html5lib")
announcement_match = content_soup.find(string=ANNOUNCEMENT_PATTERN)
if not announcement_match:
continue
version_match = VERSION_PATTERN.search(announcement_match.parent.get_text())
if not version_match:
continue
version = version_match.group("version")
date_str = item.getElementsByTagName("updated")[0].firstChild.nodeValue
date = dates.parse_datetime(date_str)
product.declare_version(version, date)
product.write()
print("::endgroup::")