fragmenta / stable-audio-tools /custom_metadata.py
MazCodes's picture
Upload folder using huggingface_hub
63f0b06 verified
import json
import os
import logging
logging.basicConfig(level=logging.WARNING)
def _load_metadata():
metadata = {}
project_root = os.path.join(os.path.dirname(__file__), '..')
# Primary location: <project_root>/data/metadata.json (where the UI saves it)
primary_path = os.path.join(project_root, 'data', 'metadata.json')
# Legacy fallback: <project_root>/app/backend/data/metadata.json
legacy_path = os.path.join(project_root, 'app', 'backend', 'data', 'metadata.json')
json_path = primary_path if os.path.isfile(primary_path) else legacy_path
try:
with open(json_path, 'r') as jsonfile:
metadata_list = json.load(jsonfile)
for item in metadata_list:
metadata[item['file_name']] = item['prompt']
except FileNotFoundError:
logging.warning(f"Metadata file not found at {primary_path} or {legacy_path}")
except Exception as e:
logging.warning(f"Error loading metadata: {e}")
return metadata
def get_custom_metadata(info, audio):
metadata = _load_metadata()
actual_filename = info.get("filename") or os.path.basename(info["relpath"])
if actual_filename in metadata:
prompt = metadata[actual_filename]
else:
logging.warning(
f"Filename {actual_filename} not found in metadata JSON. Using empty prompt.")
prompt = ""
return {"prompt": prompt}