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"""
"""
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)