yt-player / app.py
13ze's picture
Update app.py
df532ae verified
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()