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