import os
import tempfile

from flask import Blueprint, request, jsonify
from src.services.transcription import transcription_service

audio_bp = Blueprint('audio', __name__)

@audio_bp.route('/audio', methods=['POST'])
def process_audio():
    """Endpoint para processar áudio e transcrever"""
    if 'audio' not in request.files:
        return jsonify({'error': 'Nenhum arquivo de áudio enviado'}), 400
    
    audio_file = request.files['audio']
    
    if not audio_file.filename:
        return jsonify({'error': 'Arquivo de áudio inválido'}), 400
    
    if len(audio_file.read()) > 10 * 1024 * 1024:  
        return jsonify({'error': 'Arquivo de áudio muito grande (máximo 10MB)'}), 400

    audio_file.seek(0)
    
    try:
        with tempfile.NamedTemporaryFile(delete=False, suffix='.wav') as tmp:
            audio_file.save(tmp.name)
            
            try:
                text = transcription_service.transcribe(tmp.name)
                
                if not text:
                    return jsonify({'error': 'Não foi possível transcrever o áudio'}), 400
                    
                return jsonify({'text': text})
            except Exception as e:
                return jsonify({'error': f'Erro ao processar áudio: {str(e)}'}), 500
            finally:
                try:
                    os.unlink(tmp.name)  
                except:
                    pass 
    except Exception as e:
        return jsonify({'error': f'Erro ao salvar arquivo de áudio: {str(e)}'}), 500 