from fastapi import FastAPI, HTTPException, File, UploadFile
from fastapi.responses import FileResponse
import os
import uvicorn
import subprocess
import uuid

app = FastAPI()

@app.get("/geburtstagslied/{name}")
async def merge_audio_with_video(name: str):
    unique_string = str(uuid.uuid4())
    input_video = "Geburtstagsvideo.mp4"
    input_audio = f"{name}.mp3"
    output_file = f"{name}_{unique_string}.mp4"
    rendered_file = f"rendered/{output_file}" #kein mp4 weil schon in output
    

    try:
      cmd = [
        "ffmpeg", "-i", input_video, "-i", input_audio,
        "-map", "0:v", "-map", "1:a", "-c:v", "copy", "-shortest", rendered_file
      ]
      subprocess.run(cmd, check=True)

      return FileResponse(rendered_file, media_type="video/mp4", filename=output_file)

    except Exception as e:
      raise HTTPException(status_code=500, detail=str(e))

if __name__ == '__main__':
  uvicorn.run(app, port=8443, host='zwor.kristinawaetzel.dev',
    ssl_keyfile='/etc/letsencrypt/live/zwor.kristinawaetzel.dev/privkey.pem',
    ssl_certfile='/etc/letsencrypt/live/zwor.kristinawaetzel.dev/fullchain.pem')
