Spaces:
Paused
Paused
Download app.py from Nymbo/All-In-One-Downloader: direct link, hf CLI and curl.
- Browser
- Download file 1.78 kB
-
https://huggingface.co/spaces/Nymbo/All-In-One-Downloader/resolve/main/app.py
- Command line
-
hf download hf://spaces/Nymbo/All-In-One-Downloader/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Nymbo/All-In-One-Downloader/resolve/main/app.py
1.78 kB
| import os | |
| import re | |
| import subprocess | |
| import tempfile | |
| import gradio as gr | |
| FORMAT_OPTS = { | |
| "mp3": ["-f", "ba/b", "-x", "--audio-format", "mp3"], # MP3 format | |
| "mp4": ["-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best", "--merge-output-format", "mp4"], # MP4 video + audio | |
| "flac": ["-f", "ba/b", "-x", "--audio-format", "flac"], # FLAC lossless audio | |
| "aac": ["-f", "ba/b", "-x", "--audio-format", "aac"], # AAC lossy high-quality audio | |
| } | |
| def fetch(url, name, ext): | |
| url = (url or "").strip() | |
| if not url.startswith(("http://", "https://")): | |
| raise gr.Error("Please enter a valid http(s) link.") | |
| name = re.sub(r"[^\w\-. ]", "_", (name or "").strip()) or "download" | |
| out_dir = tempfile.mkdtemp() | |
| filename = os.path.join(out_dir, f"{name}.{ext}") | |
| # Argument list (no shell) so the URL can't inject commands | |
| cmd = ["yt-dlp", "--no-playlist", *FORMAT_OPTS[ext], "-o", filename, url] | |
| result = subprocess.run(cmd, capture_output=True, text=True) | |
| if result.returncode != 0 or not os.path.exists(filename): | |
| err = (result.stderr or result.stdout or "").strip().splitlines() | |
| raise gr.Error("Download failed: " + (err[-1] if err else "unknown error")) | |
| return filename | |
| # Create the Gradio interface | |
| interface = gr.Interface( | |
| fn=fetch, | |
| inputs=[ | |
| gr.Textbox(label="Link Address", placeholder="Enter the URL here ..."), | |
| gr.Textbox(label="File Name", placeholder="Example: file_name"), | |
| gr.Dropdown(["mp3", "mp4", "flac", "aac"], value="mp3", label="File Type"), | |
| ], | |
| outputs=gr.File(label="Download!"), | |
| description="Download from X, Youtube, Reddit, etc..", | |
| flagging_mode="never", | |
| ) | |
| # Launch the interface | |
| interface.launch(theme="Nymbo/Nymbo_Theme") | |