Update app.py
Browse files
app.py
CHANGED
|
@@ -161,10 +161,20 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 161 |
)
|
| 162 |
ask_btn.click(ask_about_transcript, [transcript_box, user_q], [ai_reply])
|
| 163 |
|
| 164 |
-
# ✅
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 169 |
|
| 170 |
demo.launch()
|
|
|
|
| 161 |
)
|
| 162 |
ask_btn.click(ask_about_transcript, [transcript_box, user_q], [ai_reply])
|
| 163 |
|
| 164 |
+
# ✅ 正確的 JS copy 寫法 (gradio 5.x)
|
| 165 |
+
copy_js = """
|
| 166 |
+
async (text) => {
|
| 167 |
+
try {
|
| 168 |
+
await navigator.clipboard.writeText(text);
|
| 169 |
+
alert("✅ 已複製到剪貼簿!");
|
| 170 |
+
} catch (e) {
|
| 171 |
+
alert("❌ 複製失敗:" + e);
|
| 172 |
+
}
|
| 173 |
+
}
|
| 174 |
+
"""
|
| 175 |
+
|
| 176 |
+
copy_transcript.click(fn=None, inputs=transcript_box, outputs=None, js=copy_js)
|
| 177 |
+
copy_summary.click(fn=None, inputs=summary_box, outputs=None, js=copy_js)
|
| 178 |
+
copy_reply.click(fn=None, inputs=ai_reply, outputs=None, js=copy_js)
|
| 179 |
|
| 180 |
demo.launch()
|