jaxmetaverse's picture
Upload folder using huggingface_hub
82ea528 verified
from aiohttp import web
from werkzeug.utils import secure_filename
import os
import folder_paths
@web.middleware
async def cors_middleware(request, handler):
response = await handler(request)
response.headers['Access-Control-Allow-Origin'] = '*'
return response
async def upload_audio(request):
try:
data = await request.post()
file = data['files[]'] # Match the JS formData key
if not file:
return web.json_response({"error": "No file provided"}, status=400)
# Save to input directory
filename = secure_filename(file.filename)
save_path = os.path.join(folder_paths.get_input_directory(), filename)
# Ensure the file has a valid audio extension
valid_extensions = ['.wav', '.mp3', '.ogg', '.m4a', '.flac']
if not any(filename.lower().endswith(ext) for ext in valid_extensions):
return web.json_response({"error": "Invalid audio file type"}, status=400)
# Save the file
with open(save_path, 'wb') as f:
f.write(file.file.read())
return web.json_response({"path": save_path})
except Exception as e:
print(f"Error saving audio file: {e}")
return web.json_response({"error": str(e)}, status=500)
# Add routes to the server
def setup_routes(app):
app.router.add_post("/upload/audio", upload_audio)
app.middlewares.append(cors_middleware)
@PromptServer.instance.routes.post("/memo/validate_audio")
async def validate_audio(request):
try:
data = await request.json()
file_path = data.get("path", "")
if not file_path:
return web.json_response({"valid": False, "error": "No path provided"})
# Check if path exists and is a valid audio file
if os.path.isfile(file_path):
ext = os.path.splitext(file_path)[1].lower()
if ext in ['.wav', '.mp3', '.ogg', '.m4a', '.flac']:
return web.json_response({"valid": True, "path": file_path})
return web.json_response({"valid": False, "error": "Invalid audio file"})
except Exception as e:
return web.json_response({"valid": False, "error": str(e)})