#!/bin/python3 import os 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 = os.getenv("BASEURL", default="https://www.feuerwehr-nea.de") FWNAME = os.getenv("FWNAME", default="Feuerwehr Nea") 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' '' '' '' + FWNAME +' Einsätze' '' + BASEURL + '' '' + FWNAME + ' Einsätze') 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) 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 + " - " + (soup2.find('meta', attrs={ "property": "og:title" }))['content'] + " - " + myunits + "") print("" + mylink + "") try: print("" + (soup2.find('div', class_="description")).string.strip() + '<br>' + (soup2.find('div', class_="description").find_next("p").string.strip()) + '<hr>' + myunits + "") except: print("") print("") print("")