#!/usr/bin/env python3
"""
Script để tách file OCR Chuẩn Mực Sadi thành các file 5 trang mỗi file.
Định dạng tên: Sadi-001-005-Gemini.md, Sadi-006-010-Gemini.md, ...
"""

import re
import os

INPUT_FILE = "/opt/openclaw/.openclaw/workspace/Chuan Muc Sadi/extracted/Chuan muc sadi - 1 to 165 - Gemini.md"
OUTPUT_DIR = "/opt/openclaw/.openclaw/workspace/Chuan Muc Sadi/extracted/split"

# Tạo thư mục output nếu chưa tồn tại
os.makedirs(OUTPUT_DIR, exist_ok=True)

# Đọc file gốc
with open(INPUT_FILE, 'r', encoding='utf-8') as f:
    content = f.read()

# Tách thành các trang dựa trên marker
# Pattern: \==Start of OCR for page X==
pages = []
current_page = None
current_content = []

for line in content.split('\n'):
    match = re.match(r'\\==Start of OCR for page (\d+)==', line)
    if match:
        # Lưu trang trước nếu có
        if current_page is not None:
            pages.append((current_page, '\n'.join(current_content)))
        current_page = int(match.group(1))
        current_content = [line]
    elif re.match(r'\\==End of OCR for page \d+==', line):
        current_content.append(line)
        if current_page is not None:
            pages.append((current_page, '\n'.join(current_content)))
            current_page = None
            current_content = []
    else:
        if current_page is not None:
            current_content.append(line)

# Xử lý trang cuối nếu chưa đóng
if current_page is not None and current_content:
    pages.append((current_page, '\n'.join(current_content)))

print(f"Tổng số trang tìm thấy: {len(pages)}")

# Sắp xếp pages theo số thứ tự
pages.sort(key=lambda x: x[0])

# Tách thành các file 5 trang
BATCH_SIZE = 5
total_pages = len(pages)

for i in range(0, total_pages, BATCH_SIZE):
    batch_pages = pages[i:i+BATCH_SIZE]
    start_page = batch_pages[0][0]
    end_page = batch_pages[-1][0]
    
    # Tạo tên file
    filename = f"Sadi-{start_page:03d}-{end_page:03d}-Gemini.md"
    filepath = os.path.join(OUTPUT_DIR, filename)
    
    # Xử lý nội dung từng trang
    processed_pages = []
    for page_num, page_content in batch_pages:
        # Loại bỏ các marker OCR
        lines = page_content.split('\n')
        clean_lines = []
        for line in lines:
            # Bỏ qua các dòng marker
            if re.match(r'\\==Start of OCR for page \d+==', line):
                # Thay bằng markdown header cho trang
                clean_lines.append(f"\n---\n\n### Trang {page_num}\n")
            elif re.match(r'\\==End of OCR for page \d+==', line):
                # Bỏ qua marker kết thúc
                continue
            else:
                clean_lines.append(line)
        processed_pages.append('\n'.join(clean_lines))
    
    # Nối nội dung
    batch_content = '\n'.join(processed_pages)
    
    # Thêm header
    header = f"# Chuẩn Mực Sadi - Trang {start_page} đến {end_page}\n\n"
    full_content = header + batch_content
    
    # Ghi file
    with open(filepath, 'w', encoding='utf-8') as f:
        f.write(full_content)
    
    print(f"✅ Đã tạo: {filename} (trang {start_page}-{end_page})")

print(f"\n🎉 Hoàn thành! Tổng cộng {total_pages // BATCH_SIZE} file đã được tạo trong thư mục: {OUTPUT_DIR}")
