From e13c7ffd7616ba5f3306b463c621f07549e7dcf2 Mon Sep 17 00:00:00 2001 From: jouel88 Date: Fri, 15 May 2026 00:16:29 +0700 Subject: [PATCH] perbaikan path --- app.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 0dff9e5..7c5809b 100644 --- a/app.py +++ b/app.py @@ -2,7 +2,7 @@ import os import uuid import logging from functools import wraps -from flask import Flask, request, jsonify +from flask import Flask, request, jsonify, send_file from flask_cors import CORS from config import DATASETS_DIR, MODELS_DIR, TEMP_DIR, MAX_CONTENT_LENGTH, API_KEY @@ -260,6 +260,72 @@ def api_get_embedding(): os.remove(temp_file) +@app.route('/list-frames/', methods=['GET']) +@require_api_key +def api_list_frames(user_id): + user_dir = os.path.join(DATASETS_DIR, str(user_id)) + + if not os.path.exists(user_dir): + return jsonify({ + "status": "success", + "user_id": user_id, + "total_frames": 0, + "frames": [] + }) + + frames = sorted([ + f for f in os.listdir(user_dir) + if f.startswith('frame_') and f.endswith('.jpg') + ]) + + return jsonify({ + "status": "success", + "user_id": user_id, + "total_frames": len(frames), + "frames": frames + }) + + +@app.route('/get-frame//', methods=['GET']) +@require_api_key +def api_get_frame(user_id, frame_index): + idx = str(frame_index).zfill(3) + + raw_path = os.path.join(DATASETS_DIR, str(user_id), f"raw_frame_{idx}.jpg") + frame_path = os.path.join(DATASETS_DIR, str(user_id), f"frame_{idx}.jpg") + + if os.path.exists(raw_path): + return send_file(raw_path, mimetype='image/jpeg') + elif os.path.exists(frame_path): + return send_file(frame_path, mimetype='image/jpeg') + + return jsonify({"status": "error", "message": "Frame tidak ditemukan."}), 404 + + +@app.route('/delete-frames/', methods=['DELETE']) +@require_api_key +def api_delete_frames(user_id): + user_dir = os.path.join(DATASETS_DIR, str(user_id)) + + if not os.path.exists(user_dir): + return jsonify({ + "status": "success", + "message": f"Folder user {user_id} tidak ditemukan (sudah bersih).", + "deleted": 0 + }) + + import shutil + shutil.rmtree(user_dir) + + logger.info(f"Deleted frames for user {user_id}: {user_dir}") + + return jsonify({ + "status": "success", + "message": f"Data frame user {user_id} berhasil dihapus.", + "user_id": user_id + }) + + if __name__ == '__main__': logger.info("=" * 50) logger.info("MPG HRIS - Flask ML API Server")