#!/usr/bin/env python3 import logging from datetime import datetime from urllib.request import Request, urlopen from bs4 import BeautifulSoup def zammad(): url = "https://zammad.com/en/releases" try: res = urlopen(Request(url)) except Exception as exc: logging.error("Request to zammad failed.", exc_info=exc) return None try: soup = BeautifulSoup(res, features="html.parser") except Exception as exc: logging.error("Parsing to zammad failed.", exc_info=exc) return None releases = soup.find_all("a", attrs={"class": "press-article"}) return { "title": "Zammad Release Notes", "url": url, "description": "Release Notes for Zammad.", "content": [ { "title": release.find(attrs={"class": "press-article-title"}).text, "url": release.attrs.get("href"), "content": release.find("p").text, "date": datetime.strptime( " ".join( release.find( attrs={"class": "press-article-detail"} ).text.split()[:3] ), "%d %B %Y", ), } for release in releases ], } def main(): print(zammad()) if __name__ == "__main__": main()