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