- 7 大维度分析器: 节奏/可舞性/能量/情绪/调性/音色/音频质量 - 6 种场景配置: pop/classical/electronic/rock/jazz/hiphop - 4 个 API: scenes/dimensions/config/evaluate - 基于 librosa 的纯算法分析(CPU 即可运行) - nginx IP 白名单认证(无 RBAC)
42 lines
1.3 KiB
Plaintext
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)
|