Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
import zipfile
|
|
|
|
|
2 |
def unzip_content():
|
3 |
try:
|
4 |
# First try using Python's zipfile
|
@@ -52,14 +54,18 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|
52 |
|
53 |
|
54 |
|
55 |
-
def create_video(images_list
|
56 |
"""Create video from a list of image tensors"""
|
57 |
if not images_list:
|
58 |
print("No images provided.")
|
59 |
return None
|
60 |
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
63 |
|
64 |
for img_tensor in images_list:
|
65 |
# Convert tensor to numpy array
|
@@ -68,7 +74,13 @@ def create_video(images_list, video_name='morphing_video.mp4'):
|
|
68 |
video_writer.append_data(img)
|
69 |
|
70 |
video_writer.close()
|
71 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
def save_from_tensors(tensor):
|
74 |
"""Process tensor and return the processed version"""
|
@@ -226,11 +238,33 @@ def generate_art(include_text, exclude_text, extras_text, num_iterations):
|
|
226 |
except Exception as e:
|
227 |
raise e
|
228 |
|
|
|
229 |
def gradio_interface(include_text, exclude_text, extras_text, num_iterations):
|
|
|
230 |
try:
|
231 |
video_path = generate_art(include_text, exclude_text, extras_text, int(num_iterations))
|
232 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
except Exception as e:
|
|
|
|
|
234 |
return f"An error occurred: {str(e)}"
|
235 |
|
236 |
# Try to unzip content at startup
|
|
|
1 |
import zipfile
|
2 |
+
import time
|
3 |
+
import threading
|
4 |
def unzip_content():
|
5 |
try:
|
6 |
# First try using Python's zipfile
|
|
|
54 |
|
55 |
|
56 |
|
57 |
+
def create_video(images_list):
|
58 |
"""Create video from a list of image tensors"""
|
59 |
if not images_list:
|
60 |
print("No images provided.")
|
61 |
return None
|
62 |
|
63 |
+
# Create a unique filename in the current directory
|
64 |
+
video_path = os.path.join(os.getcwd(), f"output_{int(time.time())}.mp4")
|
65 |
+
|
66 |
+
try:
|
67 |
+
video_writer = imageio.get_writer(video_path, fps=10, codec='libx264', quality=7,
|
68 |
+
output_params=['-movflags', 'faststart'])
|
69 |
|
70 |
for img_tensor in images_list:
|
71 |
# Convert tensor to numpy array
|
|
|
74 |
video_writer.append_data(img)
|
75 |
|
76 |
video_writer.close()
|
77 |
+
return video_path
|
78 |
+
|
79 |
+
except Exception as e:
|
80 |
+
if os.path.exists(video_path):
|
81 |
+
os.remove(video_path)
|
82 |
+
raise e
|
83 |
+
|
84 |
|
85 |
def save_from_tensors(tensor):
|
86 |
"""Process tensor and return the processed version"""
|
|
|
238 |
except Exception as e:
|
239 |
raise e
|
240 |
|
241 |
+
|
242 |
def gradio_interface(include_text, exclude_text, extras_text, num_iterations):
|
243 |
+
video_path = None
|
244 |
try:
|
245 |
video_path = generate_art(include_text, exclude_text, extras_text, int(num_iterations))
|
246 |
+
|
247 |
+
if not os.path.exists(video_path):
|
248 |
+
return "Video generation failed"
|
249 |
+
|
250 |
+
# Create a copy of the video path before scheduling deletion
|
251 |
+
response_path = video_path
|
252 |
+
|
253 |
+
# Schedule the video file for deletion after a delay
|
254 |
+
def cleanup():
|
255 |
+
try:
|
256 |
+
if os.path.exists(video_path):
|
257 |
+
os.remove(video_path)
|
258 |
+
except:
|
259 |
+
pass
|
260 |
+
|
261 |
+
threading.Timer(10.0, cleanup).start()
|
262 |
+
|
263 |
+
return response_path
|
264 |
+
|
265 |
except Exception as e:
|
266 |
+
if video_path and os.path.exists(video_path):
|
267 |
+
os.remove(video_path)
|
268 |
return f"An error occurred: {str(e)}"
|
269 |
|
270 |
# Try to unzip content at startup
|