qr_test / app.py
qqwjq1981's picture
Upload 2 files
dcbfe74 verified
import gradio as gr
import qrcode
import flask
from flask import Flask, request
# Flask server for handling QR code scans
app = Flask(__name__)
# Store user IPs and WhatsApp IDs (simulate a DB)
user_data = {}
@app.route("/link", methods=["GET"])
def link_user():
user_id = request.args.get("user_id")
whatsapp_id = request.args.get("whatsapp_id")
user_ip = request.remote_addr
# Save user data
user_data[user_id] = {"whatsapp_id": whatsapp_id, "ip": user_ip}
return f"User {user_id} linked with WhatsApp ID: {whatsapp_id} from IP: {user_ip}"
# Function to generate QR code
def generate_qr(user_id, whatsapp_id):
base_url = "http://localhost:5000/link" # Replace with external Flask URL if deploying
qr_data = f"{base_url}?user_id={user_id}&whatsapp_id={whatsapp_id}"
# Generate QR code
qr = qrcode.make(qr_data)
qr.save("qr_code.png")
return "qr_code.png"
# Gradio interface for generating user-specific QR codes
def gradio_interface(user_id, whatsapp_id):
qr_code_path = generate_qr(user_id, whatsapp_id)
return qr_code_path
# Gradio app
def launch_gradio():
demo = gr.Interface(
fn=gradio_interface,
inputs=[
gr.Textbox(label="User ID"),
gr.Textbox(label="WhatsApp ID"),
],
outputs=gr.Image(type="filepath", label="Generated QR Code"),
title="Generate User-Specific QR Code",
)
demo.launch(share=True)
# Run Flask server in the background
from threading import Thread
def run_flask():
app.run(host="0.0.0.0", port=5000)
if __name__ == "__main__":
flask_thread = Thread(target=run_flask, daemon=True)
flask_thread.start() # Start Flask server
launch_gradio() # Start Gradio app