Spaces:
Running
Running
File size: 1,952 Bytes
5e107b7 9c69ffc b38db57 cb503aa ea5cc73 b38db57 6aab7cd 9c69ffc c0e2e5e b38db57 d7bc426 b38db57 d7bc426 9c69ffc b38db57 9c69ffc b38db57 9c69ffc d7bc426 5e107b7 c0e2e5e |
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import os
import gradio as gr
from yt_dlp import YoutubeDL
from pydantic import BaseModel
class Config(BaseModel):
class Config:
arbitrary_types_allowed = True
def download_reel_audio(url, output_folder="downloads"):
"""
Download audio from Instagram reel using yt-dlp
"""
try:
# Ensure output folder exists
os.makedirs(output_folder, exist_ok=True)
# Configure yt-dlp options
ydl_opts = {
'format': 'bestaudio/best',
'outtmpl': os.path.join(output_folder, '%(title)s.%(ext)s'),
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
'quiet': True,
'no_warnings': True
}
# Download the audio
with YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(url, download=True)
audio_path = os.path.join(output_folder, f"{info['title']}.mp3")
return "Audio downloaded successfully!", audio_path
except Exception as e:
return f"Error downloading audio: {str(e)}", None
# Gradio Interface
interface = gr.Interface(
fn=download_reel_audio,
inputs=gr.Textbox(
label="Instagram Reel URL",
placeholder="Enter the Instagram reel URL here (e.g., https://www.instagram.com/reel/...)"
),
outputs=[
gr.Textbox(label="Status"),
gr.Audio(label="Downloaded Audio")
],
title="Instagram Reel to Audio Downloader",
description="""
Enter the URL of an Instagram reel to download its audio as an MP3 file.
This tool uses yt-dlp which is more reliable and doesn't require authentication.
""",
theme="default",
examples=[
["https://www.instagram.com/reel/example1"],
["https://www.instagram.com/reel/example2"]
]
)
if __name__ == "__main__":
interface.launch() |