import os
from flask import Flask, request, render_template
from datetime import timedelta
import openai

flask_app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>hello, world!</p>"




flask_app.config['UPLOAD_FOLDER'] = 'uploads'

openai.api_key = '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'

def format_timestamp(seconds):
    return str(timedelta(seconds=int(seconds)))[2:7]  # MM:SS format

@flask_app.route('/transcribe', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files.get('file')
        if not file or file.filename == '':
            return "No file uploaded", 400

        filepath = os.path.join(flask_app.config['UPLOAD_FOLDER'], file.filename)
        file.save(filepath)

        with open(filepath, 'rb') as audio_file:
            transcript = openai.audio.transcriptions.create(
                file=audio_file,
                model="whisper-1",
                response_format="verbose_json",
                timestamp_granularity="segment"
            )

        result = []
        for segment in transcript['segments']:
            start = format_timestamp(segment['start'])
            result.append(f"[{start}]: {segment['text'].strip()}")

        return "<br>".join(result)

    return render_template('upload.html')

# Mount under /transcribe using DispatcherMiddleware
from werkzeug.middleware.dispatcher import DispatcherMiddleware
from flask import Flask as BaseApp
application = DispatcherMiddleware(BaseApp('dummy'), {
    '/transcribe': flask_app
})

