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()