Spaces:
Sleeping
Sleeping
| """Util functions to download videos from youtube.""" | |
| from glob import glob | |
| import os | |
| def download_youtube_video_pytube(video_id, save_path="."): | |
| from pytube import YouTube | |
| url = f"https://www.youtube.com/watch?v={video_id}" | |
| try: | |
| # Create a YouTube object | |
| yt = YouTube(url) | |
| # Select the highest resolution stream | |
| stream = yt.streams.get_highest_resolution() | |
| # Download the video | |
| stream.download(output_path=save_path) | |
| print(f"Downloaded: {yt.title}") | |
| except Exception as e: | |
| print(f"An error occurred: {e}") | |
| def download_youtube_video_ytdlp(video_id, save_dir="/tmp/"): | |
| import yt_dlp | |
| try: | |
| # Construct the URL using the video ID | |
| url = f"https://www.youtube.com/watch?v={video_id}" | |
| # yt-dlp options | |
| ydl_opts = { | |
| 'format': 'best', # Download the best video quality | |
| 'outtmpl': f'{save_dir}/{video_id}.%(ext)s', # Save using video ID as the filename | |
| 'noprogress': True, # Suppress progress bar | |
| } | |
| # Download the video | |
| with yt_dlp.YoutubeDL(ydl_opts) as ydl: | |
| ydl.download([url]) | |
| print(f"Downloaded video with ID: {video_id} to {save_dir}") | |
| saved_path = glob(f"{save_dir}/{video_id}.*")[0] | |
| assert os.path.exists(saved_path), f"File not found: {saved_path}" | |
| return saved_path | |
| except Exception as e: | |
| print(f"An error occurred for video ID {video_id}: {e}") | |
| if __name__ == "__main__": | |
| # Example usage | |
| # video_id = "FwZfVEuCnI4" | |
| video_id = "PCHIWN-Wi3M" | |
| # download_youtube_video(video_id) | |
| download_youtube_video_ytdlp(video_id) | |