songrate/wwwroot/api/config.dspy
yumoqing 44a2ac9bb7 feat: songrate 初始版本 - 音乐多维度评估系统
- 7 大维度分析器: 节奏/可舞性/能量/情绪/调性/音色/音频质量
- 6 种场景配置: pop/classical/electronic/rock/jazz/hiphop
- 4 个 API: scenes/dimensions/config/evaluate
- 基于 librosa 的纯算法分析(CPU 即可运行)
- nginx IP 白名单认证(无 RBAC)
2026-06-03 18:01:08 +08:00

42 lines
1.3 KiB
Plaintext

"""GET /api/config.dspy — 获取/设置场景权重配置"""
import json
from songrate.scenes import get_scene_config, set_scene_config, SCENES
scene = params_kw.get('scene', '')
# POST: 设置权重
if params_kw.get('weights'):
weights = params_kw['weights']
if isinstance(weights, str):
weights = json.loads(weights)
if not scene:
return json.dumps({"error": "缺少 scene 参数"}, ensure_ascii=False)
if set_scene_config(scene, weights):
return json.dumps({"success": True, "scene": scene, "weights": weights}, ensure_ascii=False)
else:
return json.dumps({"error": "设置失败,请检查场景名和权重总和是否为 1.0"}, ensure_ascii=False)
# GET: 获取配置
if not scene:
# 返回所有场景的配置
result = {}
for key in SCENES:
config = get_scene_config(key)
result[key] = {
"name": config["name"],
"weights": config["weights"]
}
return json.dumps(result, ensure_ascii=False)
config = get_scene_config(scene)
if not config:
return json.dumps({"error": f"未知场景: {scene}"}, ensure_ascii=False)
return json.dumps({
"scene": scene,
"name": config["name"],
"weights": config["weights"]
}, ensure_ascii=False)