Spaces:
Runtime error
Runtime error
import yt_dlp as youtube_dl | |
import requests | |
def download_mp3_yt_dlp(youtube_url): | |
# Set up yt-dlp options | |
ydl_opts = { | |
'format': 'bestaudio/best', | |
'postprocessors': [{ | |
'key': 'FFmpegExtractAudio', | |
'preferredcodec': 'mp3', | |
'preferredquality': '192', | |
}], | |
'outtmpl': 'downloaded_video.%(ext)s', | |
'quiet': False, | |
'no_warnings': True, | |
'progress_hooks': [lambda d: print(f"Downloading {d['filename']}: {d['_percent_str']}")], | |
} | |
# Extract video info including title and thumbnail | |
with youtube_dl.YoutubeDL() as ydl: | |
info_dict = ydl.extract_info(youtube_url, download=False) | |
title = info_dict.get('title', 'Unknown Title') | |
thumbnail_url = info_dict.get('thumbnail', None) | |
# Download the MP3 using yt-dlp | |
with youtube_dl.YoutubeDL(ydl_opts) as ydl: | |
ydl.download([youtube_url]) | |
# Fetch the thumbnail for display | |
if thumbnail_url: | |
response = requests.get(thumbnail_url) | |
if response.status_code == 200: | |
with open('thumbnail.jpg', 'wb') as f: | |
f.write(response.content) | |
print(f"Thumbnail downloaded successfully.") | |
else: | |
print(f"Failed to download thumbnail. HTTP Status Code: {response.status_code}") | |
# Return the title and thumbnail URL | |
return title, thumbnail_url | |
# Example usage: | |
# youtube_url = "https://youtu.be/MAZyQ-38b8M?si=q0dai-wF6FQz6MGN" | |
# title, thumbnail_url = download_mp3_yt_dlp(youtube_url) | |
# print(f"Title: {title}") | |
# print(f"Thumbnail: {thumbnail_url}") | |