Spaces:
Running
Running
| """ | |
| Model management: list, download, upload. | |
| """ | |
| import os | |
| import shutil | |
| import zipfile | |
| from pathlib import Path | |
| from .config import MODELS_DIR, BUILTIN_MODELS, logger | |
| os.makedirs(MODELS_DIR, exist_ok=True) | |
| def list_models() -> list: | |
| """Return list of available model names (built-in + custom).""" | |
| models = set(BUILTIN_MODELS.keys()) | |
| for item in os.listdir(MODELS_DIR): | |
| if os.path.isdir(os.path.join(MODELS_DIR, item)): | |
| models.add(item) | |
| elif item.endswith(".pth"): | |
| models.add(item.replace(".pth", "")) | |
| return sorted(models) | |
| def startup_downloads() -> str: | |
| """Download built-in models if not present. Returns first model name.""" | |
| logger.info("Checking built-in models...") | |
| # Implemente o download real se necessário | |
| return list_models()[0] if list_models() else "" | |
| def download_demucs_model() -> None: | |
| """Ensure Demucs model is cached (optional).""" | |
| try: | |
| subprocess.run([ | |
| "python3", "-m", "demucs.separate", | |
| "--two-stems=vocals", "-n", "htdemucs", | |
| "-d", "cpu", "--help" | |
| ], capture_output=True, check=True) | |
| logger.info("Demucs model check passed") | |
| except Exception as e: | |
| logger.warning(f"Demucs model not yet cached: {e}") |