|
import gradio as gr |
|
import qrcode |
|
import flask |
|
from flask import Flask, request |
|
|
|
|
|
app = Flask(__name__) |
|
|
|
|
|
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 |
|
|
|
|
|
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}" |
|
|
|
|
|
def generate_qr(user_id, whatsapp_id): |
|
base_url = "http://localhost:5000/link" |
|
qr_data = f"{base_url}?user_id={user_id}&whatsapp_id={whatsapp_id}" |
|
|
|
|
|
qr = qrcode.make(qr_data) |
|
qr.save("qr_code.png") |
|
|
|
return "qr_code.png" |
|
|
|
|
|
def gradio_interface(user_id, whatsapp_id): |
|
qr_code_path = generate_qr(user_id, whatsapp_id) |
|
return qr_code_path |
|
|
|
|
|
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) |
|
|
|
|
|
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() |
|
|
|
launch_gradio() |
|
|