Og2 commited on
Commit
fbec1db
·
verified ·
1 Parent(s): a3a5814

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -18
app.py CHANGED
@@ -566,33 +566,51 @@ async def extract_and_store_frames(file_name: str = Form(...)):
566
  @app.get("/get-video-frames/")
567
  async def get_video_frames(file_name: str, frame_id: int) -> dict:
568
  try:
569
- # URL du fichier image dans le dataset
570
- image_url = f"https://huggingface.co/datasets/{DATASET_REPO}/tree/main/frames/{Path(file_name).stem}/{Path(file_name).stem}_{frame_id}.png"
571
- print(image_url)
 
572
  headers = {"Authorization": f"Bearer {HF_TOKEN}"}
573
- print(HF_TOKEN)
574
- response = requests.head(image_url, headers=headers)
575
-
576
- if response.status_code != 200:
577
- raise HTTPException(status_code=404, detail="Image introuvable dans le dataset")
578
 
579
- csv_filename = Path(file_name).stem + ".csv"
580
- csv_url = f"https://huggingface.co/datasets/{DATASET_REPO}/tree/main/csv/{csv_filename}"
 
 
 
 
 
 
 
 
 
581
  csv_response = requests.get(csv_url, headers=headers)
582
  df_annotations = None
583
-
584
  if csv_response.status_code == 200:
585
  csv_bytes = io.BytesIO(csv_response.content)
586
  df_annotations = pd.read_csv(csv_bytes)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
587
 
588
- class_label, player = None, None
589
- if df_annotations is not None and frame_id in df_annotations["frame"].values:
590
- row = df_annotations[df_annotations["frame"] == frame_id].iloc[0]
591
- class_label, player = row.get("class", None), row.get("player", None)
592
-
593
- return {"status": "success", "frame_index": frame_id, "image_url": image_url, "class": class_label, "player": player}
594
  except Exception as e:
595
- raise HTTPException(status_code=500, detail=f"Erreur lors de la récupération de l'image : {str(e)}")
 
596
 
597
 
598
 
 
566
  @app.get("/get-video-frames/")
567
  async def get_video_frames(file_name: str, frame_id: int) -> dict:
568
  try:
569
+ frames = []
570
+ csv_filename = Path(file_name).stem + ".csv"
571
+ csv_url = f"https://huggingface.co/datasets/{DATASET_REPO}/resolve/main/csv/{csv_filename}"
572
+ print(csv_url)
573
  headers = {"Authorization": f"Bearer {HF_TOKEN}"}
 
 
 
 
 
574
 
575
+ # Récupérer la liste des fichiers dans le dossier frames/{file_name}/
576
+ dataset_url = f"https://huggingface.co/api/datasets/{DATASET_REPO}/resolve/main/frames/{Path(file_name).stem}/"
577
+ print(dataset_url)
578
+ file_list_response = requests.get(dataset_url, headers=headers)
579
+ available_frames = set()
580
+
581
+ if file_list_response.status_code == 200:
582
+ file_list = file_list_response.json()
583
+ available_frames = {file["path"] for file in file_list}
584
+
585
+ # Charger le CSV des annotations si disponible
586
  csv_response = requests.get(csv_url, headers=headers)
587
  df_annotations = None
588
+
589
  if csv_response.status_code == 200:
590
  csv_bytes = io.BytesIO(csv_response.content)
591
  df_annotations = pd.read_csv(csv_bytes)
592
+
593
+ for i in range(frame_id, frame_id + 30):
594
+ frame_filename = f"frames/{Path(file_name).stem}/{Path(file_name).stem}_{i}.png"
595
+ if frame_filename not in available_frames:
596
+ continue
597
+
598
+ image_url = f"https://huggingface.co/datasets/{DATASET_REPO}/resolve/main/{frame_filename}"
599
+ class_label, player = None, None
600
+
601
+ if df_annotations is not None and i in df_annotations["frame"].values:
602
+ row = df_annotations[df_annotations["frame"] == i].iloc[0]
603
+ class_label, player = row.get("class", None), row.get("player", None)
604
+
605
+ frames.append({"frame_index": i, "image_url": image_url, "class": class_label, "player": player})
606
+
607
+ if not frames:
608
+ raise HTTPException(status_code=404, detail="Aucune image trouvée dans la plage demandée")
609
 
610
+ return {"status": "success", "frames": frames}
 
 
 
 
 
611
  except Exception as e:
612
+ raise HTTPException(status_code=500, detail=f"Erreur lors de la récupération des images : {str(e)}")
613
+
614
 
615
 
616