Hilfe & Wissen Welche Automation Funktionen gibt es?
Welche Automation Funktionen gibt es?
logging.info / logging.error
Beispiel
logging.info("landingpagename") # 2024-02-02 15:01:46 +0100: landingpagename
Definition und Benutzung
Loggt mi dem Mode etwas während der Automation aus. Bei dem Typ event der Automation muss noch zusätzlich mit dem Befehl envVariables['should_log'] = True das logging angeschaltet werden, das es Standardmässig aus ist, und nur Angeschaltet wird, wenn bestimmte Funktionen aufgerufen und ausgeführt werden, um nicht zuviel unnützes Logging zu haben.
Syntax
logging.info(object_)
ident
Beispiel
ident("landingpagename") # "landingpagename"
Definition und Benutzung
Gibt einfach das Object zurück. Das kann manchmal benutzt werden, um danach auf die .Funktionen get, replace, strip und split zuzugreifen.
Syntax
ident(object_)
to_str
Beispiel
to_str(15) # "15"
Definition und Benutzung
Wandelt ein Object in ein String um. Sollte die Umwandlung nicht klappen kommt ein Leerer String zurück
Syntax
to_str(object_)
to_int
Beispiel
to_int("15") # 15
to_int(3.141) # 3
to_int(3.0) # 3
Definition und Benutzung
Wandelt ein Object in Integer um. Sollte die Umwandlung nicht klappen kommt 0 zurück.
Syntax
to_int(object_)
to_float
Beispiel
to_float("3.141") # 3.141
to_float(3) # 3.0
Definition und Benutzung
Wandelt ein Object in Float um. Sollte die Umwandlung nicht klappen kommt 0 zurück.
Syntax
to_float(object_)
to_bool
Beispiel
to_bool(True) # True
to_bool("hello") # True
to_bool("") # False
to_bool(0) # False
Definition und Benutzung
Wandelt ein Object in Boolean um. Sollte die Umwandlung nicht klappen kommt False zurück.
Syntax
to_bool(object_)
to_set
Beispiel
to_set("hello") # {'h','e','l','o'}
to_set([1,2,3]) # {1,2,3}
to_set((1,2,2,3)) # {1,2,3}
Definition und Benutzung
Wandelt ein Object in ein Set um. Sollte die Umwandlung nicht klappen kommt ein leeres Dictionary zurück.
Syntax
to_set(object_)
to_bytes
Beispiel
to_bytes("hello") # b'hello'
to_bytes("äöü") # b'\xc3\xa4\xc3\xb6\xc3\xbc'
to_bytes(123) # b'123'
to_bytes(True) # b'True'
to_bytes("hello", "ascii") # b'hello'
Definition und Benutzung
Wandelt ein Objekt in Bytes um. Das übergebene Objekt wird zuerst in einen String konvertiert und anschließend mit dem angegebenen Encoding in Bytes kodiert. Standardmäßig wird das UTF-8 Encoding verwendet.
Sollte während der Umwandlung ein Fehler auftreten, gibt die Funktion einen leeren Byte-String zurück.
Syntax
to_bytes(object_, encoding="utf-8")
to_tuple
Beispiel
to_tuple([1,2,3]) # (1,2,3)
to_tuple("abc") # ('a','b','c')
to_tuple({1,2,3}) # (1,2,3)
Definition und Benutzung
Wandelt ein Object in ein Tuple um. Sollte die Umwandlung nicht klappen kommt ein leeres Tuple zurück.
Syntax
to_tuple(object_)
json_loads
Beispiel
json_loads('{"Hallo": "Hallo"}') # {'Hallo':'Hallo'}
Definition und Benutzung
Ladt ein JSON Object von einem String
Syntax
json_loads(json_string)
json_dumps
Beispiel
json_dumps({'Hallo':'Hallo'}) # '{"Hallo": "Hallo"}'
Definition und Benutzung
Wandelt ein Object ein ein JSON String um
Syntax
json_dumps(object_)
base64_encode
Beispiel
# Text-Eingabe
result = base64_encode("GÜMA Mannheim")
# R8OcTUEgTWFubmhlaW0=
# Bytes-Eingabe (z. B. aus Datei oder Netzwerk)
data = "GÜMA Mannheim".encode("utf-8")
result = base64_encode(data)
# R8OcTUEgTWFubmhlaW0=
Definition und Benutzung
Die Funktion base64_encode kodiert Text- oder Binärdaten sicher in Base64. Sie unterstützt sowohl Strings als auch Bytes und stellt sicher, dass Binärdaten nicht versehentlich in Text umgewandelt werden, bevor die Base64-Kodierung erfolgt.
Wird ein String übergeben, so wird dieser zunächst mit dem angegebenen Encoding (Standard: UTF-8) in Bytes konvertiert. Wird ein Bytes- oder Bytearray-Objekt übergeben, so werden die Rohdaten direkt base64-kodiert. Dadurch eignet sich die Funktion sowohl für Textdaten als auch für Binärdaten wie Bilder, Zertifikate oder kryptografisches Material.
Syntax
base64_encode(value, encoding="utf-8")
Parameter
value (
str | bytes | bytearray)
Der zu kodierende Wert. Kann Text oder Binärdaten enthalten.encoding (
str | None, optional)
Encoding für String-Eingaben. WirdNoneübergeben, gibt die Funktion Base64-kodierte Bytes zurück. Standard ist"utf-8".
Rückgabewert
- str | bytes
Base64-kodierter Wert. Bei gesetztem Encoding als String, ansonsten als Bytes.
base64_decode
Beispiel
base64_decode("c3RyaW5n") # "string"
Definition und Benutzung
Dekodicert einen base64 String
Syntax
base64_decode(base64_string)
urlencode
Beispiel
urlencode({"test":"test", "hallo": "hallo 1"}) # test=test&hallo=hallo+1
Definition und Benutzung
URL encodiert den paramString
Syntax
urlencode(dict_)
parse_url_query_string
Beispiel
parse_url_query_string("https://kajomi.de?test=test&hallo=hallo+1") # {'test': ['test'], 'hallo': ['hallo 1']}
Definition und Benutzung
Parsed den Query String einer Domain
Syntax
parse_url_query_string(string_)
determine_random_guid
Beispiel
determine_random_guid(5) # "eOuYh"
Definition und Benutzung
Gibt eine zufälligen erzeugten String zurück
Syntax
determine_random_guid(length=10)
uuid4
Beispiel
uuid4() # "342d8b45-1fdd-4416-90bc-9312eb8e2af8"
Definition und Benutzung
Gibt eine zufälligen erzeugten uuid4 String zurück
Syntax
uuid4()
copy_simple_object
Beispiel
test = {'Hallo': 'Hallo'}
copy_simple_object(test) # {'Hallo': 'Hallo'}
Definition und Benutzung
Kopiert ein Object mit python copy.deepcopy
Syntax
copy_simple_object(object_)
datetime
Beispiel
datetime.datetime.now() # datetime.datetime(2024, 2, 3, 16, 4, 22, 979463)
Definition und Benutzung
Grift auf die python datetime Library zu. https://docs.python.org/3/library/datetime.html
Syntax
datetime.*
csv_reader
Beispiel
reader = csv_reader(b"test;test\nhallo;hallo") # <_csv.reader object at 0x7ff44b20ce48>
for row in reader:
row # ['test', 'test'] / ['hallo', 'hallo']
Definition und Benutzung
Liest ein Bytes String in ein csv reader object ein
Syntax
csv_reader(byte_string)
csv_writerows
Beispiel
csv_writerows([['test', 'test'], ['hallo', 'hallo']]) # b'test;test\r\nhallo;hallo\r\n'
Definition und Benutzung
Wandelt eine liste einer liste in ein byte string um
Syntax
csv_writerows(list_of_list)
is_email_disposable
Beispiel
is_email_disposable('test@dispemail.com') # True
Definition und Benutzung
Ist das eine Wegwerf E-Mail. Wenn Sie einige finden die nicht auf der Liste stehen bitte support@kajomi.de anschreiben, damit wir unsere Liste updaten können.
Syntax
is_email_disposable(email_as_string)
is_email_multi_able_used
Beispiel
is_email_multi_able_used('test+already@gmail.com', 1) # True
Definition und Benutzung
Schaut ob diese E-Mail schonmal in unserem Beispiel mit test@gmail.com im Verteiler vorkommt. Wenn ja kommt True zurück.
Syntax
is_email_multi_able_used(email_as_string, listnum)
call_url
Beispiel
call_url('https://presise.api.de', method="GET", headers={'Authorization': 'meinToken'}) # response Object wo auf response.body und response.code zugegriffen werden kann
call_url('https://presise.api.de', params={"hallo": "hallo"}) # https://presise.api.de?hallo=hallo
Definition und Benutzung
Ruft die url mit der method und den header auf. Wenn user und listnum gesetzt ist, dann können in den parametern auf die Templatesprache zugegriffen werden Bsp. %email% des Users. Wenn to_string=True gesetzt wird, wird immer daraus bei ein Query String gemacht, anderen Falls werdn die Parameter in JSON umgewandelt.
Syntax
call_url(url, method='GET', params=None, user=None, listnum=None, headers={}, to_string=True)
parse_mail
Beispiel
parsed_mail = parse_mail(mail) # {"from": {"email": "test@test.de", "firstname": "Absender", "lastname": ""}, "to": [{"email": "t@t.de", "firstname": "Nikolai", "lastname": "Kordulla"}], "subject": "Bin ein Subject", "content": "Hallo", "htcontent": ""}
Definition und Benutzung
Parsed eine E-Mail (Quelltext) in Ihre Bestandteile und gibt sie als Object zurück
Syntax
parse_mail(email_as_source_string)
verify_email
Beispiel
verify_email(mail) # schmeisst eine Exception
Definition und Benutzung
Verifiziert ob diese E-Mail wirklich von diesem Absender kommt. Wirft eine Exception wenn es nicht der Fall ist.
Syntax
verify_email(email_as_source_string)
check_signature
Beispiel
user = check_signature(request)
Definition und Benutzung
Verifiziert den kajomi Signatur String auf einem request, und gibt den user zurück. Wenn man Bsp. ein webhook als replacement für das kajomi Anmeldeformular verwenden will, sollte man immer die Signatur auch überprüfen.
Syntax
check_signature(request)
determine_link
Beispiel
if event.get('category') == 'KJMTrack' and event.get('action') == 'click':
link = determine_link(event.get('label')) # {'id': 1, 'type': 'html' , 'url': 'https://www.kajomi.de'}
Definition und Benutzung
Extrahert Bsp. aus einem event den dazugehörigen link.
Syntax
determine_link(link_id)
add_email_to_blacklist
Beispiel
how_many = add_email_to_blacklist('max@mustermann.de', 0) # 2 - in dem Fall wurden 2 E-Mails aus den Verteilern gelöscht. Da listnum=0 übergeben wurde kommt die E-Mail auf die globale Blackliste
Definition und Benutzung
Fügt die E-Mail der Blacklist hinzu. Schmeisst eine Exception wenn es keine Valide E-Mail ist.
Syntax
add_email_to_blacklist(email, listnum)
set_marker_for_mailing_id
Beispiel
users = set_marker_for_mailing_id('test', 2) # 10 - In dem Fall haben 10 user den Marker test gesetzt bekommen.
Definition und Benutzung
Fügt einen Marker für alle Users eines Mailings hinzu. Die Zeichenanzahl des Markser darf nicht länger als 10 Zeichen sein, sollte das der Fall sein wird eine Exception geworfen.
Syntax
set_marker_for_mailing_id(marker, mailing_id)
send_mailing
Beispiel
mailing_id = send_mailing(listnum=1, template_id=10) # 1 - sendet einen Newsletter mit der template_id=10 an den Verteiler 1
send_mailing('VIRT', 1, virt_template={'content': 'Test', 'subject': 'Test' }) # 1 - Hier wird das "Virtuelle Template" an die Liste 1 geschickt
preparedqueue = [{"target": "selection","type": "AND","selection": "sex == 1","description":"Shoud mark nothing"},
]
send_mailing(listnum=1, preparedqueue=preparedqueue, template_id=%10) # 1 - Hier wird das Template mit der id 10 an den Verteiler 1 aber nur an alle männlichen Mitglieder der Liste geschickt
Definition und Benutzung
Erstellt einen Newsletter und versendet ihn sofort. Wenn die template="VIRT" ist wird das template das virttemplate genommen, andernfalls wird das template mit der templateid geladen. Als Rückgabewert gibt es die mailing_id des Newsletters
Syntax
send_mailing(template_id, listnum, preparedqueue=[], linktracking=True, senderemail=None, virt_template={})
select_mailing
Beispiel
mailing = select_mailings('description == "kajomi"') # {'id': 31699, 'sendername': 'sende', 'senderemail': 'hallo@hallo.de', 'description': 'kajomi', 'subject': 'sub', 'content': 'Asd', 'htcontent': '', 'date': '2024-02-03', 'time': '17:40:34', 'list': 2, 'loadrule': '1==1', 'preparedqueue': [], 'mailType': 'prepared', 'amount': 0, 'action': 'mailing', 'datesent': '2024-02-03T16:40:34Z', 'order': 'desc', 'selectlimit': 1, 'overview': {'selections': [], 'blacklists': [], 'whitelists': [], 'mailings': [], 'followups': [], 'blackselections': [], 'hasTracking': False, 'cnf': 1, 'readonline': True, 'attachments': []}, 'status': 2, 'size': 1, 'linktracking': False, 'ignoreLinks': {'content': [], 'htcontent': []}, 'splitrun': None}
Definition und Benutzung
Selektiert Mailings und gibt eines zurück. Sollten mehrer zurückkommen gibt es eins zurück
Syntax
select_mailing(selectSql)
select_mailings
Beispiel
mailing = select_mailings('description == "kajomi"') # [{'id': 31699, 'sendername': 'sende', 'senderemail': 'hallo@hallo.de', 'description': 'kajomi', 'subject': 'sub', 'content': 'Asd', 'htcontent': '', 'date': '2024-02-03', 'time': '17:40:34', 'list': 2, 'loadrule': '1==1', 'preparedqueue': [], 'mailType': 'prepared', 'amount': 0, 'action': 'mailing', 'datesent': '2024-02-03T16:40:34Z', 'order': 'desc', 'selectlimit': 1, 'overview': {'selections': [], 'blacklists': [], 'whitelists': [], 'mailings': [], 'followups': [], 'blackselections': [], 'hasTracking': False, 'cnf': 1, 'readonline': True, 'attachments': []}, 'status': 2, 'size': 1, 'linktracking': False, 'ignoreLinks': {'content': [], 'htcontent': []}, 'splitrun': None}]
Definition und Benutzung
Selektiert ein Mailing und gibt sie zurück.
Syntax
select_mailings(selectSql)
delete_mailings_by_selection
Beispiel
delete_mailings_by_selection('description == "kajomi" && status <= 0') # 1 - hier wurde damit 1 Mailing gelöscht.
Definition und Benutzung
Selektiert mailings und löscht diese. Der Status sollte immer mit =0 abgefragt werden. Als Rückgabewert wird die Anzahl der Mailings angegeben. Ist das Mailing ein Splitrun Master kann es auch nicht gelöscht werden.
Syntax
delete_mailings_by_selection(selection)
determine_template_of_mailing
Beispiel
mailing = select_mailings('description == "kajomi"')
template = determine_template_of_mailing(mailing) # {'_copy': True, 'linktracking': True, 'htcontent': '', 'subject': 'Betreff', 'sendername': 'test@test.de', 'content': 'Hallo', 'attachments': [], 'ignoreLinks': {'content': [], 'htcontent': []}}
send_transaction_mailing(template_id='VIRT', user=user, description="Last newsletter", virt_template=template)
Definition und Benutzung
Gibt das Template eines Mailing Objects zurück, und kann dann wiederrum als Mailing versendet werden. Erst wird das Template des Mailings kopiert und dann das Linktracking rückgängig gemacht.
Syntax
determine_template_of_mailing(mailing)
send_transaction_mailing
Beispiel
send_transaction_mailing(template_id=10, user=user, description="DOI email")
Definition und Benutzung
Sendet eine Transaktionsmail mit dem templateid an den User. Sollte templateid=VIRT sein wird dann das virttemplate benutzt. Der eventuser wird in addfields['eventuser'] gekapselt. Die addfields können im Template mit folgendem Code zugegriffen werden: [[ kjm.ident(%addfields%).get("eventuser").get("firstname") ]] . Wenn addfields benutzt werden sollen, muss className gesetzt werden. Das ist die Klasse nach der die Transactions Mails zusammengezählt werden.
Syntax
send_transaction_mailing(template_id, user, linktracking=True, description="", virt_template={}, className=None, event_user=None, add_fields={}, attachments=[])
determine_bonuscode_size
Beispiel
determine_bonuscode_size('gutschein2022') # 10 - 10 Gutscheincodes sind vom type gutschein2022 noch nicht verbraucht.
Definition und Benutzung
Gibt die Anzahl der unverbrauchten gutscheincodes eines typs zurück.
Syntax
determine_bonuscode_size(bonuscode_type)
select_user
Beispiel
select_user(['email', 'sex'], 'cnf = 1') # {'email': 'max@mustermann.de', 'sex': 1}
Definition und Benutzung
Gibt einen Empfänger zurück. Sollten mehrere benutzer exisiteren gibt er den ersten zurück.
Syntax
select_user(fields, selection)
select_users
Beispiel
select_users(['email', 'sex'], 'cnf = 1') # [{'email': 'max@mustermann.de', 'sex': 1}, {'email': 'lea@mustermann.de', 'sex': 2}]
Definition und Benutzung
Gibt mehrere Empfänger zurück.
Syntax
select_user(fields, selection, limit=100)
add_user
added = add_user(2, user, response) # {'listnum': 2, 'sex': 0, 'firstname': '', 'lastname': '', 'email': 'max@mustermann.de', 'street': '', 'street_number': '', 'postcode': '', 'city': '', 'birthdate': None, 'country': '', 'area_code': '', 'phone_number': '0', 'cellphone_area_code': '', 'cellphone_number': '0', 'user1': '', 'user2': '', 'user3': '', 'user4': '', 'user5': '', 'user6': '', 'user7': '', 'user8': '', 'user9': '', 'user10': '', 'userx': '', 'cnf': '0', 'dateadd': '2024-02-03T17:16:52Z', 'ipaddr': '', 'refurl': '', 'htmail': '1', 'bounces': 0, 'modified': '2024-02-03T17:16:52Z', 'list': 2, 'id': 20434249, 'deleted': False}
Definition und Benutzung
Fügt einen Empfänger dem Verteiler listnum hinzu. Ist ein response object gegeben, dann fügt er die richtige Response für das Signup Formular hinzu. Als Rückgabewert wird der User zurückgegeben.
Syntax
add_user(listnum, userfields, response=None)
add_or_update_user
added = add_or_update_user(user) # {'listnum': 2, 'sex': 0, 'firstname': '', 'lastname': '', 'email': 'max@mustermann.de', 'street': '', 'street_number': '', 'postcode': '', 'city': '', 'birthdate': None, 'country': '', 'area_code': '', 'phone_number': '0', 'cellphone_area_code': '', 'cellphone_number': '0', 'user1': '', 'user2': '', 'user3': '', 'user4': '', 'user5': '', 'user6': '', 'user7': '', 'user8': '', 'user9': '', 'user10': '', 'userx': '', 'cnf': '0', 'dateadd': '2024-02-03T17:16:52Z', 'ipaddr': '', 'refurl': '', 'htmail': '1', 'bounces': 0, 'modified': '2024-02-03T17:16:52Z', 'list': 2, 'id': 20434249, 'deleted': False}
Definition und Benutzung
Fügt einen Empfänger dem Verteiler hinzu oder update ihn wenn er existiert. Wenn im user das Feld unique_field existiert wird nach diesem abgeglichen. Ist keines gesetzt wird standardmässig die E-Mail genommen. beachten sie das der Verteiler mit dem Key list existieren muss. Als Rückgabewert kommt der vollw User zurück.
Syntax
add_or_update_user(user)
update_user
rowcount = update_user('SET user1 = "hallo"', "listnum in (1,3) && email == '%s' && cnf == 1" % "reward@reward.de") # 2
Definition und Benutzung
Updated auch mehrere User mit einer SET Selektion und einer QUERY Selektion.
Syntax
update_user(update, selection)
update_user_fields
user = update_user_fields({'user1': 'update'}, "listnum in (1,3) && email == '%s' && cnf == 1" % "reward@reward.de") # {'listnum': 2, 'sex': 0, 'firstname': '', 'lastname': '', 'email': 'max@mustermann.de', 'street': '', 'street_number': '', 'postcode': '', 'city': '', 'birthdate': None, 'country': '', 'area_code': '', 'phone_number': '0', 'cellphone_area_code': '', 'cellphone_number': '0', 'user1': 'update', 'user2': '', 'user3': '', 'user4': '', 'user5': '', 'user6': '', 'user7': '', 'user8': '', 'user9': '', 'user10': '', 'userx': '', 'cnf': '0', 'dateadd': '2024-02-03T17:16:52Z', 'ipaddr': '', 'refurl': '', 'htmail': '1', 'bounces': 0, 'modified': '2024-02-03T17:16:52Z', 'list': 2, 'id': 20434249, 'deleted': False}
Definition und Benutzung
Updated den ersten User der auf diese Selektion passt.
Syntax
update_user_fields(userfields, selection)
delete_users
row_count = delete_users("listnum in (1,3) && email == '%s' && cnf == 1" % "reward@reward.de") # 2
Definition und Benutzung
Löscht alle User die auf die Selektion passen. Als welche ip die Löschung ausgelöst hat, wird die ip genommen die übernommen wird. Der Grund ist Deleted by selection
Syntax
delete_users(selection, ip='127.0.0.1')
delete_templist_by_id
delete_templist_by_id('abcdef')
Definition und Benutzung
Löscht eine Templist by id
Syntax
delete_templist_by_id(templist_id)
delete_templists_by_selection
count_templist_deleted = delete_templists_by_selection(selection='description ~ "\{\{ whitelist \}\}%" && created <= DATE_ADD(NOW(), -10day)') # 2
Definition und Benutzung
Löscht alle templists die zu dieser Selektion passen.
Syntax
delete_templists_by_selection(selection)
select_templists
templists = select_templists(selection='description ~ "\{\{ whitelist \}\}%" && created <= DATE_ADD(NOW(), -10day)')
Definition und Benutzung
Selektiert die templists in der selektion und gibt sie als liste zurück
Syntax
select_templists(selection, limit=1000)
create_templist
whitelist = 'max@mustermann.de\nlea@mustermann.de'
create_whitelist = create_templist('whitelist', 'automatisch erstellt nach import:', 'test.csv', whitelist)
Definition und Benutzung
Erstellt eine templist und gibt diese zurück.
Syntax
create_templist(type_, description, filename, file_body):
create_import
data = 'max@mustermann.de\nlea@mustermann.de'
create_import(1, data, filename='create_import-automation.csv')
Definition und Benutzung
Uploaded den Import. Der Status ist dann uploaded, um den Import zu starten dann update_import benutzen.
Syntax
create_import(listnum, data, filename='creat_import-automation.csv')
update_import
download_csv = call_url('https://meine.csv')
user_import = create_import(1, download_csv.get('body'), 'meine.csv')
mapping = ['email', 'sex']
user_import = update_import(1, user_import.get('id'), mapping, 'sync', 'start')
Definition und Benutzung
Updated den hochgeladenen import, und starte ihn oder bricht ihn ab.
Syntax
update_import(listnum, import_id, mapping, mode='insert_update', action='start'):
replace_html_tag
replace_html_tag("<hr/>", "hr", "<br/>") # <br/>
replace_html_tag("<p>Hallo</p>", "p", "<br/><br/><children/>") # <br/></br>Hallo
replace_html_tag("<strong>Test</strong>", "strong", "<table><tr><td data-content='children'></td></tr></table>") # <table><tr><td>Test</td></tr></table>
Definition und Benutzung
Ersetz ein html tag durch ein anderes. Kann auch wie im zweiten Beispiel Inhalt mit übernehmen. Muss nicht valides html sein durch das es ersetzt wird man kann also auch Bsp. erst <ul> durch <table data-content='children'></table> ersetzen und dann die <li> durch <tr><td data-content='children'></td></tr> ersetzen. Will man ein Tag auspacken wie bei <p>Test</p> zu <br/>Test kann das mittels `
Syntax
replace_html_tag(html_string, tagAsString, replacement):
creole2html
creole2html("** creole **") # <strong>creole</strong>
Definition und Benutzung
Konvertiert die Wiki-Syntax Creole in das HTML-Format.
Syntax
creole2html(creole_text)
mobilede2creole
creole2html(mobilede2creole()"* test\\")) # <ul><li>test</li></ul>
Definition und Benutzung
Die Funktion wandelt das Creole-Format von mobile.de in ein reguläres Creole-Format um, das dann beispielsweise in HTML konvertiert werden kann.
Syntax
creole2html(creole_text)
iso8601todatetime
iso8601_to_datetime('2024-06-27T14:10:00Z') # 2024-06-27 16:10:00+02:00
Definition und Benutzung
Wandelt ein ISO8601 in ein datetime object um
Syntax
iso8601_to_datetime(ISO_8601_as_string)
determine_rss_feed_as_json
resp = call_url('https://www.kajomi.de/blog/feed')
feed = determine_rss_feed_as_json(resp, ['rss', 'channel', 'item'], 3) # [OrderedDict([('title', OrderedDict([('$', 'Jetzt auch Microsoft! Authentifizierungsänderung und neue Regeln beim E-Mail-Versand')])), ('link', OrderedDict([('$', 'https://www.kajomi.de/microsoft-mit-neuer-email-authentifizierung/')])), ('comments', OrderedDict([('$', 'https://www.kajomi.de/microsoft-mit-neuer-email-authentifizierung/#respond')])), ('{http://purl.org/dc/elements/1.1/}creator', OrderedDict([('$', 'Sebastian Schmitt')])), ('pubDate', OrderedDict([('$', 'Fri, 07 Jun 2024 08:03:17 +0000')])), ('category', OrderedDict([('$', 'Allgemein')])), ('guid', OrderedDict([('@isPermaLink', False), ('$', 'https://www.kajomi.de/?p=2002')])), ('description', OrderedDict([('$', '<p><img width=\"1920\" height=\"1275\" src=\"https://www.kajomi.de/wp-content/uploads/matthew-manuel-BhLSBX-0rnM-unsplash.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Microsoft zieht bei der E-Mail-Authentifizierung nach\" style=\"max-width: 100%; height: auto; margin-bottom: 10px;\" decoding=\"async\" fetchpriority=\"high\" srcset=\"https://www.kajomi.de/wp-content/uploads/matthew-manuel-BhLSBX-0rnM-unsplash.jpg 1920w, https://www.kajomi.de/wp-content/uploads/matthew-manuel-BhLSBX-0rnM-unsplash-300x199.jpg 300w, https://www.kajomi.de/wp-content/uploads/matthew-manuel-BhLSBX-0rnM-unsplash-1024x680.jpg 1024w, https://www.kajomi.de/wp-content/uploads/matthew-manuel-BhLSBX-0rnM-unsplash-768x510.jpg 768w, https://www.kajomi.de/wp-content/uploads/matthew-manuel-BhLSBX-0rnM-unsplash-1536x1020.jpg 1536w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" /></p>2024 ist das Jahr der E-Mail-Authentifizierung. Zu Beginn des Jahres haben Gmail und Yahoo neue Richtlinien für den E-Mail-Versand eingeführt. Nun folgt Microsoft diesem Beispiel und hat seine eigenen Regelungen …')])), ('{http://purl.org/rss/1.0/modules/content/}encoded', OrderedDict([('$', '<p> ... html content')])
Definition und Benutzung
Wandelt ein RSS Feed in ein JSON Object um.
Syntax
determine_rss_feed_as_json(response, path_to_items, limit)
pub_date_to_datetime
pub_date_to_datetime('Thu, 20 Oct 2022 04:00:00 GMT', 'Europe/Berlin') # 2022-10-20 06:00:00+02:00
Definition und Benutzung
Convertiert ein Pubdate eines RSS Feed zu datetime
Syntax
pub_date_to_datetime(pubdate_as_string, timezone_optional)
upper
upper("Pö") # PÖ
Definition und Benutzung
Gibt den selben String in Großbuchstaben zurück
Syntax
upper(string)
lower
lower("Pö") # pö
Definition und Benutzung
Gibt den selben String in Kleinbuchstaben zurück
Syntax
lower(string)
html_to_json
html_to_json("<html><body><div></div></body></html>") # OrderedDict([('html', OrderedDict([('body', OrderedDict([('div', OrderedDict([('@id', 'test')]))]))]))])
Definition und Benutzung
Wandelt eine HTML Page in JSON um
Syntax
html_to_json(html)
jsonpath_find
html_to_json("<html><body><div></div></body></html>")
jsonpath_find(json_data, "$..div") # [DatumInContext(value=OrderedDict([('@id', 'test')]), path=Fields('div'), context=DatumInContext(value=OrderedDict([('div', OrderedDict([('@id', 'test')]))]), path=Fields('body'), context=DatumInContext(value=OrderedDict([('body', OrderedDict([('div', OrderedDict([('@id', 'test')]))]))]), path=Fields('html'), context=DatumInContext(value=OrderedDict([('html', OrderedDict([('body', OrderedDict([('div', OrderedDict([('@id', 'test')]))]))]))]), path=Root(), context=None))))]
Definition und Benutzung
Query Languaege for json to select specific nodes. For more help google jsonpath
Syntax
jsonpath_find(json_data, expression)
join
Beispiel
join(['Bob', 'Alice', 'Max'], ", ") # Bob, Alice, Max
join(['Bob', 'Alice', 'Max'], ", ", " & ") # Bob, Alice & Max
Definition und Benutzung
Wandelt eine Liste von Strings mit einem Seperator und einem optionalen Letzen Seperator in ein String um.
Syntax
join(list_, seperator, last_seperator)
determine_holiday
Beispiel
result = determine_holiday(date(2024, 3, 29), country='DE') # {"date": "2024-03-29", "name": "Karfreitag"}
result = determine_holiday(date(2024, 4, 2), country='DE') # None
Definition und Benutzung
Die Funktion determine_holiday prüft, ob ein bestimmtes Datum ein Feiertag in einem angegebenen Land ist. Sie verwendet die holidays-Bibliothek, um Feiertagsdaten dynamisch zu generieren. Ohne ein angegebenes Datum wird das aktuelle Datum verwendet. Wenn kein Bundesland/State (state) angegeben ist, werden nur Bundesweite Feiertage genommen. Ist kein Feiertag vorhanden, wird None zurückgegeben.
Syntax
get_holiday(check_date=None, country='DE', state=None)
determine_workday
Beispiel
result = determine_workday(date(2024, 4, 1), country='DE') # False
result = determine_workday(date(2024, 4, 2), country='DE') # True
Definition und Benutzung
Die Funktion determine_workday prüft, ob ein bestimmtes Datum ein Arbeitstag in einem angegebenen Land ist. Sie verwendet die holidays-Bibliothek, um Feiertagsdaten dynamisch zu generieren. Ohne ein angegebenes Datum wird das aktuelle Datum verwendet. Wenn kein Bundesland/State (state) angegeben ist, werden nur Bundesweite Feiertage zur Berechung des Arbeitstages genommen.
Syntax
determine_workday(check_date=None, country='DE', state=None)
wrap_text
Beispiel
text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = wrap_text(text, 5)
# ABCDE
# FGHIJ
# KLMNO
# PQRST
# UVWXY
# Z
result = wrap_text(text, 5, continuation_prefix=" ")
# ABCDE
# FGHIJ
# KLMNO
# PQRST
# UVWXY
# Z
Definition und Benutzung
Die Funktion wrap_text teilt einen beliebigen Text in mehrere Zeilen mit einer maximalen Zeichenlänge. Sie eignet sich für allgemeine Textverarbeitung sowie für Formate mit festen Zeilenlängen, z. B. vCard, E-Mail-Header oder andere RFC-konforme Formate.
Optional kann ein Präfix für alle Folgezeilen definiert werden. Dies ist insbesondere für Formate relevant, bei denen Zeilenumbrüche durch ein führendes Leerzeichen oder ein spezielles Zeichen gekennzeichnet werden müssen.
Ist der übergebene Text leer oder None, gibt die Funktion einen leeren String zurück.
Syntax
wrap_text(text, line_length, continuation_prefix="")
encode_string
Beispiel
# String-Eingabe
result = encode_string("GÜMA Mannheim")
# b'G\xc3\x9cMA Mannheim'
# Nicht-String-Eingabe
result = encode_string(12345)
# b'12345'
Definition und Benutzung
Die Funktion encode_string konvertiert einen übergebenen Wert in einen String und kodiert diesen anschließend mit dem angegebenen Zeichensatz (Standard: UTF-8) in Bytes.
Unabhängig vom ursprünglichen Datentyp wird der Eingabewert zunächst mittels str() in eine String-Repräsentation umgewandelt. Anschließend erfolgt die Byte-Kodierung. Die Funktion eignet sich insbesondere für Fälle, in denen sichergestellt werden soll, dass Daten in konsistenter Byte-Form weiterverarbeitet oder gespeichert werden.
Syntax
encode_string(string_, encoding="utf-8")
Parameter
string_ (
any)
Der zu kodierende Wert. Wird intern immer in einen String umgewandelt.encoding (
str, optional)
Zeichensatz für die Kodierung des Strings in Bytes. Standard ist"utf-8".
Rückgabewert
- bytes
Der kodierte Byte-String des übergebenen Wertes.
re_compile
Beispiel
# Einfaches Pattern kompilieren
pattern = re_compile(r"^[A-Z]{2}\d{4}$")
result = to_bool(pattern.match("AB1234")) # True
result = to_bool(pattern.match("ab1234")) # False
# Mit Flags (z. B. case-insensitive)
pattern = re_compile(r"^hello$", flags=re.IGNORECASE)
result = to_bool(re_pattern_match("HeLLo")) # True
# Mit Flags (multiline matching)
pattern = re_compile(r"^world$", flags=re.MULTILINE)
result = to_bool(re_pattern_search("hello\nworld")) # True
# Mit Flags (dot matches newline)
pattern = re_compile(r"a.*b", flags=re.DOTALL)
result = to_bool(re_pattern_search("a\n\nb")) # True
# Mit Flags (verbose regex)
pattern = re_compile(r"""
\d{4} # year
-
\d{2} # month
-
\d{2} # day
""", flags=re.VERBOSE)
result = to_bool(pattern.match("2024-04-01")) # True
Definition und Benutzung
Die Funktion re_compile ist ein direkter Ersatz für re.compile und dient zum Kompilieren eines regulären Ausdrucks in ein Pattern-Objekt. Das zurückgegebene Pattern-Objekt kann anschließend für Operationen wie match, search, findall, sub oder split verwendet werden.
Die Funktion verhält sich wie re.compile: Sie nimmt ein Pattern (String oder bereits kompiliertes Pattern) entgegen und unterstützt optionale Flags zur Steuerung des Regex-Verhaltens (z. B. IGNORECASE, MULTILINE, DOTALL).
Syntax
re_compile(pattern, flags=0)
Parameter
pattern (
str | Pattern)
Der reguläre Ausdruck als String oder ein bereits kompiliertes Pattern.flags (
int, optional)
Flags zur Steuerung des Regex-Verhaltens. Standard ist0.
Rückgabewert
- Pattern
Ein kompiliertes Regex-Pattern-Objekt, das wie das Ergebnis vonre.compileverwendet werden kann.
find_nodes_with_attribute
Beispiel
# Suche nach allen Nodes mit class="button"
nodes = find_nodes_with_attribute(data, "@class", "button")
# Case-insensitive Suche mit String
nodes = find_nodes_with_attribute(data, "@class", "Button", case_insensitive=True)
# Suche mit Regex
pattern = re_compile(r"^btn-.*")
nodes = find_nodes_with_attribute(data, "@class", pattern)
Definition und Benutzung
Die Funktion findnodeswith_attribute durchsucht rekursiv eine JSON- oder DOM-ähnliche Datenstruktur (dict / list) nach Knoten, die ein bestimmtes Attribut mit einem passenden Wert besitzen. Sie eignet sich besonders für HTML- oder DOM-Strukturen, die als JSON repräsentiert sind, wobei Attribute typischerweise mit einem @-Präfix gespeichert werden (z. B. @class, @id, @data-testid).
Der Attributwert kann entweder als exakter String oder als regulärer Ausdruck angegeben werden. Bei Stringwerten kann optional eine case-insensitive Suche aktiviert werden.
Alle passenden Dictionary-Knoten werden gesammelt und als Liste zurückgegeben.
Syntax
find_nodes_with_attribute(
node,
attr_name,
attr_value,
case_insensitive=False,
)
re_pattern_search
Beispiel
pattern = re_compile(r"hello")
result = re_pattern_search(pattern, "hello world") # <re.Match object>
pattern = re_compile(r"world")
result = re_pattern_search(pattern, "hello world") # <re.Match object>
group(result, 0) # world
pattern = re_compile(r"test")
result = re_pattern_search(pattern, "hello world") # None
# Suche ab einer bestimmten Position
pattern = re_compile(r"world")
result = re_pattern_search(pattern, "hello world world", pos=8) # Match bei zweitem "world"
Definition und Benutzung
Die Funktion repatternsearch führt eine Regex-Suche mit einem bereits kompilierten Pattern auf einem String aus. Intern wird dafür die Methode pattern.search() verwendet.
Die Funktion erwartet ein zuvor mit re_compile (oder re.compile) erzeugtes Pattern sowie einen String, in dem gesucht werden soll. Wird ein Treffer gefunden, gibt die Funktion ein Match-Objekt zurück. Wird kein Treffer gefunden, wird None zurückgegeben.
Diese Funktion eignet sich besonders dann, wenn reguläre Ausdrücke bereits vorab kompiliert wurden und mehrfach auf unterschiedliche Strings angewendet werden sollen.
Syntax
re_pattern_search(pattern, string_, pos=0, endpos=None)
re_search
Beispiel
# Einfache Regex-Suche
result = re_search(r"world", "hello world") # <re.Match object>
# Mit Flags (case-insensitive)
result = re_search(r"hello", "HELLO WORLD", flags=re.IGNORECASE) # <re.Match object>
# Kein Treffer
result = re_search(r"test", "hello world") # None
Definition und Benutzung
Die Funktion re_search führt eine Regex-Suche auf einem String aus und ist ein direkter Wrapper um re.search() aus dem Python-Standardmodul re.
Das Pattern wird als String übergeben und während der Suche intern kompiliert. Wird ein Treffer gefunden, gibt die Funktion ein Match-Objekt zurück. Wird kein Treffer gefunden, wird None zurückgegeben.
Optional können Regex-Flags angegeben werden, um das Verhalten der Suche zu beeinflussen, z. B. re.IGNORECASE, re.MULTILINE oder re.DOTALL.
Syntax
re_search(pattern, string, flags=0)
group
Beispiel
# Beispiel mit re_search
match = re_search(r"world", "hello world")
result = group(match, 0) # 'world'
# Beispiel mit Gruppen im Regex
match = re_search(r"(hello) (world)", "hello world")
first = group(match, 1) # 'hello'
second = group(match, 2) # 'world'
Definition und Benutzung
Die Funktion group ist ein Wrapper um die Methode Match.group() aus dem Python Regex-Modul re.
Sie wird verwendet, um Teile eines Regex-Treffers aus einem Match-Objekt zu extrahieren.
Das übergebene Objekt muss ein Match-Objekt sein, das z. B. durch re_search() oder re_pattern_search() erzeugt wurde.
Mit dem Parameter 0 wird der komplette Match zurückgegeben. Mit höheren Indizes können einzelne Gruppen des Regex-Ausdrucks abgefragt werden.
Syntax
group(match_object, *args, **kwargs)