Spaces:
Sleeping
Sleeping
%pip install yt-dlp gradio | |
import yt_dlp | |
import gradio as gr | |
import os | |
import shutil | |
# Function to download YouTube video | |
def download_video(url): | |
try: | |
# Temporary file path to save the downloaded video | |
download_folder = 'downloads' | |
if not os.path.exists(download_folder): | |
os.makedirs(download_folder) | |
# Setting the options for yt-dlp | |
ydl_opts = { | |
'format': 'best', # best available quality | |
'noplaylist': True, # avoid downloading playlists | |
'outtmpl': os.path.join(download_folder, '%(title)s.%(ext)s'), # save in 'downloads' folder | |
} | |
# Initialize yt-dlp | |
with yt_dlp.YoutubeDL(ydl_opts) as ydl: | |
# Download the video | |
info_dict = ydl.extract_info(url, download=True) | |
video_title = info_dict.get('title', 'downloaded_video') | |
video_file_path = os.path.join(download_folder, f"{video_title}.mp4") | |
# Return the path to the downloaded video so Gradio can make it available for download | |
return video_file_path | |
except Exception as e: | |
# In case of error | |
return f"An error occurred: {e}" | |
# Create Gradio interface | |
def create_interface(): | |
# Interface Layout | |
interface = gr.Interface( | |
fn=download_video, # Function to call on submit | |
inputs=gr.Textbox(label="YouTube Video URL", placeholder="Enter the video URL here", lines=1), | |
outputs=gr.File(label="Download Your Video"), # Provide a download link | |
title="YouTube Video Downloader", # Title of the Interface | |
description="Enter a YouTube video URL to download it as an MP4 with audio included.", | |
theme="compact", # Make it compact and clean | |
) | |
return interface | |
# Run Gradio Interface | |
interface = create_interface() | |
interface.launch() |