leonett commited on
Commit
cddcbdb
verified
1 Parent(s): d785524

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -6
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 con todos los fotogramas
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=False)
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
- with open(zip_path, "rb") as f:
135
- file_bytes = f.read()
136
- return os.path.basename(zip_path), file_bytes
 
 
 
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,