feat: add exclude scan model types (#92)

This commit is contained in:
Hayden
2025-01-13 15:15:32 +08:00
committed by GitHub
parent 14bb6f194d
commit 40a1a7f43a
6 changed files with 18 additions and 3 deletions

View File

@@ -130,7 +130,7 @@ async def list_model_types(request):
Scan all models and read their information. Scan all models and read their information.
""" """
try: try:
result = utils.resolve_model_base_paths() result = utils.resolve_model_base_paths(request)
return web.json_response({"success": True, "data": result}) return web.json_response({"success": True, "data": result})
except Exception as e: except Exception as e:
error_msg = f"Read models failed: {str(e)}" error_msg = f"Read models failed: {str(e)}"

View File

@@ -12,7 +12,8 @@ setting_key = {
"max_task_count": "ModelManager.Download.MaxTaskCount", "max_task_count": "ModelManager.Download.MaxTaskCount",
}, },
"scan": { "scan": {
"include_hidden_files": "ModelManager.Scan.IncludeHiddenFiles" "include_hidden_files": "ModelManager.Scan.IncludeHiddenFiles",
"exclude_scan_types": "ModelManager.Scan.excludeScanTypes",
}, },
} }

View File

@@ -116,10 +116,13 @@ def download_web_distribution(version: str):
print_error(f"An unexpected error occurred: {e}") print_error(f"An unexpected error occurred: {e}")
def resolve_model_base_paths(): def resolve_model_base_paths(request):
folders = list(folder_paths.folder_names_and_paths.keys()) folders = list(folder_paths.folder_names_and_paths.keys())
model_base_paths = {} model_base_paths = {}
folder_black_list = ["configs", "custom_nodes"] folder_black_list = ["configs", "custom_nodes"]
custom_folders = get_setting_value(request, "scan.exclude_scan_types", "")
custom_black_list = [f.strip() for f in custom_folders.split(",") if f.strip()]
folder_black_list.extend(custom_black_list)
for folder in folders: for folder in folders:
if folder in folder_black_list: if folder in folder_black_list:
continue continue

View File

@@ -190,6 +190,14 @@ function useAddConfigSettings(store: import('hooks/store').StoreProvider) {
}, },
}) })
app.ui?.settings.addSetting({
id: 'ModelManager.Scan.excludeScanTypes',
category: [t('modelManager'), t('setting.scan'), 'ExcludeScanTypes'],
name: t('setting.excludeScanTypes'),
defaultValue: undefined,
type: 'text',
})
app.ui?.settings.addSetting({ app.ui?.settings.addSetting({
id: 'ModelManager.Scan.IncludeHiddenFiles', id: 'ModelManager.Scan.IncludeHiddenFiles',
category: [t('modelManager'), t('setting.scan'), 'IncludeHiddenFiles'], category: [t('modelManager'), t('setting.scan'), 'IncludeHiddenFiles'],

View File

@@ -55,6 +55,7 @@ export const useModels = defineStore('models', (store) => {
const refreshAllModels = async (force = false) => { const refreshAllModels = async (force = false) => {
const forceRefresh = force ? refreshFolders() : Promise.resolve() const forceRefresh = force ? refreshFolders() : Promise.resolve()
models.value = {}
return forceRefresh.then(() => return forceRefresh.then(() =>
Promise.allSettled(Object.keys(folders.value).map(refreshModels)), Promise.allSettled(Object.keys(folders.value).map(refreshModels)),
) )

View File

@@ -45,6 +45,7 @@ const messages = {
scanMissing: 'Download missing information or preview', scanMissing: 'Download missing information or preview',
scanAll: "Override all models' information and preview", scanAll: "Override all models' information and preview",
includeHiddenFiles: 'Include hidden files(start with .)', includeHiddenFiles: 'Include hidden files(start with .)',
excludeScanTypes: 'Exclude scan types (separate with commas)',
}, },
}, },
zh: { zh: {
@@ -90,6 +91,7 @@ const messages = {
scanMissing: '下载缺失的信息或预览图片', scanMissing: '下载缺失的信息或预览图片',
scanAll: '覆盖所有模型信息和预览图片', scanAll: '覆盖所有模型信息和预览图片',
includeHiddenFiles: '包含隐藏文件(以 . 开头的文件或文件夹)', includeHiddenFiles: '包含隐藏文件(以 . 开头的文件或文件夹)',
excludeScanTypes: '排除扫描类型(使用英文逗号隔开)',
}, },
}, },
} }