Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -576,41 +576,35 @@ async def extract_and_store_frames(file_name: str = Form(...)):
|
|
576 |
raise HTTPException(status_code=500, detail=f"Erreur lors de l'extraction des frames : {str(e)}")
|
577 |
|
578 |
|
579 |
-
STEP=240
|
|
|
|
|
|
|
580 |
@app.get("/get-video-frames/")
|
581 |
async def get_video_frames(file_name: str, frame_id: int) -> dict:
|
582 |
try:
|
583 |
frames = []
|
584 |
csv_filename = Path(file_name).stem + ".csv"
|
585 |
-
csv_url = f"
|
586 |
-
headers = {"Authorization": f"Bearer {HF_TOKEN}"}
|
587 |
-
|
588 |
-
# Récupérer la liste des fichiers dans le dossier frames/{file_name}/
|
589 |
-
dataset_url = f"https://huggingface.co/api/datasets/{DATASET_REPO}/tree/main/frames/{Path(file_name).stem}/"
|
590 |
-
file_list_response = requests.get(dataset_url, headers=headers)
|
591 |
-
available_frames = set()
|
592 |
-
|
593 |
-
if file_list_response.status_code == 200:
|
594 |
-
file_list = file_list_response.json()
|
595 |
-
available_frames = {file["path"] for file in file_list}
|
596 |
|
597 |
# Charger le CSV des annotations si disponible
|
598 |
-
csv_response = requests.get(csv_url, headers=headers)
|
599 |
df_annotations = None
|
600 |
-
|
|
|
601 |
if csv_response.status_code == 200:
|
602 |
csv_bytes = io.BytesIO(csv_response.content)
|
603 |
df_annotations = pd.read_csv(csv_bytes)
|
604 |
-
|
605 |
for i in range(frame_id, frame_id + STEP):
|
606 |
-
frame_filename = f"
|
607 |
-
|
608 |
-
|
|
|
|
|
|
|
609 |
continue
|
610 |
-
|
611 |
-
image_url = f"https://huggingface.co/datasets/{DATASET_REPO}/resolve/main/{frame_filename}"
|
612 |
-
class_label, player = None, None
|
613 |
|
|
|
614 |
if df_annotations is not None and i in df_annotations["frame"].values:
|
615 |
row = df_annotations[df_annotations["frame"] == i].iloc[0]
|
616 |
class_label, player = row.get("class", None), row.get("player", None)
|
|
|
576 |
raise HTTPException(status_code=500, detail=f"Erreur lors de l'extraction des frames : {str(e)}")
|
577 |
|
578 |
|
579 |
+
STEP = 240
|
580 |
+
GITHUB_REPO = "Og31330/FA_Dataset"
|
581 |
+
GITHUB_BASE_URL = f"https://raw.githubusercontent.com/{GITHUB_REPO}/main/"
|
582 |
+
|
583 |
@app.get("/get-video-frames/")
|
584 |
async def get_video_frames(file_name: str, frame_id: int) -> dict:
|
585 |
try:
|
586 |
frames = []
|
587 |
csv_filename = Path(file_name).stem + ".csv"
|
588 |
+
csv_url = f"{GITHUB_BASE_URL}/csv/{csv_filename}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
589 |
|
590 |
# Charger le CSV des annotations si disponible
|
|
|
591 |
df_annotations = None
|
592 |
+
csv_response = requests.get(csv_url)
|
593 |
+
|
594 |
if csv_response.status_code == 200:
|
595 |
csv_bytes = io.BytesIO(csv_response.content)
|
596 |
df_annotations = pd.read_csv(csv_bytes)
|
597 |
+
|
598 |
for i in range(frame_id, frame_id + STEP):
|
599 |
+
frame_filename = f"{Path(file_name).stem}/{Path(file_name).stem}_{i}.png"
|
600 |
+
image_url = f"{GITHUB_BASE_URL}/frames/{frame_filename}"
|
601 |
+
|
602 |
+
# Vérifier si l'image existe
|
603 |
+
image_response = requests.head(image_url)
|
604 |
+
if image_response.status_code != 200:
|
605 |
continue
|
|
|
|
|
|
|
606 |
|
607 |
+
class_label, player = None, None
|
608 |
if df_annotations is not None and i in df_annotations["frame"].values:
|
609 |
row = df_annotations[df_annotations["frame"] == i].iloc[0]
|
610 |
class_label, player = row.get("class", None), row.get("player", None)
|