mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-21 21:22:11 -03:00
feat(metadata): update metadata archive management and remove provider priority settings
This commit is contained in:
@@ -16,7 +16,9 @@
|
||||
"loading": "Wird geladen...",
|
||||
"unknown": "Unbekannt",
|
||||
"date": "Datum",
|
||||
"version": "Version"
|
||||
"version": "Version",
|
||||
"enabled": "Aktiviert",
|
||||
"disabled": "Deaktiviert"
|
||||
},
|
||||
"language": {
|
||||
"select": "Sprache",
|
||||
@@ -178,7 +180,8 @@
|
||||
"folderSettings": "Ordner-Einstellungen",
|
||||
"downloadPathTemplates": "Download-Pfad-Vorlagen",
|
||||
"exampleImages": "Beispielbilder",
|
||||
"misc": "Verschiedenes"
|
||||
"misc": "Verschiedenes",
|
||||
"metadataArchive": "Metadaten-Archiv-Datenbank"
|
||||
},
|
||||
"contentFiltering": {
|
||||
"blurNsfwContent": "NSFW-Inhalte unscharf stellen",
|
||||
@@ -273,6 +276,30 @@
|
||||
"misc": {
|
||||
"includeTriggerWords": "Trigger Words in LoRA-Syntax einschließen",
|
||||
"includeTriggerWordsHelp": "Trainierte Trigger Words beim Kopieren der LoRA-Syntax in die Zwischenablage einschließen"
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "Metadaten-Archiv-Datenbank aktivieren",
|
||||
"enableArchiveDbHelp": "Verwenden Sie eine lokale Datenbank, um auf Metadaten von Modellen zuzugreifen, die von Civitai gelöscht wurden.",
|
||||
"status": "Status",
|
||||
"statusAvailable": "Verfügbar",
|
||||
"statusUnavailable": "Nicht verfügbar",
|
||||
"enabled": "Aktiviert",
|
||||
"management": "Datenbankverwaltung",
|
||||
"managementHelp": "Laden Sie die Metadaten-Archiv-Datenbank herunter oder entfernen Sie sie",
|
||||
"downloadButton": "Datenbank herunterladen",
|
||||
"downloadingButton": "Wird heruntergeladen...",
|
||||
"downloadedButton": "Heruntergeladen",
|
||||
"removeButton": "Datenbank entfernen",
|
||||
"removingButton": "Wird entfernt...",
|
||||
"downloadSuccess": "Metadaten-Archiv-Datenbank erfolgreich heruntergeladen",
|
||||
"downloadError": "Fehler beim Herunterladen der Metadaten-Archiv-Datenbank",
|
||||
"removeSuccess": "Metadaten-Archiv-Datenbank erfolgreich entfernt",
|
||||
"removeError": "Fehler beim Entfernen der Metadaten-Archiv-Datenbank",
|
||||
"removeConfirm": "Sind Sie sicher, dass Sie die Metadaten-Archiv-Datenbank entfernen möchten? Dadurch wird die lokale Datenbankdatei gelöscht und Sie müssen sie erneut herunterladen, um diese Funktion zu nutzen.",
|
||||
"preparing": "Download wird vorbereitet...",
|
||||
"connecting": "Verbindung zum Download-Server wird hergestellt...",
|
||||
"completed": "Abgeschlossen",
|
||||
"downloadComplete": "Download erfolgreich abgeschlossen"
|
||||
}
|
||||
},
|
||||
"loras": {
|
||||
|
||||
@@ -279,16 +279,11 @@
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "Enable Metadata Archive Database",
|
||||
"enableArchiveDbHelp": "Use local database for faster metadata retrieval and access to deleted models. Recommended for better performance.",
|
||||
"providerPriority": "Metadata Provider Priority",
|
||||
"providerPriorityHelp": "Choose which metadata source to try first when loading model information",
|
||||
"priorityArchiveDb": "Archive Database (Recommended)",
|
||||
"priorityCivitaiApi": "Civitai API",
|
||||
"enableArchiveDbHelp": "Use a local database to access metadata for models that have been deleted from Civitai.",
|
||||
"status": "Status",
|
||||
"statusAvailable": "Available",
|
||||
"statusUnavailable": "Not Available",
|
||||
"enabled": "Enabled",
|
||||
"currentPriority": "Current Priority",
|
||||
"management": "Database Management",
|
||||
"managementHelp": "Download or remove the metadata archive database",
|
||||
"downloadButton": "Download Database",
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
"loading": "Cargando...",
|
||||
"unknown": "Desconocido",
|
||||
"date": "Fecha",
|
||||
"version": "Versión"
|
||||
"version": "Versión",
|
||||
"enabled": "Habilitado",
|
||||
"disabled": "Deshabilitado"
|
||||
},
|
||||
"language": {
|
||||
"select": "Idioma",
|
||||
@@ -178,7 +180,8 @@
|
||||
"folderSettings": "Configuración de carpetas",
|
||||
"downloadPathTemplates": "Plantillas de rutas de descarga",
|
||||
"exampleImages": "Imágenes de ejemplo",
|
||||
"misc": "Varios"
|
||||
"misc": "Varios",
|
||||
"metadataArchive": "Base de datos de archivo de metadatos"
|
||||
},
|
||||
"contentFiltering": {
|
||||
"blurNsfwContent": "Difuminar contenido NSFW",
|
||||
@@ -273,6 +276,30 @@
|
||||
"misc": {
|
||||
"includeTriggerWords": "Incluir palabras clave en la sintaxis de LoRA",
|
||||
"includeTriggerWordsHelp": "Incluir palabras clave entrenadas al copiar la sintaxis de LoRA al portapapeles"
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "Habilitar base de datos de archivo de metadatos",
|
||||
"enableArchiveDbHelp": "Utiliza una base de datos local para acceder a metadatos de modelos que han sido eliminados de Civitai.",
|
||||
"status": "Estado",
|
||||
"statusAvailable": "Disponible",
|
||||
"statusUnavailable": "No disponible",
|
||||
"enabled": "Habilitado",
|
||||
"management": "Gestión de base de datos",
|
||||
"managementHelp": "Descargar o eliminar la base de datos de archivo de metadatos",
|
||||
"downloadButton": "Descargar base de datos",
|
||||
"downloadingButton": "Descargando...",
|
||||
"downloadedButton": "Descargado",
|
||||
"removeButton": "Eliminar base de datos",
|
||||
"removingButton": "Eliminando...",
|
||||
"downloadSuccess": "Base de datos de archivo de metadatos descargada exitosamente",
|
||||
"downloadError": "Error al descargar la base de datos de archivo de metadatos",
|
||||
"removeSuccess": "Base de datos de archivo de metadatos eliminada exitosamente",
|
||||
"removeError": "Error al eliminar la base de datos de archivo de metadatos",
|
||||
"removeConfirm": "¿Estás seguro de que quieres eliminar la base de datos de archivo de metadatos? Esto eliminará el archivo de base de datos local y tendrás que descargarlo de nuevo para usar esta función.",
|
||||
"preparing": "Preparando descarga...",
|
||||
"connecting": "Conectando al servidor de descarga...",
|
||||
"completed": "Completado",
|
||||
"downloadComplete": "Descarga completada exitosamente"
|
||||
}
|
||||
},
|
||||
"loras": {
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
"loading": "Chargement...",
|
||||
"unknown": "Inconnu",
|
||||
"date": "Date",
|
||||
"version": "Version"
|
||||
"version": "Version",
|
||||
"enabled": "Activé",
|
||||
"disabled": "Désactivé"
|
||||
},
|
||||
"language": {
|
||||
"select": "Langue",
|
||||
@@ -178,7 +180,8 @@
|
||||
"folderSettings": "Paramètres des dossiers",
|
||||
"downloadPathTemplates": "Modèles de chemin de téléchargement",
|
||||
"exampleImages": "Images d'exemple",
|
||||
"misc": "Divers"
|
||||
"misc": "Divers",
|
||||
"metadataArchive": "Base de données d'archive des métadonnées"
|
||||
},
|
||||
"contentFiltering": {
|
||||
"blurNsfwContent": "Flouter le contenu NSFW",
|
||||
@@ -273,6 +276,30 @@
|
||||
"misc": {
|
||||
"includeTriggerWords": "Inclure les mots-clés dans la syntaxe LoRA",
|
||||
"includeTriggerWordsHelp": "Inclure les mots-clés d'entraînement lors de la copie de la syntaxe LoRA dans le presse-papiers"
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "Activer la base de données d'archive des métadonnées",
|
||||
"enableArchiveDbHelp": "Utiliser une base de données locale pour accéder aux métadonnées des modèles supprimés de Civitai.",
|
||||
"status": "Statut",
|
||||
"statusAvailable": "Disponible",
|
||||
"statusUnavailable": "Non disponible",
|
||||
"enabled": "Activé",
|
||||
"management": "Gestion de la base de données",
|
||||
"managementHelp": "Télécharger ou supprimer la base de données d'archive des métadonnées",
|
||||
"downloadButton": "Télécharger la base de données",
|
||||
"downloadingButton": "Téléchargement...",
|
||||
"downloadedButton": "Téléchargé",
|
||||
"removeButton": "Supprimer la base de données",
|
||||
"removingButton": "Suppression...",
|
||||
"downloadSuccess": "Base de données d'archive des métadonnées téléchargée avec succès",
|
||||
"downloadError": "Échec du téléchargement de la base de données d'archive des métadonnées",
|
||||
"removeSuccess": "Base de données d'archive des métadonnées supprimée avec succès",
|
||||
"removeError": "Échec de la suppression de la base de données d'archive des métadonnées",
|
||||
"removeConfirm": "Êtes-vous sûr de vouloir supprimer la base de données d'archive des métadonnées ? Cela supprimera le fichier local et vous devrez la télécharger à nouveau pour utiliser cette fonctionnalité.",
|
||||
"preparing": "Préparation du téléchargement...",
|
||||
"connecting": "Connexion au serveur de téléchargement...",
|
||||
"completed": "Terminé",
|
||||
"downloadComplete": "Téléchargement terminé avec succès"
|
||||
}
|
||||
},
|
||||
"loras": {
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
"loading": "読み込み中...",
|
||||
"unknown": "不明",
|
||||
"date": "日付",
|
||||
"version": "バージョン"
|
||||
"version": "バージョン",
|
||||
"enabled": "有効",
|
||||
"disabled": "無効"
|
||||
},
|
||||
"language": {
|
||||
"select": "言語",
|
||||
@@ -178,7 +180,8 @@
|
||||
"folderSettings": "フォルダ設定",
|
||||
"downloadPathTemplates": "ダウンロードパステンプレート",
|
||||
"exampleImages": "例画像",
|
||||
"misc": "その他"
|
||||
"misc": "その他",
|
||||
"metadataArchive": "メタデータアーカイブデータベース"
|
||||
},
|
||||
"contentFiltering": {
|
||||
"blurNsfwContent": "NSFWコンテンツをぼかす",
|
||||
@@ -273,6 +276,30 @@
|
||||
"misc": {
|
||||
"includeTriggerWords": "LoRA構文にトリガーワードを含める",
|
||||
"includeTriggerWordsHelp": "LoRA構文をクリップボードにコピーする際、学習済みトリガーワードを含めます"
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "メタデータアーカイブデータベースを有効化",
|
||||
"enableArchiveDbHelp": "Civitaiから削除されたモデルのメタデータにアクセスするためにローカルデータベースを使用します。",
|
||||
"status": "ステータス",
|
||||
"statusAvailable": "利用可能",
|
||||
"statusUnavailable": "利用不可",
|
||||
"enabled": "有効",
|
||||
"management": "データベース管理",
|
||||
"managementHelp": "メタデータアーカイブデータベースのダウンロードまたは削除",
|
||||
"downloadButton": "データベースをダウンロード",
|
||||
"downloadingButton": "ダウンロード中...",
|
||||
"downloadedButton": "ダウンロード済み",
|
||||
"removeButton": "データベースを削除",
|
||||
"removingButton": "削除中...",
|
||||
"downloadSuccess": "メタデータアーカイブデータベースのダウンロードが完了しました",
|
||||
"downloadError": "メタデータアーカイブデータベースのダウンロードに失敗しました",
|
||||
"removeSuccess": "メタデータアーカイブデータベースが削除されました",
|
||||
"removeError": "メタデータアーカイブデータベースの削除に失敗しました",
|
||||
"removeConfirm": "本当にメタデータアーカイブデータベースを削除しますか?ローカルのデータベースファイルが削除され、この機能を再度利用するには再ダウンロードが必要です。",
|
||||
"preparing": "ダウンロードを準備中...",
|
||||
"connecting": "ダウンロードサーバーに接続中...",
|
||||
"completed": "完了",
|
||||
"downloadComplete": "ダウンロードが正常に完了しました"
|
||||
}
|
||||
},
|
||||
"loras": {
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
"loading": "로딩 중...",
|
||||
"unknown": "알 수 없음",
|
||||
"date": "날짜",
|
||||
"version": "버전"
|
||||
"version": "버전",
|
||||
"enabled": "활성화됨",
|
||||
"disabled": "비활성화됨"
|
||||
},
|
||||
"language": {
|
||||
"select": "언어",
|
||||
@@ -178,7 +180,8 @@
|
||||
"folderSettings": "폴더 설정",
|
||||
"downloadPathTemplates": "다운로드 경로 템플릿",
|
||||
"exampleImages": "예시 이미지",
|
||||
"misc": "기타"
|
||||
"misc": "기타",
|
||||
"metadataArchive": "메타데이터 아카이브 데이터베이스"
|
||||
},
|
||||
"contentFiltering": {
|
||||
"blurNsfwContent": "NSFW 콘텐츠 블러 처리",
|
||||
@@ -273,6 +276,30 @@
|
||||
"misc": {
|
||||
"includeTriggerWords": "LoRA 문법에 트리거 단어 포함",
|
||||
"includeTriggerWordsHelp": "LoRA 문법을 클립보드에 복사할 때 학습된 트리거 단어를 포함합니다"
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "메타데이터 아카이브 데이터베이스 활성화",
|
||||
"enableArchiveDbHelp": "Civitai에서 삭제된 모델의 메타데이터에 접근하기 위해 로컬 데이터베이스를 사용합니다.",
|
||||
"status": "상태",
|
||||
"statusAvailable": "사용 가능",
|
||||
"statusUnavailable": "사용 불가",
|
||||
"enabled": "활성화됨",
|
||||
"management": "데이터베이스 관리",
|
||||
"managementHelp": "메타데이터 아카이브 데이터베이스를 다운로드하거나 제거합니다",
|
||||
"downloadButton": "데이터베이스 다운로드",
|
||||
"downloadingButton": "다운로드 중...",
|
||||
"downloadedButton": "다운로드 완료",
|
||||
"removeButton": "데이터베이스 제거",
|
||||
"removingButton": "제거 중...",
|
||||
"downloadSuccess": "메타데이터 아카이브 데이터베이스가 성공적으로 다운로드되었습니다",
|
||||
"downloadError": "메타데이터 아카이브 데이터베이스 다운로드 실패",
|
||||
"removeSuccess": "메타데이터 아카이브 데이터베이스가 성공적으로 제거되었습니다",
|
||||
"removeError": "메타데이터 아카이브 데이터베이스 제거 실패",
|
||||
"removeConfirm": "메타데이터 아카이브 데이터베이스를 제거하시겠습니까? 이 작업은 로컬 데이터베이스 파일을 삭제하며, 이 기능을 사용하려면 다시 다운로드해야 합니다.",
|
||||
"preparing": "다운로드 준비 중...",
|
||||
"connecting": "다운로드 서버에 연결 중...",
|
||||
"completed": "완료됨",
|
||||
"downloadComplete": "다운로드가 성공적으로 완료되었습니다"
|
||||
}
|
||||
},
|
||||
"loras": {
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
"loading": "Загрузка...",
|
||||
"unknown": "Неизвестно",
|
||||
"date": "Дата",
|
||||
"version": "Версия"
|
||||
"version": "Версия",
|
||||
"enabled": "Включено",
|
||||
"disabled": "Отключено"
|
||||
},
|
||||
"language": {
|
||||
"select": "Язык",
|
||||
@@ -178,7 +180,8 @@
|
||||
"folderSettings": "Настройки папок",
|
||||
"downloadPathTemplates": "Шаблоны путей загрузки",
|
||||
"exampleImages": "Примеры изображений",
|
||||
"misc": "Разное"
|
||||
"misc": "Разное",
|
||||
"metadataArchive": "Архив метаданных"
|
||||
},
|
||||
"contentFiltering": {
|
||||
"blurNsfwContent": "Размывать NSFW контент",
|
||||
@@ -273,6 +276,30 @@
|
||||
"misc": {
|
||||
"includeTriggerWords": "Включать триггерные слова в синтаксис LoRA",
|
||||
"includeTriggerWordsHelp": "Включать обученные триггерные слова при копировании синтаксиса LoRA в буфер обмена"
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "Включить архив метаданных",
|
||||
"enableArchiveDbHelp": "Использовать локальную базу данных для доступа к метаданным моделей, удалённых с Civitai.",
|
||||
"status": "Статус",
|
||||
"statusAvailable": "Доступно",
|
||||
"statusUnavailable": "Недоступно",
|
||||
"enabled": "Включено",
|
||||
"management": "Управление базой данных",
|
||||
"managementHelp": "Скачать или удалить базу данных архива метаданных",
|
||||
"downloadButton": "Скачать базу данных",
|
||||
"downloadingButton": "Скачивание...",
|
||||
"downloadedButton": "Скачано",
|
||||
"removeButton": "Удалить базу данных",
|
||||
"removingButton": "Удаление...",
|
||||
"downloadSuccess": "База данных архива метаданных успешно загружена",
|
||||
"downloadError": "Не удалось загрузить базу данных архива метаданных",
|
||||
"removeSuccess": "База данных архива метаданных успешно удалена",
|
||||
"removeError": "Не удалось удалить базу данных архива метаданных",
|
||||
"removeConfirm": "Вы уверены, что хотите удалить базу данных архива метаданных? Это удалит локальный файл базы данных, и для использования этой функции потребуется повторная загрузка.",
|
||||
"preparing": "Подготовка к загрузке...",
|
||||
"connecting": "Подключение к серверу загрузки...",
|
||||
"completed": "Завершено",
|
||||
"downloadComplete": "Загрузка успешно завершена"
|
||||
}
|
||||
},
|
||||
"loras": {
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
"loading": "加载中...",
|
||||
"unknown": "未知",
|
||||
"date": "日期",
|
||||
"version": "版本"
|
||||
"version": "版本",
|
||||
"enabled": "已启用",
|
||||
"disabled": "已禁用"
|
||||
},
|
||||
"language": {
|
||||
"select": "语言",
|
||||
@@ -178,7 +180,8 @@
|
||||
"folderSettings": "文件夹设置",
|
||||
"downloadPathTemplates": "下载路径模板",
|
||||
"exampleImages": "示例图片",
|
||||
"misc": "其他"
|
||||
"misc": "其他",
|
||||
"metadataArchive": "元数据归档数据库"
|
||||
},
|
||||
"contentFiltering": {
|
||||
"blurNsfwContent": "模糊 NSFW 内容",
|
||||
@@ -273,6 +276,30 @@
|
||||
"misc": {
|
||||
"includeTriggerWords": "复制 LoRA 语法时包含触发词",
|
||||
"includeTriggerWordsHelp": "复制 LoRA 语法到剪贴板时包含训练触发词"
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "启用元数据归档数据库",
|
||||
"enableArchiveDbHelp": "使用本地数据库访问已从 Civitai 删除的模型元数据。",
|
||||
"status": "状态",
|
||||
"statusAvailable": "可用",
|
||||
"statusUnavailable": "不可用",
|
||||
"enabled": "已启用",
|
||||
"management": "数据库管理",
|
||||
"managementHelp": "下载或移除元数据归档数据库",
|
||||
"downloadButton": "下载数据库",
|
||||
"downloadingButton": "正在下载...",
|
||||
"downloadedButton": "已下载",
|
||||
"removeButton": "移除数据库",
|
||||
"removingButton": "正在移除...",
|
||||
"downloadSuccess": "元数据归档数据库下载成功",
|
||||
"downloadError": "元数据归档数据库下载失败",
|
||||
"removeSuccess": "元数据归档数据库移除成功",
|
||||
"removeError": "元数据归档数据库移除失败",
|
||||
"removeConfirm": "你确定要移除元数据归档数据库吗?这将删除本地数据库文件,如需使用此功能需重新下载。",
|
||||
"preparing": "正在准备下载...",
|
||||
"connecting": "正在连接下载服务器...",
|
||||
"completed": "已完成",
|
||||
"downloadComplete": "下载成功完成"
|
||||
}
|
||||
},
|
||||
"loras": {
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
"loading": "載入中...",
|
||||
"unknown": "未知",
|
||||
"date": "日期",
|
||||
"version": "版本"
|
||||
"version": "版本",
|
||||
"enabled": "已啟用",
|
||||
"disabled": "已停用"
|
||||
},
|
||||
"language": {
|
||||
"select": "語言",
|
||||
@@ -178,7 +180,8 @@
|
||||
"folderSettings": "資料夾設定",
|
||||
"downloadPathTemplates": "下載路徑範本",
|
||||
"exampleImages": "範例圖片",
|
||||
"misc": "其他"
|
||||
"misc": "其他",
|
||||
"metadataArchive": "中繼資料封存資料庫"
|
||||
},
|
||||
"contentFiltering": {
|
||||
"blurNsfwContent": "模糊 NSFW 內容",
|
||||
@@ -273,6 +276,30 @@
|
||||
"misc": {
|
||||
"includeTriggerWords": "在 LoRA 語法中包含觸發詞",
|
||||
"includeTriggerWordsHelp": "複製 LoRA 語法到剪貼簿時包含訓練觸發詞"
|
||||
},
|
||||
"metadataArchive": {
|
||||
"enableArchiveDb": "啟用中繼資料封存資料庫",
|
||||
"enableArchiveDbHelp": "使用本機資料庫以存取已從 Civitai 刪除模型的中繼資料。",
|
||||
"status": "狀態",
|
||||
"statusAvailable": "可用",
|
||||
"statusUnavailable": "不可用",
|
||||
"enabled": "已啟用",
|
||||
"management": "資料庫管理",
|
||||
"managementHelp": "下載或移除中繼資料封存資料庫",
|
||||
"downloadButton": "下載資料庫",
|
||||
"downloadingButton": "下載中...",
|
||||
"downloadedButton": "已下載",
|
||||
"removeButton": "移除資料庫",
|
||||
"removingButton": "移除中...",
|
||||
"downloadSuccess": "中繼資料封存資料庫下載成功",
|
||||
"downloadError": "下載中繼資料封存資料庫失敗",
|
||||
"removeSuccess": "中繼資料封存資料庫移除成功",
|
||||
"removeError": "移除中繼資料封存資料庫失敗",
|
||||
"removeConfirm": "您確定要移除中繼資料封存資料庫嗎?這將刪除本機資料庫檔案,若要再次使用此功能需重新下載。",
|
||||
"preparing": "準備下載中...",
|
||||
"connecting": "正在連接下載伺服器...",
|
||||
"completed": "已完成",
|
||||
"downloadComplete": "下載成功完成"
|
||||
}
|
||||
},
|
||||
"loras": {
|
||||
|
||||
@@ -611,10 +611,10 @@ class BaseModelRoutes(ABC):
|
||||
success = 0
|
||||
needs_resort = False
|
||||
|
||||
# Prepare models to process
|
||||
# Prepare models to process, only those without CivitAI data
|
||||
to_process = [
|
||||
model for model in cache.raw_data
|
||||
if model.get('sha256') and (not model.get('civitai') or 'id' not in model.get('civitai')) and model.get('from_civitai', True)
|
||||
if model.get('sha256') and (not model.get('civitai') or 'id' not in model.get('civitai'))
|
||||
]
|
||||
total_to_process = len(to_process)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ from ..utils.lora_metadata import extract_trained_words
|
||||
from ..config import config
|
||||
from ..utils.constants import SUPPORTED_MEDIA_EXTENSIONS, NODE_TYPES, DEFAULT_NODE_COLOR
|
||||
from ..services.service_registry import ServiceRegistry
|
||||
from ..services.metadata_service import get_metadata_archive_manager, update_metadata_provider_priority
|
||||
from ..services.metadata_service import get_metadata_archive_manager, update_metadata_providers
|
||||
from ..services.websocket_manager import ws_manager
|
||||
import re
|
||||
|
||||
@@ -736,8 +736,8 @@ class MiscRoutes:
|
||||
# Update settings to enable metadata archive
|
||||
settings.set('enable_metadata_archive_db', True)
|
||||
|
||||
# Update provider priority
|
||||
await update_metadata_provider_priority()
|
||||
# Update metadata providers
|
||||
await update_metadata_providers()
|
||||
|
||||
return web.json_response({
|
||||
'success': True,
|
||||
@@ -768,8 +768,8 @@ class MiscRoutes:
|
||||
# Update settings to disable metadata archive
|
||||
settings.set('enable_metadata_archive_db', False)
|
||||
|
||||
# Update provider priority
|
||||
await update_metadata_provider_priority()
|
||||
# Update metadata providers
|
||||
await update_metadata_providers()
|
||||
|
||||
return web.json_response({
|
||||
'success': True,
|
||||
@@ -796,7 +796,6 @@ class MiscRoutes:
|
||||
|
||||
is_available = archive_manager.is_database_available()
|
||||
is_enabled = settings.get('enable_metadata_archive_db', False)
|
||||
priority = settings.get('metadata_provider_priority', 'archive_db')
|
||||
|
||||
db_size = 0
|
||||
if is_available:
|
||||
@@ -808,7 +807,6 @@ class MiscRoutes:
|
||||
'success': True,
|
||||
'isAvailable': is_available,
|
||||
'isEnabled': is_enabled,
|
||||
'priority': priority,
|
||||
'databaseSize': db_size,
|
||||
'databasePath': archive_manager.get_database_path() if is_available else None
|
||||
})
|
||||
|
||||
@@ -22,7 +22,6 @@ async def initialize_metadata_providers():
|
||||
|
||||
# Get settings
|
||||
enable_archive_db = settings.get('enable_metadata_archive_db', False)
|
||||
priority = settings.get('metadata_provider_priority', 'archive_db')
|
||||
|
||||
providers = []
|
||||
|
||||
@@ -54,23 +53,17 @@ async def initialize_metadata_providers():
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to initialize Civitai API metadata provider: {e}")
|
||||
|
||||
# Set up fallback provider based on priority and available providers
|
||||
# Set up fallback provider based on available providers
|
||||
if len(providers) > 1:
|
||||
# Order providers based on priority setting
|
||||
# Always use Civitai API first, then Archive DB
|
||||
ordered_providers = []
|
||||
if priority == 'archive_db':
|
||||
# Archive DB first, then Civitai API
|
||||
ordered_providers = [p[1] for p in providers if p[0] == 'sqlite']
|
||||
ordered_providers.extend([p[1] for p in providers if p[0] == 'civitai_api'])
|
||||
else:
|
||||
# Civitai API first, then Archive DB
|
||||
ordered_providers = [p[1] for p in providers if p[0] == 'civitai_api']
|
||||
ordered_providers.extend([p[1] for p in providers if p[0] == 'sqlite'])
|
||||
ordered_providers.extend([p[1] for p in providers if p[0] == 'civitai_api'])
|
||||
ordered_providers.extend([p[1] for p in providers if p[0] == 'sqlite'])
|
||||
|
||||
if ordered_providers:
|
||||
fallback_provider = FallbackMetadataProvider(ordered_providers)
|
||||
provider_manager.register_provider('fallback', fallback_provider, is_default=True)
|
||||
logger.info(f"Fallback metadata provider registered with {len(ordered_providers)} providers, priority: {priority}")
|
||||
logger.info(f"Fallback metadata provider registered with {len(ordered_providers)} providers, Civitai API first")
|
||||
elif len(providers) == 1:
|
||||
# Only one provider available, set it as default
|
||||
provider_name, provider = providers[0]
|
||||
@@ -81,20 +74,19 @@ async def initialize_metadata_providers():
|
||||
|
||||
return provider_manager
|
||||
|
||||
async def update_metadata_provider_priority():
|
||||
"""Update metadata provider priority based on current settings"""
|
||||
async def update_metadata_providers():
|
||||
"""Update metadata providers based on current settings"""
|
||||
try:
|
||||
# Get current settings
|
||||
enable_archive_db = settings.get('enable_metadata_archive_db', False)
|
||||
priority = settings.get('metadata_provider_priority', 'archive_db')
|
||||
|
||||
# Reinitialize all providers with new settings
|
||||
provider_manager = await initialize_metadata_providers()
|
||||
|
||||
logger.info(f"Updated metadata provider priority to: {priority}, archive_db enabled: {enable_archive_db}")
|
||||
logger.info(f"Updated metadata providers, archive_db enabled: {enable_archive_db}")
|
||||
return provider_manager
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to update metadata provider priority: {e}")
|
||||
logger.error(f"Failed to update metadata providers: {e}")
|
||||
return await ModelMetadataProviderManager.get_instance()
|
||||
|
||||
async def get_metadata_archive_manager():
|
||||
|
||||
@@ -82,8 +82,7 @@ class SettingsManager:
|
||||
"civitai_api_key": "",
|
||||
"show_only_sfw": False,
|
||||
"language": "en",
|
||||
"enable_metadata_archive_db": False, # Enable metadata archive database
|
||||
"metadata_provider_priority": "archive_db" # Default priority: 'archive_db' or 'civitai_api'
|
||||
"enable_metadata_archive_db": False # Enable metadata archive database
|
||||
}
|
||||
|
||||
def get(self, key: str, default: Any = None) -> Any:
|
||||
|
||||
@@ -12,7 +12,7 @@ from ..services.downloader import get_downloader
|
||||
from ..utils.exif_utils import ExifUtils
|
||||
from ..utils.metadata_manager import MetadataManager
|
||||
from ..services.websocket_manager import ws_manager
|
||||
from ..services.metadata_service import get_default_metadata_provider
|
||||
from ..services.metadata_service import get_default_metadata_provider, get_metadata_provider
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -41,13 +41,15 @@ class ModelRouteUtils:
|
||||
def is_civitai_api_metadata(meta: dict) -> bool:
|
||||
"""
|
||||
Determine if the given civitai metadata is from the civitai API.
|
||||
Returns True if both 'files' and 'images' exist and are non-empty.
|
||||
Returns True if both 'files' and 'images' exist and are non-empty,
|
||||
and the 'source' is not 'archive_db'.
|
||||
"""
|
||||
if not isinstance(meta, dict):
|
||||
return False
|
||||
files = meta.get('files')
|
||||
images = meta.get('images')
|
||||
return bool(files) and bool(images)
|
||||
source = meta.get('source')
|
||||
return bool(files) and bool(images) and source != 'archive_db'
|
||||
|
||||
@staticmethod
|
||||
async def update_model_metadata(metadata_path: str, local_metadata: Dict,
|
||||
@@ -58,12 +60,17 @@ class ModelRouteUtils:
|
||||
|
||||
# Check if we should skip the update to avoid overwriting richer data
|
||||
if civitai_metadata.get('source') == 'archive_db' and ModelRouteUtils.is_civitai_api_metadata(existing_civitai):
|
||||
logger.info(f"Skip civitai update for {local_metadata.get('model_name', '')}: {existing_civitai.get('name', '')}")
|
||||
logger.info(f"Skip civitai update for {local_metadata.get('model_name', '')} ({existing_civitai.get('name', '')})")
|
||||
else:
|
||||
# Create a new civitai metadata by updating existing with new
|
||||
merged_civitai = existing_civitai.copy()
|
||||
merged_civitai.update(civitai_metadata)
|
||||
|
||||
if civitai_metadata.get('source') == 'archive_db':
|
||||
model_name = civitai_metadata.get('model', {}).get('name', '')
|
||||
version_name = civitai_metadata.get('name', '')
|
||||
logger.info(f"Recovered metadata from archive_db for deleted model: {model_name} ({version_name})")
|
||||
|
||||
# Special handling for trainedWords - ensure we don't lose any existing trained words
|
||||
if 'trainedWords' in existing_civitai:
|
||||
existing_trained_words = existing_civitai.get('trainedWords', [])
|
||||
@@ -210,8 +217,12 @@ class ModelRouteUtils:
|
||||
# Check if model metadata exists
|
||||
local_metadata = await ModelRouteUtils.load_local_metadata(metadata_path)
|
||||
|
||||
# Get metadata provider and fetch metadata from unified provider
|
||||
metadata_provider = await get_default_metadata_provider()
|
||||
if model_data.get('from_civitai') is False:
|
||||
# Likely deleted from CivitAI, use archive_db if available
|
||||
metadata_provider = await get_metadata_provider('sqlite')
|
||||
else:
|
||||
metadata_provider = await get_default_metadata_provider()
|
||||
|
||||
civitai_metadata = await metadata_provider.get_model_by_hash(sha256)
|
||||
if not civitai_metadata:
|
||||
# Mark as not from CivitAI if not found
|
||||
|
||||
@@ -850,7 +850,7 @@ export class SettingsManager {
|
||||
}
|
||||
|
||||
// Special handling for metadata archive settings
|
||||
if (settingKey === 'enable_metadata_archive_db' || settingKey === 'metadata_provider_priority') {
|
||||
if (settingKey === 'enable_metadata_archive_db') {
|
||||
await this.updateMetadataArchiveStatus();
|
||||
}
|
||||
|
||||
@@ -879,8 +879,6 @@ export class SettingsManager {
|
||||
state.global.settings.compactMode = (value !== 'default');
|
||||
} else if (settingKey === 'card_info_display') {
|
||||
state.global.settings.cardInfoDisplay = value;
|
||||
} else if (settingKey === 'metadata_provider_priority') {
|
||||
state.global.settings.metadata_provider_priority = value;
|
||||
} else {
|
||||
// For any other settings that might be added in the future
|
||||
state.global.settings[settingKey] = value;
|
||||
@@ -891,7 +889,7 @@ export class SettingsManager {
|
||||
|
||||
try {
|
||||
// For backend settings, make API call
|
||||
if (settingKey === 'default_lora_root' || settingKey === 'default_checkpoint_root' || settingKey === 'default_embedding_root' || settingKey === 'download_path_templates' || settingKey === 'metadata_provider_priority') {
|
||||
if (settingKey === 'default_lora_root' || settingKey === 'default_checkpoint_root' || settingKey === 'default_embedding_root' || settingKey === 'download_path_templates') {
|
||||
const payload = {};
|
||||
if (settingKey === 'download_path_templates') {
|
||||
payload[settingKey] = state.global.settings.download_path_templates;
|
||||
@@ -912,11 +910,6 @@ export class SettingsManager {
|
||||
}
|
||||
|
||||
showToast('toast.settings.settingsUpdated', { setting: settingKey.replace(/_/g, ' ') }, 'success');
|
||||
|
||||
// Refresh metadata archive status when provider priority changes
|
||||
if (settingKey === 'metadata_provider_priority') {
|
||||
await this.updateMetadataArchiveStatus();
|
||||
}
|
||||
}
|
||||
|
||||
// Apply frontend settings immediately
|
||||
@@ -932,11 +925,6 @@ export class SettingsManager {
|
||||
|
||||
showToast('toast.settings.displayDensitySet', { density: densityName }, 'success');
|
||||
}
|
||||
|
||||
// Special handling for metadata archive settings
|
||||
if (settingKey === 'metadata_provider_priority') {
|
||||
await this.updateMetadataArchiveStatus();
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
showToast('toast.settings.settingSaveFailed', { message: error.message }, 'error');
|
||||
@@ -951,11 +939,6 @@ export class SettingsManager {
|
||||
enableMetadataArchiveCheckbox.checked = state.global.settings.enable_metadata_archive_db || false;
|
||||
}
|
||||
|
||||
const metadataProviderPrioritySelect = document.getElementById('metadataProviderPriority');
|
||||
if (metadataProviderPrioritySelect) {
|
||||
metadataProviderPrioritySelect.value = state.global.settings.metadata_provider_priority || 'archive_db';
|
||||
}
|
||||
|
||||
// Load status
|
||||
await this.updateMetadataArchiveStatus();
|
||||
} catch (error) {
|
||||
@@ -987,12 +970,6 @@ export class SettingsManager {
|
||||
${status.isEnabled ? translate('common.status.enabled') : translate('common.status.disabled')}
|
||||
</span>
|
||||
</div>
|
||||
<div class="archive-status-item">
|
||||
<span class="archive-status-label">${translate('settings.metadataArchive.currentPriority')}:</span>
|
||||
<span class="archive-status-value">
|
||||
${status.priority === 'archive_db' ? translate('settings.metadataArchive.priorityArchiveDb') : translate('settings.metadataArchive.priorityCivitaiApi')}
|
||||
</span>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// Update button states
|
||||
|
||||
@@ -419,23 +419,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="setting-item">
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<label for="metadataProviderPriority">{{ t('settings.metadataArchive.providerPriority') }}:</label>
|
||||
</div>
|
||||
<div class="setting-control select-control">
|
||||
<select id="metadataProviderPriority" onchange="settingsManager.saveSelectSetting('metadataProviderPriority', 'metadata_provider_priority')">
|
||||
<option value="archive_db">{{ t('settings.metadataArchive.priorityArchiveDb') }}</option>
|
||||
<option value="civitai_api">{{ t('settings.metadataArchive.priorityCivitaiApi') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-help">
|
||||
{{ t('settings.metadataArchive.providerPriorityHelp') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="setting-item">
|
||||
<div class="metadata-archive-status" id="metadataArchiveStatus">
|
||||
<!-- Status will be populated by JavaScript -->
|
||||
|
||||
Reference in New Issue
Block a user