Files
einsaetze-rss-feed/scripts/einsaetze_rss_feed.py
Christian Jeworrek d2a2d006a4 syntax, timezone
2025-02-26 19:41:38 +01:00

45 lines
1.8 KiB
Python

#!/bin/python3
import re
import locale
from datetime import datetime
from pytz import timezone
import requests
from bs4 import BeautifulSoup
locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8')
BASEURL = "https://www.feuerwehr-nea.de"
FWNAME = "Feuerwehr Nea"
soup = BeautifulSoup(requests.get(BASEURL + "/einsaetze",timeout=20).content, 'html.parser')
print('<?xml version="1.0" encoding="UTF-8" ?>\n'
'<rss version="2.0">'
'<channel>'
'<title>' + FWNAME +' Einsätze</title>'
'<link>' + BASEURL + '</link>'
'<description>' + FWNAME + ' Einsätze</description>')
for mysoup in soup.find_all('article', class_='teaser-element'):
mydatetime_str = mysoup.find('span', class_="date").string
mydatetime = datetime.strptime(mydatetime_str, '%d. %B %Y %H:%M')
mydatetime = timezone("CET").localize(mydatetime)
mylink = BASEURL + (mysoup.find('a', class_="einsatz-link"))['href']
soup2 = BeautifulSoup(requests.get(mylink,timeout=10).content, 'html.parser')
mylist = []
mykeywords = myunits = ""
for itemsoup in (soup2.find('tbody').find_all('td')):
mylist.append(re.sub(r"\n\ *", " ", itemsoup.string.strip()))
if len(mylist) >= 4:
mykeywords = mylist[3]
if len(mylist) >= 3:
myunits = mylist[2]
print("<item>")
locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
print("<pubDate>" + mydatetime.strftime('%a, %d %b %Y %H:%M:%S %z') + "</pubDate>")
locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8')
print("<title>" + mykeywords + " - " + (mysoup.find('h3', class_="heading")).string.strip() + " - " + myunits + "</title>")
print("<link>" + mylink + "</link>")
print("<description>" + (mysoup.find('div', class_="teaser-element-text")).string.strip() + "</description>")
print("</item>")
print("</channel></rss>")