import qrcode import os from io import BytesIO from flask import Flask, send_file, request, render_template_string, render_template from urllib.parse import quote app = Flask(__name__) def load(file): path = os.path.dirname(os.path.realpath(__file__)) with open(f"{path}/webpage/{file}") as f: return f.read() @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': qrtype = request.form.get('type') elif request.method == 'GET': qrtype = request.args.get('type') else: qrtype = "LINK" if qrtype == "LINK": form = f"""

Enter Url:



""" elif qrtype == "MAIL": form = f"""

Enter Email:



""" elif qrtype == "WIFI": form = f"""

Enter Wifi Name:

Enter Wifi Password (if aplicable):



""" elif qrtype == "VCARD": form = f"""

Configure

""" else: form = f"""

Enter Telephone:



""" if request.method == 'POST': qrtype = request.form.get('type') elif request.method == 'GET': qrtype = request.args.get('type') codeimg = "

fill out info to generate qr code

" if qrtype and request.args.get('link') != None: print(qrtype) try: if qrtype == "LINK": codeimg = f'' elif qrtype == "EMAIL": codeimg = f'' elif qrtype == "TEL": codeimg = f'' elif qrtype == "WIFI": codeimg = f'' elif qrtype == "VCARD": codeimg = "" if request.args.get('FNAME') and request.args.get('LNAME'): codeimg += f"FN:{request.args.get('FNAME')} {request.args.get('LNAME')} \nN;CHARSET=UTF-8:{request.args.get('LNAME')};{request.args.get('FNAME')};;;\n" if request.args.get('Gender'): codeimg += f"GENDER:{request.args.get('Gender')}\n" if request.args.get('MEMAIL'): codeimg += f"EMAIL:{request.args.get('MEMAIL')}\n" if request.args.get('CELLPHONE'): codeimg += f"TEL;TYPE=CELL:{request.args.get('CELLPHONE')}\n" if request.args.get('HOMEPHONE'): codeimg += f"TEL;TYPE=HOME,VOICE:{request.args.get('HOMEPHONE')}\n" codeimg = f""" BEGIN:VCARD VERSION:3.0 {codeimg}END:VCARD """ encoded_vcard = quote(codeimg) print(codeimg) codeimg = f'' except: print("nocontent") codeimg = "

fill out info to generate qr code

" else: codeimg = "

fill out info to generate qr code

" print(codeimg) return render_template("home.html", form=form, codeimg=codeimg) @app.route('/Vcard', methods=['GET', 'POST']) def vcard(): return render_template("Vcardconf.html") @app.route('/qrcode', methods=['GET', 'POST']) def generate_qrcode(): if request.method == 'POST': link = request.form.get('link') else: link = request.args.get('link') if not link: return "No link provided", 400 qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4, ) qr.add_data(link) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") buffered = BytesIO() img.save(buffered, format="PNG") buffered.seek(0) return send_file(buffered, mimetype='image/png') if __name__ == "__main__": app.run(host='0.0.0.0', port=8060, debug=True)