#!/usr/bin/env python3
from pathlib import Path
import subprocess
import re

BASE = Path("/home/dayhanbiz/public_html/biblioteka/тестирование скриптов/Сортировка по шрифту")
SOURCE = BASE / "Неотсортированные файлы"
TARGET = BASE / "Отсортированные - Гейропа и приспешники"
LOG_DIR = BASE / "Скрипты" / "Temporary process files"

TARGET.mkdir(parents=True, exist_ok=True)
LOG_DIR.mkdir(parents=True, exist_ok=True)

print("=== Скрипт 6. Проверка 7-й страницы на европейские языки (латиница) ===")
pdf_files = list(SOURCE.glob("*.pdf"))
print(f"Найдено файлов: {len(pdf_files)}\n")

moved = 0
for pdf in pdf_files:
    try:
        temp_prefix = LOG_DIR / pdf.stem
        
        # Конвертируем только 7-ю страницу
        subprocess.run([
            'pdftoppm', '-png', '-r', '300', '-f', '7', '-l', '7',
            str(pdf), str(temp_prefix)
        ], check=True, timeout=60)

        page_files = list(LOG_DIR.glob(f"{pdf.stem}*.png"))
        if not page_files:
            print(f"   Не удалось извлечь: {pdf.name}")
            continue

        page_file = page_files[0]

        # Распознаём с большим набором европейских языков
        result = subprocess.run([
            'tesseract', str(page_file), 'stdout',
            '-l', 'eng+fra+deu+spa+ita+por+pol+ces+slk+ron+hrv+srp+nld+swe+dan+nor+fin+est+lav+lit+mlt+ell+gle',
            '--psm', '6'
        ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=90)

        text = result.stdout.decode('utf-8', errors='ignore') if result.returncode == 0 else ""

        # Сохраняем лог
        log_file = LOG_DIR / f"{pdf.stem}_page7.txt"
        with open(log_file, "w", encoding="utf-8") as f:
            f.write(text)

        if page_file.exists():
            page_file.unlink()

        # Подсчёт слов
        words = re.findall(r'\b\w+\b', text)
        total_words = len(words)

        if total_words < 50:
            print(f"   Мало текста: {pdf.name}")
            if log_file.exists():
                log_file.unlink()
            continue

        # Проверка на латиницу
        latin_words = sum(1 for w in words if re.search(r'[a-zA-Z]', w))
        percentage_latin = (latin_words / total_words) * 100

        if percentage_latin >= 66:
            try:
                pdf.rename(TARGET / pdf.name)
                print(f"→ Гейропа и приспешники ({percentage_latin:.1f}% латиницы): {pdf.name}")
                moved += 1
                print(f"   Лог сохранён: {log_file.name}")
            except Exception as e:
                print(f"Ошибка перемещения {pdf.name}: {e}")
        else:
            print(f"   Не европейская латиница ({percentage_latin:.1f}%): {pdf.name}")
            if log_file.exists():
                log_file.unlink()

    except Exception as e:
        print(f"Ошибка обработки {pdf.name}: {e}")

print(f"\n=== Завершено. Перемещено в Гейропа и приспешники: {moved} файлов ===")
