trapezius60's picture
Update app.py
03b1bda verified
#"https://docs.google.com/forms/u/0/d/e/1lCvVNDdgnYaIh8TVHPW91S_LFhy1ep97vx1-cHqrruI/formResponse";
#data.append("entry.2013313277", qrText);
#data.append("entry.286817265", lat);
#data.append("entry.518488535", lng);
import gradio as gr
import cv2
import numpy as np
from PIL import Image
# ========================
# Scan QR
# ========================
def scan_qr(image):
if image is None:
return ""
img = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
detector = cv2.QRCodeDetector()
data, bbox, _ = detector.detectAndDecode(img)
return data if data else "❌ No QR code detected"
# ========================
# Gradio UI
# ========================
with gr.Blocks() as demo:
gr.Markdown("## 📸 Scan QR → Auto GPS → Google Form Sender")
qr_image = gr.Image(type="pil", label="Upload QR Code")
qr_output = gr.Textbox(label="QR Code Text", elem_id="qr_output_box")
scan_btn = gr.Button("Scan QR Code")
scan_btn.click(scan_qr, inputs=qr_image, outputs=qr_output)
# ================================
# HTML + JS Button
# ================================
gr.HTML("""
<button id="sendBtn" style="
margin-top:20px;
background:#4CAF50;
padding:12px 18px;
color:white;
border:none;
border-radius:8px;
font-size:16px;
cursor:pointer;
">Send QR + GPS to Google Form</button>
<script>
document.getElementById("sendBtn").onclick = function () {
// ดึงค่า QR จาก elem_id=qr_output_box
const qrText = document.querySelector('#qr_output_box textarea').value;
if (!qrText || qrText.startsWith("❌")) {
alert("❗ กรุณาสแกน QR ก่อน");
return;
}
navigator.geolocation.getCurrentPosition(function(pos){
const lat = pos.coords.latitude;
const lng = pos.coords.longitude;
// >>> เปลี่ยนเป็นของคุณ <<<
const formUrl = "https://docs.google.com/forms/u/0/d/e/1lCvVNDdgnYaIh8TVHPW91S_LFhy1ep97vx1-cHqrruI/formResponse";
const data = new FormData();
data.append("entry.2013313277", qrText);
data.append("entry.286817265", lat);
data.append("entry.518488535", lng);
fetch(formUrl, { method: "POST", body: data })
.then(() => alert("✅ ส่งสำเร็จ"))
.catch(err => alert("❌ ERROR: " + err));
});
}
</script>
""")
demo.launch()