MT_deploy / powerpoint /pptx_processor.py
mintlee's picture
Add application file
0e9ff78
raw
history blame
2.23 kB
# 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)}")