From 2bac4207404cb3165f5b52d601cbe0903bcea7b8 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Tue, 4 Feb 2025 23:26:18 +0800 Subject: [PATCH] Fix open civitai --- static/js/main.js | 3 ++- static/js/utils/uiHelpers.js | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/static/js/main.js b/static/js/main.js index 3a6472dd..fc5f904f 100644 --- a/static/js/main.js +++ b/static/js/main.js @@ -4,7 +4,7 @@ import { modalManager } from './managers/ModalManager.js'; import { state } from './state/index.js'; import { showLoraModal, initializeLoraCards } from './components/LoraCard.js'; import { loadMoreLoras, fetchCivitai, deleteModel, replacePreview, resetAndReload, refreshLoras } from './api/loraApi.js'; -import { showToast, lazyLoadImages, restoreFolderFilter, initTheme, toggleTheme, toggleFolder, copyTriggerWord } from './utils/uiHelpers.js'; +import { showToast, lazyLoadImages, restoreFolderFilter, initTheme, toggleTheme, toggleFolder, copyTriggerWord, openCivitai } from './utils/uiHelpers.js'; import { initializeInfiniteScroll } from './utils/infiniteScroll.js'; import { showDeleteModal, confirmDelete, closeDeleteModal } from './utils/modalUtils.js'; import { SearchManager } from './utils/search.js'; @@ -23,6 +23,7 @@ window.state = state; window.confirmDelete = confirmDelete; window.closeDeleteModal = closeDeleteModal; window.refreshLoras = refreshLoras; +window.openCivitai = openCivitai; // Initialize everything when DOM is ready document.addEventListener('DOMContentLoaded', () => { diff --git a/static/js/utils/uiHelpers.js b/static/js/utils/uiHelpers.js index c0d47d16..c596aadc 100644 --- a/static/js/utils/uiHelpers.js +++ b/static/js/utils/uiHelpers.js @@ -85,4 +85,26 @@ function filterByFolder(folderPath) { document.querySelectorAll('.lora-card').forEach(card => { card.style.display = card.dataset.folder === folderPath ? '' : 'none'; }); -} \ No newline at end of file +} + +export function openCivitai(modelName) { + // 从卡片的data-meta属性中获取civitai ID + const loraCard = document.querySelector(`.lora-card[data-name="${modelName}"]`); + if (!loraCard) return; + + const metaData = JSON.parse(loraCard.dataset.meta); + const civitaiId = metaData.modelId; // 使用modelId作为civitai模型ID + const versionId = metaData.id; // 使用id作为版本ID + + // 构建URL + if (civitaiId) { + let url = `https://civitai.com/models/${civitaiId}`; + if (versionId) { + url += `?modelVersionId=${versionId}`; + } + window.open(url, '_blank'); + } else { + // 如果没有ID,尝试使用名称搜索 + window.open(`https://civitai.com/models?query=${encodeURIComponent(modelName)}`, '_blank'); + } +} \ No newline at end of file