Moibe commited on
Commit
7f5084c
·
1 Parent(s): 38fde1d

Echo video

Browse files
Files changed (1) hide show
  1. app.py +39 -0
app.py CHANGED
@@ -32,6 +32,43 @@ async def echo_image(image: UploadFile = File(...)):
32
  contents = await image.read()
33
  return StreamingResponse(BytesIO(contents), media_type=image.content_type)
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  @app.post("/motion-image/")
36
  async def motion_image(image: UploadFile = File(...), background_tasks: BackgroundTasks = BackgroundTasks()):
37
  """
@@ -66,7 +103,9 @@ async def motion_image(image: UploadFile = File(...), background_tasks: Backgrou
66
  import mimetypes
67
  mimetypes.add_type("video/mp4", ".mp4") # Asegúrate de añadir tipos si esperas video
68
  mime_type, _ = mimetypes.guess_type(path_archivo)
 
69
  if not mime_type:
 
70
  mime_type = "application/octet-stream" # Tipo genérico si no se puede adivinar
71
 
72
  # 4.5 Programar la eliminación de AMBOS archivos después de que la respuesta sea enviada
 
32
  contents = await image.read()
33
  return StreamingResponse(BytesIO(contents), media_type=image.content_type)
34
 
35
+ @app.post("/echo-video/",
36
+ tags=["Monitoreo Server"],
37
+ description="Test endpoint para prueba de envío de videos. Recibe un video y lo devuelve tal cual.",
38
+ summary="Mirror test para envío de videos"
39
+ )
40
+ async def echo_video(video: UploadFile = File(...)):
41
+ """
42
+ Recibe un archivo de video y lo devuelve sin modificaciones.
43
+ Útil para probar la conectividad y el manejo de archivos de video en la API.
44
+ """
45
+ # Validar que el archivo subido es un video
46
+ if not video.content_type.startswith("video/"):
47
+ raise HTTPException(
48
+ status_code=status.HTTP_400_BAD_REQUEST,
49
+ detail="El archivo no es un video. Por favor, suba un archivo de video."
50
+ )
51
+
52
+ try:
53
+ # Lee el contenido binario del video
54
+ contents = await video.read()
55
+
56
+ # Envuelve los bytes en un buffer en memoria
57
+ buffer = BytesIO(contents)
58
+ buffer.seek(0) # Asegúrate de que el puntero esté al inicio para la lectura
59
+
60
+ # Devuelve el video utilizando StreamingResponse con el tipo MIME correcto
61
+ return StreamingResponse(buffer, media_type=video.content_type)
62
+
63
+ except Exception as e:
64
+ # Captura cualquier error inesperado durante la lectura o la respuesta
65
+ print(f"Error inesperado en /echo-video/: {e}")
66
+ raise HTTPException(
67
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
68
+ detail="Ha ocurrido un error inesperado al procesar el video."
69
+ )
70
+
71
+
72
  @app.post("/motion-image/")
73
  async def motion_image(image: UploadFile = File(...), background_tasks: BackgroundTasks = BackgroundTasks()):
74
  """
 
103
  import mimetypes
104
  mimetypes.add_type("video/mp4", ".mp4") # Asegúrate de añadir tipos si esperas video
105
  mime_type, _ = mimetypes.guess_type(path_archivo)
106
+ print("Myme type es: ", mime_type)
107
  if not mime_type:
108
+ print("Entró a not mime_type")
109
  mime_type = "application/octet-stream" # Tipo genérico si no se puede adivinar
110
 
111
  # 4.5 Programar la eliminación de AMBOS archivos después de que la respuesta sea enviada