Spaces:
Sleeping
Sleeping
# downloader.py | |
import os | |
import yt_dlp | |
import gradio as gr | |
def audio_downloader(url_media: str): | |
url_media = url_media.strip() | |
if not url_media: | |
return None | |
dir_output_downloads = "downloads" | |
os.makedirs(dir_output_downloads, exist_ok=True) | |
media_info = yt_dlp.YoutubeDL({ | |
"quiet": True, | |
"no_warnings": True, | |
"noplaylist": True | |
}).extract_info(url_media, download=False) | |
download_path = f"{os.path.join(dir_output_downloads, media_info['title'])}.m4a" | |
ydl_opts = { | |
'format': 'm4a/bestaudio/best', | |
'postprocessors': [{ | |
'key': 'FFmpegExtractAudio', | |
'preferredcodec': 'm4a' | |
}], | |
'force_overwrites': True, | |
'noplaylist': True, | |
'no_warnings': True, | |
'quiet': True, | |
'ignore_no_formats_error': True, | |
'restrictfilenames': True, | |
'outtmpl': download_path | |
} | |
with yt_dlp.YoutubeDL(ydl_opts) as ydl_download: | |
ydl_download.download([url_media]) | |
return download_path | |
# Gradio downloader-related UI components | |
def downloader_conf(): | |
return gr.Checkbox(False, label="URL-to-Audio", container=False) | |
def url_media_conf(): | |
return gr.Textbox("", label="Enter URL", placeholder="www.youtube.com/watch?v=abc123", visible=False, lines=1) | |
def url_button_conf(): | |
return gr.Button("Go", variant="secondary", visible=False) | |
def show_components_downloader(value_active): | |
return gr.update(visible=value_active), gr.update(visible=value_active) | |