Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -3,6 +3,11 @@ import gradio as gr
|
|
3 |
from youtube_transcript_api import YouTubeTranscriptApi
|
4 |
from youtube_transcript_api._errors import TranscriptsDisabled
|
5 |
import traceback
|
|
|
|
|
|
|
|
|
|
|
6 |
|
7 |
def extract_video_id(youtube_url):
|
8 |
# Regex para extrair o ID do vídeo da URL do YouTube
|
@@ -36,11 +41,15 @@ def get_transcript(video_id, language="en"):
|
|
36 |
error_message += traceback.format_exc()
|
37 |
return error_message
|
38 |
|
39 |
-
def
|
|
|
|
|
|
|
|
|
40 |
video_id = extract_video_id(youtube_url)
|
41 |
if not video_id:
|
42 |
return "Erro: URL inválida. Por favor, insira um link válido do YouTube."
|
43 |
-
transcript =
|
44 |
return transcript
|
45 |
|
46 |
iface = gr.Interface(
|
|
|
3 |
from youtube_transcript_api import YouTubeTranscriptApi
|
4 |
from youtube_transcript_api._errors import TranscriptsDisabled
|
5 |
import traceback
|
6 |
+
import asyncio
|
7 |
+
from concurrent.futures import ThreadPoolExecutor
|
8 |
+
|
9 |
+
# Criar um executor para executar funções síncronas de forma assíncrona
|
10 |
+
executor = ThreadPoolExecutor(max_workers=4)
|
11 |
|
12 |
def extract_video_id(youtube_url):
|
13 |
# Regex para extrair o ID do vídeo da URL do YouTube
|
|
|
41 |
error_message += traceback.format_exc()
|
42 |
return error_message
|
43 |
|
44 |
+
async def async_get_transcript(video_id, language="en"):
|
45 |
+
loop = asyncio.get_event_loop()
|
46 |
+
return await loop.run_in_executor(executor, get_transcript, video_id, language)
|
47 |
+
|
48 |
+
async def gradio_interface(youtube_url, language):
|
49 |
video_id = extract_video_id(youtube_url)
|
50 |
if not video_id:
|
51 |
return "Erro: URL inválida. Por favor, insira um link válido do YouTube."
|
52 |
+
transcript = await async_get_transcript(video_id, language)
|
53 |
return transcript
|
54 |
|
55 |
iface = gr.Interface(
|