sunnynazir's picture
Create app.py
2881c06 verified
import os
import shutil
import subprocess
import gradio as gr
from tkinter import Tk, filedialog
from groq import Groq
# Function to check if yt-dlp is installed
def check_yt_dlp_installed():
"""
Checks if yt-dlp is installed and available.
"""
if not shutil.which("yt-dlp"):
subprocess.run(["pip", "install", "yt-dlp"], check=True)
# Function to download YouTube video
def download_youtube_video_yt_dlp(url, save_path):
"""
Downloads a YouTube video using yt-dlp in MP4 format and saves it to the specified directory.
"""
if not os.path.exists(save_path):
os.makedirs(save_path) # Create the directory if it doesn't exist
try:
command = [
"yt-dlp",
"-f", "mp4", # Download in mp4 format
"-o", f"{save_path}/%(title)s.%(ext)s", # Save with video title and extension
url
]
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
if result.returncode == 0:
return f"Video downloaded successfully in MP4 format and saved in {save_path}."
else:
return f"An error occurred:\n{result.stderr}"
except Exception as e:
return f"An unexpected error occurred: {e}"
# Function to open a folder selection dialog
def get_download_directory():
"""
Opens a folder selection dialog and returns the chosen directory.
"""
root = Tk()
root.withdraw() # Hide the main window
folder_selected = filedialog.askdirectory(title="Select the folder to save the video")
if folder_selected:
return folder_selected
else:
return None
# Gradio Interface Function
def download_video(url):
# Check if yt-dlp is installed
check_yt_dlp_installed()
# Get the folder to save the video
download_directory = get_download_directory()
if download_directory is None:
return "No folder selected. Please select a folder."
# Call the function to download the video and return the result
result = download_youtube_video_yt_dlp(url, download_directory)
return result
# Gradio Interface with instructions
interface = gr.Interface(
fn=download_video,
inputs=gr.Textbox(label="Enter YouTube URL"),
outputs=gr.Textbox(label="Download Status"),
live=True,
title="YouTube Video Downloader",
description="Enter a YouTube video URL, select the folder where you want to save the video, and it will download in MP4 format. Ensure 'yt-dlp' is installed on the system.",
theme="compact",
allow_flagging="never"
)
# Launch the interface
if __name__ == "__main__":
interface.launch()