File size: 2,345 Bytes
8275526
 
 
 
 
 
 
 
 
 
 
 
 
 
dce238e
8275526
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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)

@data_routes.route('/figures/<path:bai_id>/<path:filename>', methods=['GET'])
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

@data_routes.route('/metadata', methods=['GET'])
@jwt_required(optional=True)
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