Update index.html
Browse files- index.html +140 -108
index.html
CHANGED
|
@@ -386,6 +386,116 @@
|
|
| 386 |
<script>
|
| 387 |
let currentCategory = 'hf-models';
|
| 388 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 389 |
// ์นดํ
๊ณ ๋ฆฌ ์ ํ
|
| 390 |
function showCategory(category) {
|
| 391 |
currentCategory = category;
|
|
@@ -438,77 +548,31 @@
|
|
| 438 |
}
|
| 439 |
|
| 440 |
// Replicate ๋ชจ๋ธ ๋ก๋
|
| 441 |
-
|
| 442 |
const container = document.getElementById('replicate-content');
|
| 443 |
-
container.innerHTML = '
|
| 444 |
|
| 445 |
-
|
| 446 |
-
|
| 447 |
-
const
|
| 448 |
-
|
| 449 |
-
const
|
| 450 |
-
const html = await response.text();
|
| 451 |
-
|
| 452 |
-
// HTML์์ ๋ชจ๋ธ URL ์ถ์ถ
|
| 453 |
-
const parser = new DOMParser();
|
| 454 |
-
const doc = parser.parseFromString(html, 'text/html');
|
| 455 |
-
|
| 456 |
-
// ๋ชจ๋ ๋ชจ๋ธ ๋งํฌ ์ฐพ๊ธฐ
|
| 457 |
-
const modelLinks = doc.querySelectorAll('a[href*="/models/"], a[href*="/p/"]');
|
| 458 |
-
const models = [];
|
| 459 |
-
const seenUrls = new Set();
|
| 460 |
-
|
| 461 |
-
modelLinks.forEach(link => {
|
| 462 |
-
const href = link.getAttribute('href');
|
| 463 |
-
if (href && !seenUrls.has(href)) {
|
| 464 |
-
seenUrls.add(href);
|
| 465 |
-
const parts = href.split('/');
|
| 466 |
-
if (parts.length >= 3) {
|
| 467 |
-
const author = parts[parts.length - 2];
|
| 468 |
-
const name = parts[parts.length - 1];
|
| 469 |
-
if (author && name && author !== 'models' && author !== 'p') {
|
| 470 |
-
models.push({
|
| 471 |
-
author: author,
|
| 472 |
-
name: name,
|
| 473 |
-
url: `https://replicate.com${href}`
|
| 474 |
-
});
|
| 475 |
-
}
|
| 476 |
-
}
|
| 477 |
-
}
|
| 478 |
-
});
|
| 479 |
|
| 480 |
-
|
| 481 |
-
|
| 482 |
-
|
| 483 |
-
|
| 484 |
-
|
| 485 |
-
|
| 486 |
-
|
| 487 |
-
|
| 488 |
-
|
| 489 |
-
|
| 490 |
-
|
| 491 |
-
|
| 492 |
-
|
| 493 |
-
|
| 494 |
-
|
| 495 |
-
}
|
| 496 |
-
}
|
| 497 |
-
} catch (e) {
|
| 498 |
-
console.error(e);
|
| 499 |
-
}
|
| 500 |
-
}
|
| 501 |
-
}
|
| 502 |
-
|
| 503 |
-
if (modelsData.length > 0) {
|
| 504 |
-
displayReplicateModels(modelsData, container);
|
| 505 |
-
} else {
|
| 506 |
-
displaySampleReplicateModels(container);
|
| 507 |
-
}
|
| 508 |
-
}
|
| 509 |
-
} catch (error) {
|
| 510 |
-
displaySampleReplicateModels(container);
|
| 511 |
-
}
|
| 512 |
}
|
| 513 |
|
| 514 |
// ํ๋ก์ ์์ฒญ
|
|
@@ -574,23 +638,6 @@
|
|
| 574 |
});
|
| 575 |
}
|
| 576 |
|
| 577 |
-
// Replicate ์ค์๊ฐ ๋ชจ๋ธ ํ์
|
| 578 |
-
function displayReplicateModels(models, container) {
|
| 579 |
-
container.innerHTML = '';
|
| 580 |
-
models.forEach((model, index) => {
|
| 581 |
-
const card = createModelCard({
|
| 582 |
-
rank: index + 1,
|
| 583 |
-
title: model.name || model.default_example?.model || 'Unknown',
|
| 584 |
-
author: model.owner || model.author || model.username || 'replicate',
|
| 585 |
-
runs: model.run_count || model.runs || 0,
|
| 586 |
-
icon: getModelIcon(model.name),
|
| 587 |
-
badge: 'โ
Official',
|
| 588 |
-
url: model.url || `https://replicate.com/${model.owner || model.author || 'p'}/${model.name}`
|
| 589 |
-
});
|
| 590 |
-
container.appendChild(card);
|
| 591 |
-
});
|
| 592 |
-
}
|
| 593 |
-
|
| 594 |
// ๋ชจ๋ธ ์นด๋ ์์ฑ
|
| 595 |
function createModelCard(data) {
|
| 596 |
const card = document.createElement('div');
|
|
@@ -644,10 +691,14 @@
|
|
| 644 |
function getModelIcon(name) {
|
| 645 |
if (!name) return '๐ค';
|
| 646 |
const lowerName = name.toLowerCase();
|
| 647 |
-
if (lowerName.includes('
|
| 648 |
-
if (lowerName.includes('video')) return '๐ฌ';
|
| 649 |
-
if (lowerName.includes('audio') || lowerName.includes('music') || lowerName.includes('
|
| 650 |
-
if (lowerName.includes('llama') || lowerName.includes('
|
|
|
|
|
|
|
|
|
|
|
|
|
| 651 |
return '๐ค';
|
| 652 |
}
|
| 653 |
|
|
@@ -694,25 +745,6 @@
|
|
| 694 |
});
|
| 695 |
}
|
| 696 |
|
| 697 |
-
function displaySampleReplicateModels(container) {
|
| 698 |
-
const officialData = [
|
| 699 |
-
{ rank: 1, title: 'meta-llama-3.3-70b-instruct', author: 'meta', runs: 3450000, icon: '๐ค', badge: 'โ
Official' },
|
| 700 |
-
{ rank: 2, title: 'flux-1.1-pro', author: 'black-forest-labs', runs: 2910000, icon: '๐จ', badge: 'โ
Official' },
|
| 701 |
-
{ rank: 3, title: 'stable-diffusion-3', author: 'stability-ai', runs: 1750000, icon: '๐ผ๏ธ', badge: 'โ
Official' },
|
| 702 |
-
{ rank: 4, title: 'whisper', author: 'openai', runs: 890000, icon: '๐ค', badge: 'โ
Official' },
|
| 703 |
-
{ rank: 5, title: 'musicgen', author: 'facebook', runs: 450000, icon: '๐ต', badge: 'โ
Official' },
|
| 704 |
-
{ rank: 6, title: 'sdxl', author: 'stability-ai', runs: 380000, icon: '๐จ', badge: '๏ฟฝ๏ฟฝ๏ฟฝ Official' },
|
| 705 |
-
{ rank: 7, title: 'claude-3.7-sonnet', author: 'anthropic', runs: 290000, icon: '๐ค', badge: 'โ
Official' },
|
| 706 |
-
{ rank: 8, title: 'gemma-2-9b-it', author: 'google', runs: 180000, icon: '๐ฌ', badge: 'โ
Official' }
|
| 707 |
-
];
|
| 708 |
-
|
| 709 |
-
container.innerHTML = '';
|
| 710 |
-
officialData.forEach(model => {
|
| 711 |
-
model.url = `https://replicate.com/${model.author}/${model.title}`;
|
| 712 |
-
container.appendChild(createModelCard(model));
|
| 713 |
-
});
|
| 714 |
-
}
|
| 715 |
-
|
| 716 |
// ์๋ก๊ณ ์นจ
|
| 717 |
function refreshCurrent() {
|
| 718 |
if (currentCategory === 'hf-models') {
|
|
|
|
| 386 |
<script>
|
| 387 |
let currentCategory = 'hf-models';
|
| 388 |
|
| 389 |
+
// Replicate URL ๋ฆฌ์คํธ
|
| 390 |
+
const replicateUrls = [
|
| 391 |
+
"https://replicate.com/google/imagen-4",
|
| 392 |
+
"https://replicate.com/google/imagen-3-fast",
|
| 393 |
+
"https://replicate.com/google/imagen-3",
|
| 394 |
+
"https://replicate.com/google/lyria-2",
|
| 395 |
+
"https://replicate.com/luma/ray-flash-2-720p",
|
| 396 |
+
"https://replicate.com/luma/ray-2-720p",
|
| 397 |
+
"https://replicate.com/luma/ray-flash-2-540p",
|
| 398 |
+
"https://replicate.com/luma/ray-2-540p",
|
| 399 |
+
"https://replicate.com/luma/ray",
|
| 400 |
+
"https://replicate.com/google/veo-2",
|
| 401 |
+
"https://replicate.com/black-forest-labs/flux-dev-lora",
|
| 402 |
+
"https://replicate.com/anthropic/claude-4-sonnet",
|
| 403 |
+
"https://replicate.com/kwaivgi/kling-v1.6-pro",
|
| 404 |
+
"https://replicate.com/kwaivgi/kling-v1.6-standard",
|
| 405 |
+
"https://replicate.com/pixverse/pixverse-v4.5",
|
| 406 |
+
"https://replicate.com/pixverse/pixverse-v4",
|
| 407 |
+
"https://replicate.com/openai/o4-mini",
|
| 408 |
+
"https://replicate.com/openai/o1",
|
| 409 |
+
"https://replicate.com/openai/o1-mini",
|
| 410 |
+
"https://replicate.com/openai/gpt-4o",
|
| 411 |
+
"https://replicate.com/openai/gpt-4o-mini",
|
| 412 |
+
"https://replicate.com/openai/gpt-4.1",
|
| 413 |
+
"https://replicate.com/openai/gpt-4.1-nano",
|
| 414 |
+
"https://replicate.com/kwaivgi/kling-lip-sync",
|
| 415 |
+
"https://replicate.com/openai/gpt-4.1-mini",
|
| 416 |
+
"https://replicate.com/kwaivgi/kling-v2.0",
|
| 417 |
+
"https://replicate.com/kwaivgi/kling-v1.5-pro",
|
| 418 |
+
"https://replicate.com/kwaivgi/kling-v1.5-standard",
|
| 419 |
+
"https://replicate.com/pixverse/pixverse-v3.5",
|
| 420 |
+
"https://replicate.com/openai/dall-e-2",
|
| 421 |
+
"https://replicate.com/openai/dall-e-3",
|
| 422 |
+
"https://replicate.com/fofr/color-matcher",
|
| 423 |
+
"https://replicate.com/minimax/speech-02-turbo",
|
| 424 |
+
"https://replicate.com/minimax/speech-02-hd",
|
| 425 |
+
"https://replicate.com/minimax/voice-cloning",
|
| 426 |
+
"https://replicate.com/ideogram-ai/ideogram-v3-balanced",
|
| 427 |
+
"https://replicate.com/ideogram-ai/ideogram-v3-turbo",
|
| 428 |
+
"https://replicate.com/ideogram-ai/ideogram-v3-quality",
|
| 429 |
+
"https://replicate.com/easel/ai-avatars",
|
| 430 |
+
"https://replicate.com/black-forest-labs/flux-1.1-pro-ultra-finetuned",
|
| 431 |
+
"https://replicate.com/black-forest-labs/flux-pro-trainer",
|
| 432 |
+
"https://replicate.com/openai/gpt-image-1",
|
| 433 |
+
"https://replicate.com/minimax/image-01",
|
| 434 |
+
"https://replicate.com/topazlabs/image-upscale",
|
| 435 |
+
"https://replicate.com/topazlabs/video-upscale",
|
| 436 |
+
"https://replicate.com/ibm-granite/granite-3.3-8b-instruct",
|
| 437 |
+
"https://replicate.com/meta/llama-4-maverick-instruct",
|
| 438 |
+
"https://replicate.com/meta/llama-4-scout-instruct",
|
| 439 |
+
"https://replicate.com/black-forest-labs/flux-schnell-lora",
|
| 440 |
+
"https://replicate.com/black-forest-labs/flux-fill-dev",
|
| 441 |
+
"https://replicate.com/black-forest-labs/flux-1.1-pro-ultra",
|
| 442 |
+
"https://replicate.com/black-forest-labs/flux-1.1-pro",
|
| 443 |
+
"https://replicate.com/black-forest-labs/flux-pro",
|
| 444 |
+
"https://replicate.com/black-forest-labs/flux-fill-pro",
|
| 445 |
+
"https://replicate.com/black-forest-labs/flux-canny-pro",
|
| 446 |
+
"https://replicate.com/black-forest-labs/flux-depth-pro",
|
| 447 |
+
"https://replicate.com/wavespeedai/wan-2.1-t2v-480p",
|
| 448 |
+
"https://replicate.com/wavespeedai/wan-2.1-t2v-720p",
|
| 449 |
+
"https://replicate.com/wavespeedai/wan-2.1-i2v-480p",
|
| 450 |
+
"https://replicate.com/wavespeedai/wan-2.1-i2v-720p",
|
| 451 |
+
"https://replicate.com/deepseek-ai/deepseek-v3",
|
| 452 |
+
"https://replicate.com/recraft-ai/recraft-v3",
|
| 453 |
+
"https://replicate.com/recraft-ai/recraft-v3-svg",
|
| 454 |
+
"https://replicate.com/recraft-ai/recraft-20b-svg",
|
| 455 |
+
"https://replicate.com/recraft-ai/recraft-20b",
|
| 456 |
+
"https://replicate.com/black-forest-labs/flux-redux-schnell",
|
| 457 |
+
"https://replicate.com/black-forest-labs/flux-redux-dev",
|
| 458 |
+
"https://replicate.com/black-forest-labs/flux-schnell",
|
| 459 |
+
"https://replicate.com/black-forest-labs/flux-depth-dev",
|
| 460 |
+
"https://replicate.com/black-forest-labs/flux-canny-dev",
|
| 461 |
+
"https://replicate.com/black-forest-labs/flux-dev",
|
| 462 |
+
"https://replicate.com/easel/advanced-face-swap",
|
| 463 |
+
"https://replicate.com/ibm-granite/granite-3.2-8b-instruct",
|
| 464 |
+
"https://replicate.com/ideogram-ai/ideogram-v2a-turbo",
|
| 465 |
+
"https://replicate.com/ideogram-ai/ideogram-v2a",
|
| 466 |
+
"https://replicate.com/anthropic/claude-3.7-sonnet",
|
| 467 |
+
"https://replicate.com/minimax/video-01-director",
|
| 468 |
+
"https://replicate.com/anthropic/claude-3.5-haiku",
|
| 469 |
+
"https://replicate.com/anthropic/claude-3.5-sonnet",
|
| 470 |
+
"https://replicate.com/google/upscaler",
|
| 471 |
+
"https://replicate.com/deepseek-ai/deepseek-r1",
|
| 472 |
+
"https://replicate.com/minimax/video-01",
|
| 473 |
+
"https://replicate.com/recraft-ai/recraft-creative-upscale",
|
| 474 |
+
"https://replicate.com/recraft-ai/recraft-crisp-upscale",
|
| 475 |
+
"https://replicate.com/playht/play-dialog",
|
| 476 |
+
"https://replicate.com/ibm-granite/granite-3.1-8b-instruct",
|
| 477 |
+
"https://replicate.com/ibm-granite/granite-3.1-2b-instruct",
|
| 478 |
+
"https://replicate.com/minimax/music-01",
|
| 479 |
+
"https://replicate.com/minimax/video-01-live",
|
| 480 |
+
"https://replicate.com/luma/photon-flash",
|
| 481 |
+
"https://replicate.com/luma/photon",
|
| 482 |
+
"https://replicate.com/haiper-ai/haiper-video-2",
|
| 483 |
+
"https://replicate.com/stability-ai/stable-diffusion-3.5-medium",
|
| 484 |
+
"https://replicate.com/stability-ai/stable-diffusion-3.5-large-turbo",
|
| 485 |
+
"https://replicate.com/stability-ai/stable-diffusion-3.5-large",
|
| 486 |
+
"https://replicate.com/ideogram-ai/ideogram-v2-turbo",
|
| 487 |
+
"https://replicate.com/ideogram-ai/ideogram-v2",
|
| 488 |
+
"https://replicate.com/ibm-granite/granite-3.0-8b-instruct",
|
| 489 |
+
"https://replicate.com/ibm-granite/granite-3.0-2b-instruct",
|
| 490 |
+
"https://replicate.com/ibm-granite/granite-8b-code-instruct-128k",
|
| 491 |
+
"https://replicate.com/ibm-granite/granite-20b-code-instruct-8k",
|
| 492 |
+
"https://replicate.com/meta/meta-llama-3.1-405b-instruct",
|
| 493 |
+
"https://replicate.com/stability-ai/stable-diffusion-3",
|
| 494 |
+
"https://replicate.com/meta/meta-llama-3-70b",
|
| 495 |
+
"https://replicate.com/meta/meta-llama-3-70b-instruct",
|
| 496 |
+
"https://replicate.com/meta/meta-llama-3-8b-instruct"
|
| 497 |
+
];
|
| 498 |
+
|
| 499 |
// ์นดํ
๊ณ ๋ฆฌ ์ ํ
|
| 500 |
function showCategory(category) {
|
| 501 |
currentCategory = category;
|
|
|
|
| 548 |
}
|
| 549 |
|
| 550 |
// Replicate ๋ชจ๋ธ ๋ก๋
|
| 551 |
+
function loadReplicate() {
|
| 552 |
const container = document.getElementById('replicate-content');
|
| 553 |
+
container.innerHTML = '';
|
| 554 |
|
| 555 |
+
// URL์์ ๋ชจ๋ธ ์ ๋ณด ์ถ์ถ
|
| 556 |
+
const models = replicateUrls.map((url, index) => {
|
| 557 |
+
const parts = url.split('/');
|
| 558 |
+
const author = parts[parts.length - 2];
|
| 559 |
+
const modelName = parts[parts.length - 1];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 560 |
|
| 561 |
+
return {
|
| 562 |
+
rank: index + 1,
|
| 563 |
+
title: modelName,
|
| 564 |
+
author: author,
|
| 565 |
+
url: url,
|
| 566 |
+
icon: getModelIcon(modelName),
|
| 567 |
+
badge: 'โ
Official'
|
| 568 |
+
};
|
| 569 |
+
});
|
| 570 |
+
|
| 571 |
+
// ๋ชจ๋ธ ์นด๋ ์์ฑ ๋ฐ ํ์
|
| 572 |
+
models.forEach(model => {
|
| 573 |
+
const card = createModelCard(model);
|
| 574 |
+
container.appendChild(card);
|
| 575 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 576 |
}
|
| 577 |
|
| 578 |
// ํ๋ก์ ์์ฒญ
|
|
|
|
| 638 |
});
|
| 639 |
}
|
| 640 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 641 |
// ๋ชจ๋ธ ์นด๋ ์์ฑ
|
| 642 |
function createModelCard(data) {
|
| 643 |
const card = document.createElement('div');
|
|
|
|
| 691 |
function getModelIcon(name) {
|
| 692 |
if (!name) return '๐ค';
|
| 693 |
const lowerName = name.toLowerCase();
|
| 694 |
+
if (lowerName.includes('imagen') || lowerName.includes('dall-e') || lowerName.includes('stable-diffusion') || lowerName.includes('flux') || lowerName.includes('ideogram') || lowerName.includes('recraft')) return '๐จ';
|
| 695 |
+
if (lowerName.includes('video') || lowerName.includes('veo') || lowerName.includes('ray') || lowerName.includes('kling') || lowerName.includes('pixverse') || lowerName.includes('wan') || lowerName.includes('haiper')) return '๐ฌ';
|
| 696 |
+
if (lowerName.includes('audio') || lowerName.includes('music') || lowerName.includes('speech') || lowerName.includes('voice') || lowerName.includes('lyria') || lowerName.includes('play-dialog')) return '๐ต';
|
| 697 |
+
if (lowerName.includes('llama') || lowerName.includes('gpt') || lowerName.includes('claude') || lowerName.includes('granite') || lowerName.includes('mistral') || lowerName.includes('deepseek')) return '๐ฌ';
|
| 698 |
+
if (lowerName.includes('upscale') || lowerName.includes('upscaler')) return '๐';
|
| 699 |
+
if (lowerName.includes('swap') || lowerName.includes('avatar') || lowerName.includes('face')) return '๐ค';
|
| 700 |
+
if (lowerName.includes('svg')) return '๐ฏ';
|
| 701 |
+
if (lowerName.includes('color') || lowerName.includes('photon')) return '๐จ';
|
| 702 |
return '๐ค';
|
| 703 |
}
|
| 704 |
|
|
|
|
| 745 |
});
|
| 746 |
}
|
| 747 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 748 |
// ์๋ก๊ณ ์นจ
|
| 749 |
function refreshCurrent() {
|
| 750 |
if (currentCategory === 'hf-models') {
|