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(
|