Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -790,95 +790,32 @@ def create_demo():
|
|
| 790 |
preview_path_state = gr.State("") # current preview file
|
| 791 |
prev_preview_state = gr.State("") # remembers the last file we showed
|
| 792 |
|
| 793 |
-
|
| 794 |
-
|
| 795 |
-
|
| 796 |
-
|
| 797 |
-
|
| 798 |
-
|
| 799 |
-
|
| 800 |
-
|
| 801 |
-
|
| 802 |
-
""
|
| 803 |
-
# ------------------------------------------------------------------
|
| 804 |
-
# 1️⃣ No‑op when the preview hasn’t changed
|
| 805 |
-
# ------------------------------------------------------------------
|
| 806 |
-
if path == last_path:
|
| 807 |
-
# keep the current UI state unchanged
|
| 808 |
-
return gr.update(), gr.update(), ""
|
| 809 |
-
|
| 810 |
-
# ------------------------------------------------------------------
|
| 811 |
-
# 2️⃣ Nothing to show
|
| 812 |
-
# ------------------------------------------------------------------
|
| 813 |
-
if not path:
|
| 814 |
-
return (
|
| 815 |
-
gr.update(value=None, visible=False),
|
| 816 |
-
gr.update(value=None, visible=False),
|
| 817 |
-
"",
|
| 818 |
-
)
|
| 819 |
-
|
| 820 |
-
try:
|
| 821 |
-
# ------------------------------------------------------------------
|
| 822 |
-
# 3️⃣ Image preview
|
| 823 |
-
# ------------------------------------------------------------------
|
| 824 |
-
if any(path.lower().endswith(ext) for ext in IMAGE_EXTS):
|
| 825 |
-
return (
|
| 826 |
-
gr.update(value=path, visible=True),
|
| 827 |
-
gr.update(value=None, visible=False),
|
| 828 |
-
"Preview updated.",
|
| 829 |
-
)
|
| 830 |
-
|
| 831 |
-
# ------------------------------------------------------------------
|
| 832 |
-
# 4️⃣ Video preview
|
| 833 |
-
# ------------------------------------------------------------------
|
| 834 |
-
if any(path.lower().endswith(ext) for ext in VIDEO_EXTS):
|
| 835 |
-
return (
|
| 836 |
-
gr.update(value=None, visible=False),
|
| 837 |
-
gr.update(value=path, visible=True),
|
| 838 |
-
"Preview updated.",
|
| 839 |
-
)
|
| 840 |
-
|
| 841 |
-
# ------------------------------------------------------------------
|
| 842 |
-
# 5️⃣ Fallback – try to open as an image (covers odd extensions)
|
| 843 |
-
# ------------------------------------------------------------------
|
| 844 |
-
img = Image.open(path)
|
| 845 |
-
img.verify() # raises if not a valid image
|
| 846 |
-
return (
|
| 847 |
-
gr.update(value=path, visible=True),
|
| 848 |
-
gr.update(value=None, visible=False),
|
| 849 |
-
"Preview updated.",
|
| 850 |
-
)
|
| 851 |
-
except Exception as e:
|
| 852 |
-
# Log the problem – the UI will simply hide both previews
|
| 853 |
-
print(f"Failed to update preview for {path!r}: {e}")
|
| 854 |
-
return (
|
| 855 |
-
gr.update(value=None, visible=False),
|
| 856 |
-
gr.update(value=None, visible=False),
|
| 857 |
-
"",
|
| 858 |
-
)
|
| 859 |
-
|
| 860 |
-
# ----------------------------------------------------------------------
|
| 861 |
-
# Bind the function – we feed both the current preview path and the
|
| 862 |
-
# previously‑shown path, then store the new path back into both states.
|
| 863 |
-
# ----------------------------------------------------------------------
|
| 864 |
-
preview_path_state.change(
|
| 865 |
-
fn=apply_preview,
|
| 866 |
-
inputs=[preview_path_state, prev_preview_state],
|
| 867 |
-
outputs=[preview_image, preview_video, preview_status],
|
| 868 |
-
)
|
| 869 |
|
| 870 |
-
|
| 871 |
-
|
| 872 |
-
def _store_new_path(new_path: str):
|
| 873 |
-
return new_path, new_path # (prev_state, preview_state)
|
| 874 |
|
| 875 |
-
|
| 876 |
-
|
| 877 |
-
|
| 878 |
-
outputs=[prev_preview_state, preview_path_state],
|
| 879 |
-
queue=False,
|
| 880 |
-
)
|
| 881 |
|
| 882 |
-
|
| 883 |
-
|
| 884 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 790 |
preview_path_state = gr.State("") # current preview file
|
| 791 |
prev_preview_state = gr.State("") # remembers the last file we showed
|
| 792 |
|
| 793 |
+
def apply_preview(path: str, last_path: str):
|
| 794 |
+
if path == last_path:
|
| 795 |
+
return gr.update(), gr.update(), ""
|
| 796 |
+
|
| 797 |
+
if not path:
|
| 798 |
+
return gr.update(), gr.update(), ""
|
| 799 |
+
|
| 800 |
+
try:
|
| 801 |
+
if any(path.lower().endswith(ext) for ext in IMAGE_EXTS):
|
| 802 |
+
return gr.update(value=path, visible=True), gr.update(value=None, visible=False), "Preview updated."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 803 |
|
| 804 |
+
if any(path.lower().endswith(ext) for ext in VIDEO_EXTS):
|
| 805 |
+
return gr.update(value=None, visible=False), gr.update(value=path, visible=True), "Preview updated."
|
|
|
|
|
|
|
| 806 |
|
| 807 |
+
img = Image.open(path)
|
| 808 |
+
img.verify()
|
| 809 |
+
return gr.update(value=path, visible=True), gr.update(value=None, visible=False), "Preview updated."
|
|
|
|
|
|
|
|
|
|
| 810 |
|
| 811 |
+
except Exception as e:
|
| 812 |
+
print(f"Failed to update preview: {e}")
|
| 813 |
+
return gr.update(value=None, visible=False), gr.update(value=None, visible=False), ""
|
| 814 |
+
|
| 815 |
+
preview_path_state.change(fn=apply_preview, inputs=[preview_path_state], outputs=[preview_image, preview_video, preview_status])
|
| 816 |
+
|
| 817 |
+
demo.queue()
|
| 818 |
+
return demo
|
| 819 |
+
|
| 820 |
+
if __name__ == "__main__":
|
| 821 |
+
create_demo().launch(share=False, server_name="0.0.0.0", server_port=7860, max_threads=8)
|