fix(plugin-dirs): remove het dir - rescan khong con VST trong thu muc mac dinh (authoritative user dirs, khong fallback default khi da luu rong; list_scan_all/_scan_plugins chi scan dir user khai)
This commit is contained in:
+15
-3
@@ -69,7 +69,19 @@ def _effective_dirs() -> dict:
|
||||
plugin_dirs = [d for d in (user.get("plugin_dirs") or []) if d]
|
||||
vst_dir = settings.VST_DIR
|
||||
soundfont_dir = settings.SOUNDFONT_DIR
|
||||
# Backward compat: file cũ lưu vst_dir/soundfont_dir riêng → gộp vào list.
|
||||
# User ĐÃ lưu plugin_dirs (kể cả [] — xóa hết dir) → dùng ĐÚNG danh sách
|
||||
# đó, KHÔNG fallback default: nếu fallback, remove hết dir rồi re-scan
|
||||
# vẫn còn VST trong thư mục mặc định (vd C:\Program Files\Common Files\
|
||||
# VST3 → iZotope Ozone Pro load fail 0x7E vẫn hiện trong MASTERING PANEL).
|
||||
if "plugin_dirs" in user:
|
||||
return {
|
||||
"plugin_dirs": plugin_dirs,
|
||||
"vst_dir": vst_dir,
|
||||
"soundfont_dir": soundfont_dir,
|
||||
"plugin_dirs_user_set": True,
|
||||
}
|
||||
# Chưa từng lưu → backward compat (file cũ lưu vst_dir/soundfont_dir
|
||||
# riêng) → gộp vào list; không có gì → fallback default env.
|
||||
if not plugin_dirs:
|
||||
if user.get("vst_dir"):
|
||||
plugin_dirs.append(user["vst_dir"])
|
||||
@@ -81,7 +93,7 @@ def _effective_dirs() -> dict:
|
||||
"plugin_dirs": plugin_dirs,
|
||||
"vst_dir": vst_dir,
|
||||
"soundfont_dir": soundfont_dir,
|
||||
"plugin_dirs_user_set": bool(user.get("plugin_dirs")),
|
||||
"plugin_dirs_user_set": False,
|
||||
}
|
||||
|
||||
class DirsRequest(BaseModel):
|
||||
@@ -184,7 +196,7 @@ def get_scanner():
|
||||
@router.get("/available")
|
||||
async def list_plugins(current_user: dict = Depends(get_current_user)):
|
||||
d = _effective_dirs()
|
||||
pm = PluginManager(vst_dir=d["vst_dir"], sf_dir=d["soundfont_dir"], upload_sf_dir=UPLOAD_SF_DIR, extra_vst_dirs=d["plugin_dirs"])
|
||||
pm = PluginManager(vst_dir=d["vst_dir"], sf_dir=d["soundfont_dir"], upload_sf_dir=UPLOAD_SF_DIR, extra_vst_dirs=d["plugin_dirs"], user_dirs_override=d.get("plugin_dirs_user_set", False))
|
||||
avail = pm.list_available()
|
||||
# Modal chọn instrument (nút Synth TCP) chỉ hiện soundfont + VSTi — loại
|
||||
# VST FX (Ozone/Sonible/...) khỏi vst_instruments theo is_fx của bridge scan.
|
||||
|
||||
Reference in New Issue
Block a user