diff options
author | André Glüpker <git@wgmd.de> | 2021-11-25 14:01:05 +0100 |
---|---|---|
committer | André Glüpker <git@wgmd.de> | 2021-11-25 14:01:05 +0100 |
commit | f1f8c1810a9282acdace45066af0804057465446 (patch) | |
tree | d86986ae55f7251000d2655cb816d70f146cf7d4 | |
parent | c87bd8fdaa1ed0af1f22902f8b2bfc4e7a6b1e8e (diff) | |
download | rss-feeds-f1f8c1810a9282acdace45066af0804057465446.tar.gz rss-feeds-f1f8c1810a9282acdace45066af0804057465446.tar.bz2 rss-feeds-f1f8c1810a9282acdace45066af0804057465446.zip |
Add zammad release notes page
-rwxr-xr-x | webapp.py | 6 | ||||
-rwxr-xr-x | zammad.py | 52 |
2 files changed, 58 insertions, 0 deletions
@@ -18,6 +18,7 @@ from flask import Flask, Response from netto import netto from rss import buildRSS from twitter import twitter +from zammad import zammad from zdf import zdf app = Flask(__name__) @@ -70,6 +71,11 @@ def filterZDFFeed(feed): return rssResponse(zdf(feed)) +@app.route("/zammad") +def filterZammadFeed(): + return rssResponse(zammad()) + + if __name__ == "__main__": logging.basicConfig(filename="./main.log", level=logging.INFO) diff --git a/zammad.py b/zammad.py new file mode 100755 index 0000000..fd0401a --- /dev/null +++ b/zammad.py @@ -0,0 +1,52 @@ +#!/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() |