File size: 1,163 Bytes
43135e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
df532ae
43135e4
 
 
 
 
 
 
 
 
 
df532ae
 
 
 
 
 
 
43135e4
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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()