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