CoolFace
Apppublic

arcanus/koala2

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
server2.py83 linesDownload Raw Back to root
1from flask_cors import CORS2import os3from flask import Flask, render_template, request, jsonify, Response, stream_with_context4from app_rvc import SoniTranslate  # Importuj SoniTranslate z app_rvc.py5import queue6import threading7import logging8 9app = Flask(__name__, template_folder="templates", static_folder="static")10CORS(app)11 12# Ujisti se, že adresář existuje13UPLOAD_FOLDER = "uploads"14if not os.path.exists(UPLOAD_FOLDER):15    os.makedirs(UPLOAD_FOLDER)16 17# Fronta pro logy18log_queue = queue.Queue()19 20def log_message(message):21    """Přidá zprávu do fronty logů."""22    log_queue.put(message)23 24# Přesměrování logování z knihovny SoniTranslate25class QueueLoggingHandler(logging.Handler):26    def emit(self, record):27        log_message(self.format(record))28 29logging.basicConfig(level=logging.INFO)30logger = logging.getLogger("SoniTranslate")31logger.addHandler(QueueLoggingHandler())32 33@app.route("/")34def index():35    return render_template("index.html")36 37@app.route("/logs")38def stream_logs():39    """Endpoint pro streamování logů."""40    def event_stream():41        while True:42            message = log_queue.get()  # Získání zprávy z fronty43            yield f"data: {message}\n\n"44 45    return Response(stream_with_context(event_stream()), content_type="text/event-stream")46 47@app.route("/process_video", methods=["POST"])48def process_video():49    file = request.files["video"]50    target_language = request.form["target_language"]51 52    # Ulož dočasný soubor53    file_path = os.path.join(UPLOAD_FOLDER, file.filename)54    file.save(file_path)55 56    try:57        log_message("[INFO] >> Starting video processing...")58        translator = SoniTranslate(cpu_mode=False)59 60        # Spuštění zpracování v jiném vlákně61        def process():62            try:63                log_message("[INFO] >> Processing video...")64                result = translator.multilingual_media_conversion(65                    media_file=file_path,66                    target_language=target_language,67                    is_gui=False,68                )69                log_message(f"[INFO] >> Processing completed. Result: {result}")70            except Exception as e:71                log_message(f"[ERROR] >> {str(e)}")72            finally:73                os.remove(file_path)74 75        threading.Thread(target=process).start()76        return jsonify({"status": "processing", "message": "Processing started."})77    except Exception as e:78        return jsonify({"status": "error", "message": str(e)})79 80if __name__ == "__main__":81    app.run(host="0.0.0.0", port=5000, debug=True)82 83