vsa-gpt / app.py
TDN-M's picture
Update app.py
a6793d5 verified
import os
from flask import Flask, request, jsonify, send_file
from flask_cors import CORS
import openai
from docx import Document
from fpdf import FPDF
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
app = Flask(__name__)
CORS(app)
# Lấy API key từ biến môi trường
openai.api_key = os.getenv('OPENAI_API_KEY')
@app.route('/translate', methods=['POST'])
def translate():
data = request.json
text = data.get('text')
target_language = 'vi' # Dịch sang tiếng Việt
# Sử dụng OpenAI API để dịch
prompt = f"Translate the following text to Vietnamese: {text}"
response = openai.Completion.create(
engine="gpt-4",
prompt=prompt,
max_tokens=150
)
translation = response.choices[0].text.strip()
return jsonify({"translation": translation})
@app.route('/create_file', methods=['POST'])
def create_file():
data = request.json
text = data.get('text')
filename = data.get('filename')
file_format = data.get('file_format')
if file_format == 'docx':
doc = Document()
doc.add_paragraph(text)
doc_path = f"{filename}.docx"
doc.save(doc_path)
return send_file(doc_path, as_attachment=True)
elif file_format == 'pdf':
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.multi_cell(0, 10, text)
pdf_path = f"{filename}.pdf"
pdf.output(pdf_path)
return send_file(pdf_path, as_attachment=True)
@app.route('/send_email', methods=['POST'])
def send_email():
data = request.json
subject = data.get('subject')
body = data.get('body')
to_email = data.get('to_email')
# Thông tin đăng nhập email
from_email = os.getenv('EMAIL_USER')
email_password = os.getenv('EMAIL_PASS')
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
try:
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(from_email, email_password)
text = msg.as_string()
server.sendmail(from_email, to_email, text)
server.quit()
return jsonify({"message": "Email sent successfully"})
except Exception as e:
return jsonify({"message": str(e)}), 500
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)