32 lines
645 B
Python
32 lines
645 B
Python
import qrcode
|
|
import urllib.parse
|
|
from io import BytesIO
|
|
|
|
|
|
def create_login_url(base_uri: str, room_id: int, pin: int | None) -> str:
|
|
parsed = urllib.parse.urlparse(base_uri)
|
|
|
|
params = {
|
|
"room": room_id,
|
|
}
|
|
|
|
if pin is not None:
|
|
params["pin"] = pin
|
|
|
|
parsed = parsed._replace(path="join", query=urllib.parse.urlencode(params))
|
|
|
|
return urllib.parse.urlunparse(parsed)
|
|
|
|
|
|
def generate_qr(base_uri: str, room_id: int, pin: int | None) -> BytesIO:
|
|
url = create_login_url(base_uri, room_id, pin)
|
|
|
|
qr = qrcode.make(url)
|
|
|
|
out = BytesIO()
|
|
|
|
qr.save(out, format="jpeg")
|
|
|
|
out.seek(0)
|
|
|
|
return out
|