Spaces:
Sleeping
Sleeping
| #"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() | |