KHUjongseo's picture
Update app.py
7cdbf8b verified
raw
history blame
2.34 kB
import gradio as gr
import requests
# βœ… λ„ˆμ˜ Apps Script μ›Ήμ•± URL
WEBHOOK_URL = "https://script.google.com/macros/s/AKfycby_67Zh_ELOMcD9mLxf-nZYi_nNdsGb_C7E66uYdK924JKx2eps6nn8TizLYdtzqQvCAw/exec"
# βœ… μ„€λ¬Έ 응닡 처리 ν•¨μˆ˜
def submit_response(choice, feedback):
if choice is None:
return "❗ 'Q1' μ§ˆλ¬Έμ— μ‘λ‹΅ν•΄μ£Όμ„Έμš”."
payload = {
"choice": choice,
"feedback": feedback
}
try:
response = requests.post(WEBHOOK_URL, json=payload)
if response.status_code == 200:
completion_code = "XAI2025" # βœ… κ³ μ •λœ μ„€λ¬Έ μ™„λ£Œ μ½”λ“œ
return (
f"βœ… μ„€λ¬Έ μ™„λ£Œ!\n"
f"선택: {choice}\n"
f"의견: {feedback if feedback else '(의견 μ—†μŒ)'}\n\n"
f"🧾 MTurk에 λ‹€μŒ μ½”λ“œλ₯Ό μ œμΆœν•˜μ„Έμš”: **{completion_code}**"
)
else:
return f"⚠️ 전솑 μ‹€νŒ¨! 응닡 μ½”λ“œ: {response.status_code}\nλ‚΄μš©: {response.text}"
except Exception as e:
return f"❌ 였λ₯˜ λ°œμƒ: {e}"
# βœ… Gradio UI ꡬ성
with gr.Blocks() as demo:
gr.Markdown("## πŸŽ₯ Explainable Action Recognition: μ‚¬μš©μž 평가")
gr.Markdown("λΉ„λ””μ˜€μ™€ 두 개의 μ„€λͺ…을 ν™•μΈν•˜κ³ , μ–΄λ–€ μ„€λͺ…이 더 직관적인지 선택해 μ£Όμ„Έμš”.")
with gr.Row():
gr.Video("assets/640320_video.mp4", label="🎬 μž…λ ₯ λΉ„λ””μ˜€")
with gr.Row():
with gr.Column():
gr.Image("assets/ex2.png", label="πŸ…°οΈ μ„€λͺ… A: UCF101 속성 기반")
with gr.Column():
gr.Image("assets/ex1.png", label="πŸ…±οΈ μ„€λͺ… B: Pose κ°œλ… 기반")
gr.Markdown("### ❓ Q1. μ–΄λ–€ μ„€λͺ…이 더 μ§κ΄€μ μ΄μ—ˆλ‚˜μš”?")
choice = gr.Radio(
["μ„€λͺ… A (UCF 속성 기반)", "μ„€λͺ… B (Pose κ°œλ… 기반)"],
label="λ‹Ήμ‹ μ˜ 선택"
)
gr.Markdown("### πŸ’¬ Q2. μΆ”κ°€ 의견이 μžˆλ‹€λ©΄ 자유둭게 μž‘μ„±ν•΄ μ£Όμ„Έμš”.")
feedback = gr.Textbox(
placeholder="예: μ„€λͺ… AλŠ” 더 κ΅¬μ²΄μ μ΄μ—ˆμ–΄μš”",
lines=2,
label="의견 (선택사항)"
)
submit_btn = gr.Button("제좜")
output = gr.Textbox(label="κ²°κ³Ό 확인")
submit_btn.click(fn=submit_response, inputs=[choice, feedback], outputs=output)
# βœ… μ•± μ‹€ν–‰
demo.launch()