|
|
import gradio as gr |
|
|
import yt_dlp |
|
|
|
|
|
def get_cookie_path(url): |
|
|
if "facebook.com" in url or "fb.watch" in url or "instagram.com" in url: |
|
|
return "cookies-fb.txt" |
|
|
else: |
|
|
return "cookies-yt.txt" |
|
|
|
|
|
def get_video_url(url): |
|
|
try: |
|
|
cookie_file = get_cookie_path(url) |
|
|
ydl_opts = { |
|
|
'format': 'best[ext=mp4]/best', |
|
|
'noplaylist': True, |
|
|
'cookiefile': cookie_file, |
|
|
'quiet': True, |
|
|
'skip_download': True, |
|
|
} |
|
|
|
|
|
with yt_dlp.YoutubeDL(ydl_opts) as ydl: |
|
|
info = ydl.extract_info(url, download=False) |
|
|
video_url = info.get("url", None) |
|
|
title = info.get("title", "Video") |
|
|
|
|
|
if video_url: |
|
|
return f'<a href="{video_url}" target="_blank" download="{title}.mp4">Click Here to Download</a>' |
|
|
else: |
|
|
return "❌ Could not retrieve the video URL." |
|
|
|
|
|
except Exception as e: |
|
|
return f"❌ Error: {str(e)}" |
|
|
|
|
|
app = gr.Interface( |
|
|
fn=get_video_url, |
|
|
inputs=gr.Textbox(label="Enter Video URL"), |
|
|
outputs=gr.HTML(label="Download Link"), |
|
|
title="Universal Video Downloader", |
|
|
description="Paste a video URL from YouTube, Instagram, or Facebook and get a direct MP4 download link.\nMake sure your cookies are up to date.", |
|
|
theme="compact" |
|
|
) |
|
|
|
|
|
app.launch() |