Spaces:
Running
Running
| 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() | |