Spaces:
Sleeping
Sleeping
| import os, io, requests, gradio as gr | |
| from huggingface_hub import HfApi | |
| TOKEN = os.environ.get("HF_TOKEN", "") | |
| DEST_REPO = "Joker5514/models" | |
| DEST_TYPE = "dataset" | |
| MODELS = [ | |
| {"filename": "rnnoise_suppressor.onnx", | |
| "url": "https://huggingface.co/niobures/RNNoise/resolve/main/models/rnnoise.onnx", | |
| "min_bytes": 100_000}, | |
| {"filename": "demucs_v4_quantized.onnx", | |
| "url": "https://huggingface.co/MrCitron/demucs-v4-onnx/resolve/main/htdemucs.onnx", | |
| "fallback": "https://huggingface.co/timcsy/demucs-web-onnx/resolve/main/demucs.onnx", | |
| "min_bytes": 10_000_000}, | |
| {"filename": "bsrnn_vocals.onnx", | |
| "url": "https://huggingface.co/facebook/bsrnn/resolve/main/bsrnn_vocals.onnx", | |
| "fallback": "https://huggingface.co/Randell/bsrnn-onnx/resolve/main/bsrnn_vocals.onnx", | |
| "min_bytes": 5_000_000}, | |
| ] | |
| def upload_models(): | |
| if not TOKEN: return "ERROR: HF_TOKEN not set" | |
| api = HfApi(token=TOKEN) | |
| results = [] | |
| for m in MODELS: | |
| try: | |
| try: | |
| r = requests.get(m["url"], timeout=300); r.raise_for_status(); data = r.content | |
| if len(data) < m["min_bytes"]: raise ValueError("too small") | |
| src = m["url"] | |
| except: | |
| r = requests.get(m.get("fallback", m["url"]), timeout=300); r.raise_for_status(); data = r.content | |
| src = m.get("fallback", m["url"]) | |
| api.upload_file(path_or_fileobj=io.BytesIO(data), path_in_repo=m["filename"], | |
| repo_id=DEST_REPO, repo_type=DEST_TYPE, | |
| commit_message=f"Upload real ONNX: {m['filename']} ({len(data):,} bytes)") | |
| results.append(f"SUCCESS {m['filename']} ({len(data)/1e6:.1f} MB) from {src}") | |
| except Exception as e: | |
| results.append(f"FAILED {m['filename']}: {e}") | |
| return "\n\n".join(results) | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# ONNX Model Uploader\nDownloads real models and uploads to Joker5514/models") | |
| gr.Button("Upload Real ONNX Models", variant="primary").click(upload_models, outputs=gr.Textbox(lines=15)) | |
| demo.launch() |