Spaces:
Runtime error
Runtime error
File size: 1,466 Bytes
21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 2b28c21 21e6506 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import base64
import tempfile
from openai import AsyncOpenAI
from shiny.express import input, render, ui
from videoinput import audio_spinner, input_video_clip, process_video
client = AsyncOpenAI()
ui.page_opts(class_="py-5")
input_video_clip("clip")
@render.ui
async def show_clip():
clip = input.clip()
mime_type = clip["type"]
bytes = base64.b64decode(clip["bytes"])
# TODO: Use correct file extension based on mime type
with tempfile.TemporaryDirectory() as tempdir:
filename = tempfile.mktemp(dir=tempdir, suffix=get_video_extension(mime_type))
with open(filename, "wb") as file:
file.write(bytes)
file.close()
with ui.Progress() as p:
mp3_data_uri = await process_video(
client,
filename,
callback=lambda status: p.set(message=status),
)
return audio_spinner(src=mp3_data_uri)
def get_video_extension(mime_type: str) -> str:
mime_type = mime_type.split(";")[0].strip()
# Dictionary to map MIME types to file extensions
mime_to_extension = {
"video/webm": ".webm",
"video/mp4": ".mp4",
"video/ogg": ".ogv",
"video/x-matroska": ".mkv",
"video/avi": ".avi",
"video/mpeg": ".mpeg",
"video/quicktime": ".mov",
}
# Return the appropriate file extension for the given MIME type
return mime_to_extension.get(mime_type, "")
|