From 9792af0ad95f053f6d0a5a8b8fbb76a4a7e41dde Mon Sep 17 00:00:00 2001 From: Christian Jeworrek Date: Tue, 11 Mar 2025 19:40:04 +0100 Subject: [PATCH] 2025-03-11 --- scripts/einsaetze_rss_feed.py | 43 ++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/scripts/einsaetze_rss_feed.py b/scripts/einsaetze_rss_feed.py index 2415880..59ff429 100644 --- a/scripts/einsaetze_rss_feed.py +++ b/scripts/einsaetze_rss_feed.py @@ -11,7 +11,13 @@ locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8') BASEURL = os.getenv("BASEURL", default="https://www.feuerwehr-nea.de") FWNAME = os.getenv("FWNAME", default="Feuerwehr Nea") -soup = BeautifulSoup(requests.get(BASEURL + "/einsaetze",timeout=20).content, 'html.parser') +session = requests.Session() + +soup = BeautifulSoup(session.get(BASEURL + "/einsaetze",timeout=20).content, 'html.parser') + +csrfmiddlewaretoken = soup.find('input', attrs={ "name": "csrfmiddlewaretoken" })['value'] + +soup = BeautifulSoup(session.post(BASEURL + "/einsaetze/load_reports/0/no_group/", data={ "csrfmiddlewaretoken": csrfmiddlewaretoken }, headers={'referer': BASEURL + "/einsaetze"}).content, 'html.parser') print('\n' '' @@ -20,29 +26,34 @@ print('\n' '' + BASEURL + '' '' + FWNAME + ' Einsätze') -for mysoup in soup.find_all('article', class_='teaser-element'): - mydatetime_str = mysoup.find('span', class_="date").string +for mysoup in soup.find_all('a', class_='einsatz-link text-nowrap'): + mylink = BASEURL + mysoup['href'] + soup2 = BeautifulSoup(session.get( mylink ,timeout=10).content, 'html.parser') + mydatetime_str = soup2.find("th",string='Einsatzstart').find_next("td").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')): - if itemsoup.string is not None: - mylist.append(re.sub(r"\n\ *", " ", itemsoup.string.strip())) - if len(mylist) >= 4: - mykeywords = mylist[3] - if len(mylist) >= 3: - myunits = mylist[2] + mykeywords = soup2.find("th",string='Alarmierungsart') + if mykeywords is None: + mykeywords = soup2.find("th",string='Einsatzart') + if mykeywords is not None: + mykeywords = mykeywords.find_next("td").string.strip() + else: + mykeywords = "" + myunits = soup2.find("th",string='Alarmierte Einheiten') + if myunits is None: + myunits = soup2.find("th",string='Alarmierung') + if myunits is not None: + myunits = myunits.find_next("td").string.strip() + else: + myunits = "" print("") locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') print("" + mydatetime.strftime('%a, %d %b %Y %H:%M:%S %z') + "") locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8') - print("" + mykeywords + " - " + (mysoup.find('h3', class_="heading")).string.strip() + " - " + myunits + "") + print("" + mykeywords + " - " + (soup2.find('meta', attrs={ "property": "og:title" }))['content'] + " - " + myunits + "") print("" + mylink + "") try: - print("" + (mysoup.find('div', class_="teaser-element-text")).string.strip() + "") + print("" + (soup2.find('div', class_="description")).string.strip() + '<br>' + (soup2.find('div', class_="description").find_next("p").string.strip()) + '<hr>' + myunits + "") except: print("") print("")