Dubb_YouTube_Video / Download_Video.py
Rehman1603's picture
Update Download_Video.py
fefaea3 verified
from yt_dlp import YoutubeDL
import os
import browser_cookie3
def download_video(url, download_dir=None, browser_name='chrome'):
try:
# Set download options
ydl_opts = {
'format': 'best', # Download the best quality available
'outtmpl': os.path.join(download_dir, '%(title)s.%(ext)s') if download_dir else '%(title)s.%(ext)s',
'quiet': True, # Suppress output (set to False for debugging)
}
cookies_file = None
# Extract cookies from the browser
if browser_name == 'chrome':
cookies = browser_cookie3.chrome(domain_name='youtube.com')
elif browser_name == 'firefox':
cookies = browser_cookie3.firefox(domain_name='youtube.com')
elif browser_name == 'edge':
cookies = browser_cookie3.edge(domain_name='youtube.com')
else:
raise ValueError(f"Unsupported browser: {browser_name}")
# Save cookies to a temporary file
cookies_file = 'cookies.txt'
with open(cookies_file, 'w') as f:
for cookie in cookies:
f.write(f"{cookie.name}\t{cookie.value}\t{cookie.domain}\t{cookie.path}\t{cookie.expires}\t{cookie.secure}\n")
# Add cookies to yt-dlp options
ydl_opts['cookiefile'] = cookies_file
with YoutubeDL(ydl_opts) as ydl:
info_dict = ydl.extract_info(url, download=True) # Extract video info and download
video_path = ydl.prepare_filename(info_dict) # Get the path of the downloaded file
return video_path
except Exception as e:
return f"An error occurred: {e}"
finally:
# Clean up the temporary cookies file
if os.path.exists(cookies_file):
os.remove(cookies_file)