Spaces:
Paused
Paused
| import gradio as gr | |
| import yt_dlp | |
| import os | |
| import browser_cookie3 | |
| from huggingface_hub import hf_hub_download, login | |
| if "cookies.txt" not in os.listdir("."): | |
| hf_hub_download("not-lain/secrets","cookies.txt",local_dir=".",repo_type="dataset") | |
| def get_cookies(): | |
| try: | |
| # Try to get cookies from multiple browsers | |
| cookies = [] | |
| for get_cookies in [ | |
| browser_cookie3.firefox, | |
| browser_cookie3.chrome, | |
| browser_cookie3.brave, | |
| ]: | |
| try: | |
| cookies.extend([c for c in get_cookies(domain_name=".youtube.com")]) | |
| except: | |
| continue | |
| return cookies | |
| except: | |
| return None | |
| def download_video(url): | |
| try: | |
| downloads_dir = "/downloads" | |
| if not os.path.exists(downloads_dir): | |
| os.makedirs(downloads_dir, exist_ok=True) | |
| # Use a pre-provided cookies file | |
| cookie_file = "cookies.txt" | |
| cookie_args = {} | |
| if os.path.exists(cookie_file): | |
| cookie_args["cookiefile"] = cookie_file | |
| ydl_opts = { | |
| "outtmpl": os.path.join(downloads_dir, "%(title)s.%(ext)s"), | |
| "format": "mp4/bestvideo+bestaudio/best", | |
| "merge_output_format": "mp4", | |
| **cookie_args, | |
| "paths": {"home": "/downloads", "temp": "/tmp"}, | |
| } | |
| with yt_dlp.YoutubeDL(ydl_opts) as ydl: | |
| info = ydl.extract_info(url, download=True) | |
| video_path = ydl.prepare_filename(info) | |
| if os.path.exists(video_path): | |
| return f"Successfully downloaded: {info['title']}", video_path | |
| else: | |
| return f"Download completed but file not found: {info['title']}", None | |
| except Exception as e: | |
| return f"Error: {str(e)}", None | |
| iface = gr.Interface( | |
| fn=download_video, | |
| inputs=gr.Textbox(label="YouTube URL"), | |
| outputs=[gr.Textbox(label="Status"), gr.Video(label="Downloaded Video")], | |
| title="YouTube Video Downloader", | |
| description="Cookies created using the following extension : https://chromewebstore.google.com/detail/get-cookiestxt-clean/ahmnmhfbokciafffnknlekllgcnafnie?hl=en \n\nEnter a YouTube URL to download and view the video", | |
| examples=["https://www.youtube.com/watch?v=UiyDmqO59QE"], | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch(server_name="0.0.0.0", allowed_paths=["/"], server_port=7860) |