File size: 1,112 Bytes
f2293ee
 
fd06651
f2293ee
fd06651
 
 
 
 
 
 
 
 
 
 
 
 
f2293ee
 
fd06651
 
 
 
 
 
 
 
 
 
 
 
f2293ee
 
fd06651
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
import gradio as gr

def convert_suno_to_mp3(url: str):
    """
    Convert a Suno song URL to the direct MP3 link.
    Example:
    https://suno.com/song/c0cdb3ad-f49d-4125-8e16-4d7dd7924a02?sh=...
    ->
    https://cdn1.suno.ai/c0cdb3ad-f49d-4125-8e16-4d7dd7924a02.mp3
    """
    import re
    match = re.search(r'suno\.com/song/([a-f0-9\-]+)', url)
    if not match:
        return "Invalid Suno URL", None
    song_id = match.group(1)
    mp3_url = f"https://cdn1.suno.ai/{song_id}.mp3"
    return mp3_url, mp3_url  # first is displayed, second is downloadable link

with gr.Blocks() as demo:
    gr.Markdown("## Suno Song → Direct MP3 Converter")
    
    with gr.Row():
        song_input = gr.Textbox(label="Enter Suno song URL", placeholder="https://suno.com/song/...")
        mp3_output = gr.Textbox(label="MP3 URL")
        download_btn = gr.File(label="Download MP3")
    
    def update(url):
        mp3_link, downloadable = convert_suno_to_mp3(url)
        return mp3_link, downloadable
    
    song_input.change(update, inputs=song_input, outputs=[mp3_output, download_btn])

demo.launch()