Spaces:
Running
Running
from flask import Blueprint, request, jsonify, send_from_directory | |
import os | |
import logging | |
from core.data_processor import DataProcessor | |
from flask_jwt_extended import jwt_required, get_jwt_identity | |
# Cấu hình logging | |
logger = logging.getLogger(__name__) | |
# Tạo blueprint | |
data_routes = Blueprint('data', __name__) | |
# Đường dẫn đến thư mục dữ liệu | |
current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
data_dir = os.path.join(current_dir, "data") | |
data_dir = os.path.abspath(data_dir) | |
def serve_figure(bai_id, filename): | |
"""API endpoint để phục vụ hình ảnh theo bài""" | |
try: | |
# Đường dẫn chính xác đến thư mục figures | |
figure_dir = os.path.join(data_dir, bai_id, 'figures') | |
figure_dir = os.path.abspath(figure_dir) | |
# Kiểm tra xem thư mục có tồn tại không | |
if os.path.exists(figure_dir) and os.path.isdir(figure_dir): | |
for ext in ['', '.png', '.jpg', '.jpeg', '.gif', '.svg']: | |
# Kiểm tra với nhiều phần mở rộng khác nhau | |
file_to_check = os.path.join(figure_dir, filename + ext) | |
if os.path.exists(file_to_check): | |
return send_from_directory(figure_dir, filename + ext) | |
logger.error(f"Không tìm thấy hình ảnh: {os.path.join(figure_dir, filename)}") | |
return jsonify({"error": "Không tìm thấy hình ảnh"}), 404 | |
except Exception as e: | |
logger.error(f"Lỗi khi tải hình ảnh: {str(e)}") | |
return jsonify({"error": f"Lỗi máy chủ: {str(e)}"}), 500 | |
def get_metadata(): | |
"""API endpoint để lấy thông tin metadata của tài liệu""" | |
try: | |
# Tạo data_processor mới để lấy metadata | |
data_processor = DataProcessor(data_dir=data_dir) | |
metadata = data_processor.get_all_metadata() | |
return jsonify({ | |
"success": True, | |
"metadata": metadata | |
}) | |
except Exception as e: | |
logger.error(f"Lỗi khi lấy metadata: {str(e)}") | |
return jsonify({ | |
"success": False, | |
"error": str(e) | |
}), 500 |