|
import subprocess |
|
import uuid |
|
import gradio as gr |
|
from youtube_dl import YoutubeDL |
|
|
|
title_and_description = """ |
|
# Twitch Clip Downloader |
|
Created by [@artificialguybr](https://artificialguy.com) |
|
|
|
Enter the Twitch Clip URL and (optionally) an authentication token to download Twitch clips in MP4 format. |
|
|
|
## Features |
|
- **Easy to Use**: Simple interface for inputting Twitch clip URLs and optional authentication tokens. |
|
- **High-Quality Video**: Downloads in the best available quality in MP4 format. |
|
- **Unique File Naming**: Utilizes UUIDs to generate unique file names, avoiding any file overwrite issues. |
|
|
|
Feel free to use and generate your own video clips! |
|
""" |
|
|
|
|
|
def download_twitch_clip(url): |
|
unique_id = uuid.uuid4() |
|
output_filename = f"{unique_id}.mp4" |
|
ydl_opts = { |
|
'format': 'best[ext=mp4]', |
|
'outtmpl': output_filename |
|
} |
|
|
|
with YoutubeDL(ydl_opts) as ydl: |
|
ydl.download([url]) |
|
|
|
return output_filename |
|
|
|
|
|
def gradio_interface(url): |
|
mp4_file = download_twitch_clip(url) |
|
return mp4_file, mp4_file |
|
|
|
with gr.Blocks() as app: |
|
gr.Markdown(title_and_description) |
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
result_video = gr.Video(label="Video Output") |
|
download_link = gr.File(label="Download MP4") |
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
url_input = gr.Textbox(label="Twitch Clip URL") |
|
run_btn = gr.Button("Download Clip") |
|
|
|
run_btn.click( |
|
gradio_interface, |
|
inputs=[url_input], |
|
outputs=[result_video, download_link] |
|
) |
|
|
|
app.queue() |
|
app.launch() |
|
|