File size: 1,764 Bytes
dcbfe74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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