feat(download): add support to download models from civarchive, fixes #381

This commit is contained in:
Will Miao
2025-10-13 19:27:56 +08:00
parent 60d23aa238
commit 27370df93a
3 changed files with 33 additions and 19 deletions

View File

@@ -569,9 +569,15 @@ export class BaseModelApiClient {
}
}
async fetchCivitaiVersions(modelId) {
async fetchCivitaiVersions(modelId, source = null) {
try {
const response = await fetch(`${this.apiConfig.endpoints.civitaiVersions}/${modelId}`);
let requestUrl = `${this.apiConfig.endpoints.civitaiVersions}/${modelId}`;
if (source) {
const params = new URLSearchParams({ source });
requestUrl = `${requestUrl}?${params.toString()}`;
}
const response = await fetch(requestUrl);
if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
if (errorData && errorData.error && errorData.error.includes('Model type mismatch')) {
@@ -639,7 +645,7 @@ export class BaseModelApiClient {
}
}
async downloadModel(modelId, versionId, modelRoot, relativePath, useDefaultPaths = false, downloadId) {
async downloadModel(modelId, versionId, modelRoot, relativePath, useDefaultPaths = false, downloadId, source = null) {
try {
const response = await fetch(DOWNLOAD_ENDPOINTS.download, {
method: 'POST',
@@ -650,7 +656,8 @@ export class BaseModelApiClient {
model_root: modelRoot,
relative_path: relativePath,
use_default_paths: useDefaultPaths,
download_id: downloadId
download_id: downloadId,
...(source ? { source } : {})
})
});