File size: 2,031 Bytes
5e107b7
9c69ffc
b38db57
6c44d5c
b38db57
 
0880b7d
b38db57
6aab7cd
0880b7d
 
9c69ffc
0880b7d
b38db57
 
 
 
 
 
 
 
 
0880b7d
b38db57
0880b7d
 
 
 
 
b38db57
 
 
0880b7d
 
 
6c44d5c
b38db57
d7bc426
b38db57
 
d7bc426
9c69ffc
 
b38db57
 
 
0880b7d
b38db57
9c69ffc
 
 
 
 
0880b7d
6c44d5c
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
import os
import gradio as gr
from yt_dlp import YoutubeDL

def download_reel_audio(url, output_folder="downloads"):
    """
    Download audio from Instagram reel using yt-dlp without requiring cookies
    """
    try:
        # Clean URL and create output directory
        clean_url = url.split('?')[0].strip()
        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',
            }],
            'restrictfilenames': True,
            'quiet': True,
            'headers': {
                'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1',
                'Referer': 'https://www.instagram.com/',
                'Accept-Language': 'en-US,en;q=0.9',
            }
        }

        with YoutubeDL(ydl_opts) as ydl:
            info = ydl.extract_info(clean_url, download=True)
            base_path = ydl.prepare_filename(info)
            audio_path = os.path.splitext(base_path)[0] + '.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 public Instagram reel URL (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 URL of a public Instagram reel to download its audio as MP3",
    theme="default"
)

if __name__ == "__main__":
    interface.launch()