File size: 2,225 Bytes
0e9ff78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
    # ppt_processor.py
from pathlib import Path
from xml_handling import ppt_to_xml, translate_xml_file
from pptx_object import create_translated_ppt
import os

def process_ppt_file(ppt_path: Path, source_lang: str, target_lang: str):
    """Process a single PPT/PPTX file from XML extraction to final translation."""
    ppt_path = ppt_path.strip("'\"")
    ppt_path = ppt_path.replace("\\ ", " ")
    ppt_path = ppt_path.replace("\\'", "'")
    ppt_path = os.path.expanduser(ppt_path)
    ppt_path = Path(ppt_path).resolve()
    # chuyển thành link DB trên server
    try:
        if not ppt_path.is_file():
            print(f"Error: '{ppt_path}' is not a valid file.")
            return
        if ppt_path.suffix.lower() not in ['.ppt', '.pptx']:
            print(f"Error: '{ppt_path}' is not a PowerPoint file.")
            return

        base_dir = ppt_path.parent

        # Original XML
        print(f"Generating original XML for {ppt_path.name}...")
        original_xml = ppt_to_xml(str(ppt_path)) 
        if original_xml:
            original_output_path = base_dir / f"{ppt_path.stem}_original.xml"
            with open(original_output_path, 'w', encoding='utf-8') as f:
                f.write(original_xml)
            print(f"Original XML saved: {original_output_path}")

            # Save original XML to MongoDB
            # save_xml_to_mongodb(original_xml, ppt_path.stem + "_original.xml")

        # Translated XML
        print(f"Generating translated XML (from {source_lang} to {target_lang}) for {ppt_path.name}...")
        translated_output_path = base_dir / f"{ppt_path.stem}_translated.xml"
        original_xml_path = base_dir / f"{ppt_path.stem}_original.xml"
        translate_xml_file(str(original_xml_path), str(translated_output_path), source_lang, target_lang)

        # Create Translated PPT
        print(f"Creating translated PPT for {ppt_path.name}...")
        output_filename = f"{ppt_path.stem}_translated{ppt_path.suffix}"
        output_ppt_path = base_dir / output_filename
        create_translated_ppt(str(ppt_path), str(translated_output_path), str(output_ppt_path))

    except Exception as e:
        print(f"Error in process_ppt_file for {ppt_path}: {str(e)}")