haraberget's picture
Update app.py
fd06651 verified
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()