Update app.py
Browse files
app.py
CHANGED
|
@@ -46,7 +46,39 @@ if not OPENAI_API_KEY:
|
|
| 46 |
|
| 47 |
openai.api_key = OPENAI_API_KEY
|
| 48 |
|
| 49 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
app.layout = dbc.Container([
|
| 52 |
dbc.Row([
|
|
|
|
| 46 |
|
| 47 |
openai.api_key = OPENAI_API_KEY
|
| 48 |
|
| 49 |
+
# Add this function definition after the other helper functions and before the app layout
|
| 50 |
+
|
| 51 |
+
def process_media(contents, filename, url):
|
| 52 |
+
logger.info("Starting media processing")
|
| 53 |
+
try:
|
| 54 |
+
if contents:
|
| 55 |
+
content_type, content_string = contents.split(',')
|
| 56 |
+
decoded = base64.b64decode(content_string)
|
| 57 |
+
suffix = os.path.splitext(filename)[1]
|
| 58 |
+
with tempfile.NamedTemporaryFile(delete=False, suffix=suffix) as temp_file:
|
| 59 |
+
temp_file.write(decoded)
|
| 60 |
+
temp_file_path = temp_file.name
|
| 61 |
+
logger.info(f"File uploaded: {temp_file_path}")
|
| 62 |
+
elif url:
|
| 63 |
+
temp_file_path = download_media(url)
|
| 64 |
+
else:
|
| 65 |
+
logger.error("No input provided")
|
| 66 |
+
raise ValueError("No input provided")
|
| 67 |
+
|
| 68 |
+
if temp_file_path.lower().endswith(('.mp4', '.avi', '.mov', '.flv', '.wmv')):
|
| 69 |
+
logger.info("Video file detected, extracting audio")
|
| 70 |
+
audio_file_path = extract_audio(temp_file_path)
|
| 71 |
+
transcript = transcribe_audio(audio_file_path)
|
| 72 |
+
os.unlink(audio_file_path)
|
| 73 |
+
else:
|
| 74 |
+
logger.info("Audio file detected, transcribing directly")
|
| 75 |
+
transcript = transcribe_audio(temp_file_path)
|
| 76 |
+
|
| 77 |
+
os.unlink(temp_file_path)
|
| 78 |
+
return transcript
|
| 79 |
+
except Exception as e:
|
| 80 |
+
logger.error(f"Error in process_media: {str(e)}")
|
| 81 |
+
raise
|
| 82 |
|
| 83 |
app.layout = dbc.Container([
|
| 84 |
dbc.Row([
|