Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -62,19 +62,22 @@ def procesar_video(video):
|
|
62 |
collage_path = os.path.join(temp_dir, "collage.jpg")
|
63 |
collage.save(collage_path)
|
64 |
|
65 |
-
# Generaci贸n del ZIP
|
66 |
base_name = os.path.splitext(original_name)[0]
|
67 |
zip_filename = f"{base_name}.zip"
|
68 |
final_zip_path = os.path.join(temp_dir, zip_filename)
|
69 |
|
70 |
with zipfile.ZipFile(final_zip_path, mode="w") as zipf:
|
|
|
71 |
for img_path in frame_paths:
|
72 |
zipf.write(img_path, os.path.basename(img_path))
|
73 |
|
|
|
74 |
chain_content = (
|
75 |
f"Nombre del archivo: {original_name}\n"
|
76 |
f"Fecha de carga y extracci贸n: {timestamp}\n"
|
77 |
f"N煤mero de fotogramas: {frame_count}\n"
|
|
|
78 |
)
|
79 |
zipf.writestr("cadena_custodia.txt", chain_content)
|
80 |
|
@@ -90,7 +93,7 @@ def limpiar_cache(temp_dir):
|
|
90 |
os.rmdir(temp_dir)
|
91 |
|
92 |
with gr.Blocks(title="Extracci贸n de Fotogramas Forenses") as demo:
|
93 |
-
gr.Markdown("# Herramienta de Extracci贸n de Fotogramas Forenses")
|
94 |
gr.Markdown("**Carga un video para extraer TODOS los fotogramas y generar un collage de muestra.**")
|
95 |
gr.Markdown("Desarrollado por Jos茅 R. Leonett para el Grupo de Peritos Forenses Digitales de Guatemala - [www.forensedigital.gt](https://www.forensedigital.gt)")
|
96 |
|
@@ -101,7 +104,7 @@ with gr.Blocks(title="Extracci贸n de Fotogramas Forenses") as demo:
|
|
101 |
with gr.Column():
|
102 |
gallery_output = gr.Image(label="Collage de Muestra")
|
103 |
download_btn = gr.Button("DESCARGAR FOTOGRAMAS", interactive=False)
|
104 |
-
download_file = gr.File(label="Archivo ZIP generado", visible=
|
105 |
|
106 |
temp_dir_state = gr.State(None)
|
107 |
zip_path_state = gr.State(None)
|
@@ -131,9 +134,12 @@ with gr.Blocks(title="Extracci贸n de Fotogramas Forenses") as demo:
|
|
131 |
)
|
132 |
|
133 |
def trigger_download(zip_path):
|
134 |
-
|
135 |
-
|
136 |
-
|
|
|
|
|
|
|
137 |
|
138 |
download_btn.click(
|
139 |
fn=trigger_download,
|
|
|
62 |
collage_path = os.path.join(temp_dir, "collage.jpg")
|
63 |
collage.save(collage_path)
|
64 |
|
65 |
+
# Generaci贸n del ZIP
|
66 |
base_name = os.path.splitext(original_name)[0]
|
67 |
zip_filename = f"{base_name}.zip"
|
68 |
final_zip_path = os.path.join(temp_dir, zip_filename)
|
69 |
|
70 |
with zipfile.ZipFile(final_zip_path, mode="w") as zipf:
|
71 |
+
# A帽adir todos los frames
|
72 |
for img_path in frame_paths:
|
73 |
zipf.write(img_path, os.path.basename(img_path))
|
74 |
|
75 |
+
# A帽adir TXT de cadena de custodia
|
76 |
chain_content = (
|
77 |
f"Nombre del archivo: {original_name}\n"
|
78 |
f"Fecha de carga y extracci贸n: {timestamp}\n"
|
79 |
f"N煤mero de fotogramas: {frame_count}\n"
|
80 |
+
f"Hash MD5 del video: {hashlib.md5(open(video_path, 'rb').read()).hexdigest()}\n"
|
81 |
)
|
82 |
zipf.writestr("cadena_custodia.txt", chain_content)
|
83 |
|
|
|
93 |
os.rmdir(temp_dir)
|
94 |
|
95 |
with gr.Blocks(title="Extracci贸n de Fotogramas Forenses") as demo:
|
96 |
+
gr.Markdown("# 馃摲 Herramienta de Extracci贸n de Fotogramas Forenses")
|
97 |
gr.Markdown("**Carga un video para extraer TODOS los fotogramas y generar un collage de muestra.**")
|
98 |
gr.Markdown("Desarrollado por Jos茅 R. Leonett para el Grupo de Peritos Forenses Digitales de Guatemala - [www.forensedigital.gt](https://www.forensedigital.gt)")
|
99 |
|
|
|
104 |
with gr.Column():
|
105 |
gallery_output = gr.Image(label="Collage de Muestra")
|
106 |
download_btn = gr.Button("DESCARGAR FOTOGRAMAS", interactive=False)
|
107 |
+
download_file = gr.File(label="Archivo ZIP generado", visible=True) # Cambiado a visible
|
108 |
|
109 |
temp_dir_state = gr.State(None)
|
110 |
zip_path_state = gr.State(None)
|
|
|
134 |
)
|
135 |
|
136 |
def trigger_download(zip_path):
|
137 |
+
try:
|
138 |
+
with open(zip_path, "rb") as f:
|
139 |
+
file_bytes = f.read()
|
140 |
+
return os.path.basename(zip_path), file_bytes
|
141 |
+
except Exception as e:
|
142 |
+
raise gr.Error(f"Error al generar descarga: {str(e)}")
|
143 |
|
144 |
download_btn.click(
|
145 |
fn=trigger_download,
|