Spaces:
Runtime error
Runtime error
import gradio as gr | |
import os | |
import subprocess | |
from pydub import AudioSegment | |
from IPython.display import Audio | |
def get_video_title(url): | |
result = subprocess.run(["yt-dlp", "--get-title", url], capture_output=True, text=True) | |
if result.returncode == 0: | |
return result.stdout.strip() | |
else: | |
return "Unknown Video" | |
def fetch(url, custom_name, ext): | |
title = get_video_title(url) | |
max_length = 50 | |
truncated_title = title[:max_length].strip() | |
filename = f"{custom_name}.{ext}" if custom_name else f"{truncated_title}.{ext}" | |
opts = { | |
"wav": ["-f", "ba", "-x", "--audio-format", "wav"], | |
"mp4": ["-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best"], | |
}[ext] | |
command = ["yt-dlp"] + opts + [url, "-o", filename] | |
subprocess.run(command) | |
return filename | |
def play_audio(output_audio): | |
audio = AudioSegment.from_file(output_audio) | |
audio.export("output.wav", format="wav") | |
gr.Interface(fn=None, live=False, outputs="audio").play("output.wav") | |
app = gr.Interface( | |
theme='Hev832/EasyAndCool', | |
fn=play_audio, | |
inputs=[ | |
gr.Textbox(label="YouTube video address", placeholder="Paste video link here..."), | |
gr.Textbox(label="File name", placeholder="Defaults to video title"), | |
gr.Dropdown(value="wav", label="Format") | |
], | |
outputs=None, | |
description="<div style='font-size:30px; text-align:center;'>YouTube Audio Player</div>" | |
) | |
app.launch(debug=True, share=True) | |