Skip to content

Instantly share code, notes, and snippets.

@robbyHuelsi
Created March 29, 2024 08:14
Show Gist options
  • Save robbyHuelsi/841d50d9a94fa6d6ad7b6e5d4a031a8c to your computer and use it in GitHub Desktop.
Save robbyHuelsi/841d50d9a94fa6d6ad7b6e5d4a031a8c to your computer and use it in GitHub Desktop.
from datetime import datetime
from pathlib import Path
import qrcode
from icalendar import Calendar, Event
from qrcode.image.svg import SvgPathImage
# Create event
event = Event()
event.add("summary", "FÜR Demokratie wählen")
event.add("dtstart", datetime(2024, 6, 9, 8))
event.add("dtend", datetime(2024, 6, 9, 18))
# event.add("location", "Im Ländle und Europa")
event.add("description", "Gemeinderats-, Regional- und Europawahl")
# event.add("url", "https://www.stuttgart.de/service/wahlen/wahlen-am-9.-juni-2024/")
# Create calendar and add event
cal = Calendar()
cal.add_component(event)
# Convert the iCal data to string
ical_data = cal.to_ical()
print(ical_data.decode())
# Generate a QR code from the iCal data
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=0,
)
qr.add_data(ical_data)
qr.make(fit=True)
# PNG: white on transparent
img = qr.make_image(
fill_color="white",
back_color="transparent",
).save("qr_white_transparent.png")
# SVG: white on transparent
img = qr.make_image(image_factory=SvgPathImage)
img = img.to_string().decode(encoding="ascii").replace('fill="#000000"', 'fill="#FFF"')
Path("qr_white_transparent.svg").write_text(img, encoding="ascii")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment