MT_deploy / pages /upload.py
mintlee's picture
update mongodb
7c2551b
raw
history blame
6.07 kB
import streamlit as st
import google.generativeai as genai
from db.mongodb import save_file_to_mongodb, fetch_file_from_mongodb, detect_file_type
from powerpoint.xml_handling import (
extract_text_from_xml, update_xml_with_translated_text_mongodb, ppt_to_xml_mongodb
)
from translate.translator import translate_text_dict
from powerpoint.pptx_object import create_translated_ppt
from excel.excel_translate import translate_xlsx, translate_csv
from word.word_translate import translate_docx
import dotenv
import os
dotenv.load_dotenv(".env")
# Cấu hình API key
api_key = os.getenv("GEMINI_API_KEY")
genai.configure(api_key=api_key)
model = genai.GenerativeModel("gemini-1.5-flash")
# Giao diện Streamlit
st.title("Upload PPTX to MongoDB")
# st.set_option("server.fileUploader.allowMediaFiles", True)
uploaded_file = st.file_uploader("Chọn file")
file_name_input = st.text_input("Tên file để lưu (không cần .pptx)", value="")
final_pptx_id = None # Biến lưu ID file sau khi xử lý
if uploaded_file is not None:
if st.button("Upload"):
file_type = detect_file_type(uploaded_file)
st.write(f"Detected file type: {file_type}")
if file_type == "PPTX":
file_id = save_file_to_mongodb(uploaded_file=uploaded_file, file_name=file_name_input)
st.write(f"File ID: {file_id}")
xml_file_id = ppt_to_xml_mongodb(file_id)
text_dict = extract_text_from_xml(file_id=xml_file_id)
translated_dict = translate_text_dict(text_dict, source_lang="VietNamese", target_lang="English", gemini_api=api_key)
final_xml_id = update_xml_with_translated_text_mongodb(xml_file_id, translated_dict)
st.write(f"Final XML ID: {final_xml_id}")
# Lưu ID file PPTX cuối cùng
final_pptx_id = create_translated_ppt(
db_name="ppt", original_ppt_id=file_id,
translated_xml_id=final_xml_id, output_collection="final_pptx"
)
st.write(f"Final PPTX ID: {final_pptx_id}")
# Hiển thị ảnh slide trước khi tải xuống
if final_pptx_id:
st.write("✅ File đã sẵn sàng để tải xuống!")
pptx_io, pptx_filename = fetch_file_from_mongodb("ppt", "final_pptx", final_pptx_id)
if pptx_io:
# Nút tải file sau khi xem trước
st.download_button(
label="Click to Download",
data=pptx_io.getvalue(), # Chuyển thành bytes để tải về
file_name=pptx_filename,
mime="application/vnd.openxmlformats-officedocument.presentationml.presentation"
)
else:
st.error("❌ Không thể tải xuống file. Kiểm tra lại ID hoặc thử lại sau.")
elif file_type == "Excel":
file_id = save_file_to_mongodb(uploaded_file=uploaded_file, db_name="excel", collection_name="root_file", file_name=file_name_input, file_tail=".xlsx")
st.write(f"File ID: {file_id}")
final_id = translate_xlsx(file_id=file_id, from_lang="en", target_lang="vi", gemini_api=api_key)
st.write(f"Final Excel ID: {final_id}")
if final_id:
st.write("✅ File đã sẵn sàng để tải xuống!")
excel_io, excel_filename = fetch_file_from_mongodb("excel", "final_file", final_id)
if excel_io:
st.download_button(
label="Click to Download",
data=excel_io.getvalue(),
file_name=excel_filename,
mime="application/vnd.ms-excel"
)
else:
st.error("❌ Không thể tải xuống file. Kiểm tra lại ID hoặc thử lại sau.")
elif file_type == "CSV":
file_id = save_file_to_mongodb(uploaded_file=uploaded_file, db_name="csv", collection_name="root_file", file_name=file_name_input, file_tail=".csv")
st.write(f"File ID: {file_id}")
final_id = translate_csv(file_id=file_id, source_lang="en", target_lang="vi", gemini_api=api_key)
st.write(f"Final CSV ID: {final_id}")
if final_id:
st.write("✅ File đã sẵn sàng để tải xuống!")
csv_io, csv_filename = fetch_file_from_mongodb("csv", "final_file", final_id)
if csv_io:
st.download_button(
label="Click to Download",
data=csv_io.getvalue(),
file_name=csv_filename,
mime="text/csv"
)
else:
st.error("❌ Không thể tải xuống file. Kiểm tra lại ID hoặc thử lại sau.")
elif file_type == "Word":
file_id = save_file_to_mongodb(uploaded_file=uploaded_file, db_name="word", collection_name="root_file", file_name=file_name_input, file_tail=".docx")
st.write(f"File ID: {file_id}")
final_id = translate_docx(file_id=file_id, source_lang="en", target_lang="vi")
st.write(f"Final CSV ID: {final_id}")
if final_id:
st.write("✅ File đã sẵn sàng để tải xuống!")
docx_io, docx_filename = fetch_file_from_mongodb("word", "final_file", final_id)
if docx_io:
st.download_button(
label="Click to Download",
data=docx_io.getvalue(),
file_name=docx_filename,
mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
)
else:
st.error("❌ Không thể tải xuống file. Kiểm tra lại ID hoặc thử lại sau.")