import gradio as gr from pytube import Playlist, YouTube import os def download_audio(url): playlist = Playlist(url) audio_files = [] for video_url in playlist.video_urls: yt = YouTube(video_url) stream = yt.streams.filter(only_audio=True).first() audio_file = stream.download(output_path=".", filename=f"{yt.title}.mp3") audio_files.append(audio_file) return audio_files def create_player(url): audio_files = download_audio(url) return audio_files, audio_files[0] if audio_files else None with gr.Blocks() as demo: with gr.Row(): url_input = gr.Textbox(label="YouTube Playlist URL") submit_button = gr.Button("Load Playlist") with gr.Row(): track_dropdown = gr.Dropdown(label="Select a track") audio_player = gr.Audio() def update_player(url): audio_files, first_audio = create_player(url) track_dropdown.update(choices=audio_files) audio_player.update(value=first_audio) return audio_files, first_audio submit_button.click(update_player, inputs=url_input, outputs=[track_dropdown, audio_player]) demo.launch()