Spaces:
Sleeping
Sleeping
File size: 1,738 Bytes
89df459 234649d 7c4cd6e 89df459 7c4cd6e 1badb48 7c4cd6e 234649d 7c4cd6e 234649d 89df459 7c4cd6e 1badb48 89df459 7c4cd6e 8eefd04 89df459 7c4cd6e 234649d 89df459 7c4cd6e 89df459 1badb48 7c4cd6e 89df459 80798c8 1badb48 89df459 4765650 89df459 |
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 55 56 57 58 59 60 61 62 63 |
import subprocess
import uuid
import ffmpeg
import gradio as gr
import os
import re
# Função para baixar o clipe da Twitch usando twitch-dl
def download_twitch_clip(url, auth_token):
# Gerar um UUID para o nome do arquivo
unique_id = uuid.uuid4()
output_filename = f"{unique_id}.mkv"
# Comando para baixar o vídeo
command = ["twitch-dl", "download", url, "-q", "source", "-o", output_filename]
# Adiciona o token de autenticação, se fornecido
if auth_token.strip():
command.extend(["-a", auth_token])
# Executa o comando de download
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
if process.returncode != 0:
raise Exception(f"Erro no download do vídeo: {stderr.decode('utf-8')}")
return output_filename
# Função para converter MKV para MP4 usando ffmpeg-python
def convert_to_mp4(input_file):
output_file = input_file.replace('.mkv', '.mp4')
try:
(
ffmpeg
.input(input_file)
.output(output_file, vcodec='libx264', acodec='aac')
.run(overwrite_output=True)
)
return output_file
except ffmpeg.Error as e:
print(f"Erro ao converter o arquivo: {e}")
return None
# Interface Gradio
def gradio_interface(url, auth_token=""):
mkv_file = download_twitch_clip(url, auth_token)
mp4_file = convert_to_mp4(mkv_file)
return mp4_file
iface = gr.Interface(
fn=gradio_interface,
inputs=[
gr.Textbox(label="URL do Clipe da Twitch"),
gr.Textbox(label="Token de Autenticação (opcional)")
],
outputs=gr.Video()
)
# Executar a interface
iface.launch()
|