chess / index.html
openfree's picture
Update index.html
0447a88 verified
raw
history blame
16.4 kB
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>ํ”„๋กœ์ ํŠธ ๋ทฐ์–ด (์ž๋™ ๋ถ„๋ฅ˜ ๋ฐ URL ๋ณ€ํ™˜)</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
color: #333;
}
.github-link {
text-align: center;
padding: 8px;
background-color: #24292e;
color: #fff;
font-size: 14px;
}
.github-link a {
color: #fff;
text-decoration: none;
}
.filter-group {
padding: 10px;
background-color: #fff;
border-bottom: 1px solid #eee;
text-align: center;
overflow-x: auto;
white-space: nowrap;
}
.filter-group .toggle-button {
padding: 6px 12px;
margin: 5px;
border: 1px solid #ddd;
border-radius: 15px;
background-color: #fff;
font-size: 13px;
cursor: pointer;
display: inline-block;
}
.filter-group .toggle-button.active {
background-color: #2196f3;
border-color: #2196f3;
color: #fff;
}
.main-container {
display: flex;
height: calc(100vh - 100px); /* ์ƒ๋‹จ ์˜์—ญ ์ œ์™ธ ์ „์ฒด ๋†’์ด */
}
#sidebar {
width: 25%;
border-right: 1px solid #ccc;
overflow-y: auto;
padding: 10px;
}
#sidebar ul {
list-style: none;
padding: 0;
margin: 0;
}
#sidebar li {
margin: 5px 0;
padding: 8px;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
}
#sidebar li:hover {
background-color: #f0f0f0;
}
/* ์šฐ์ธก ์ž„๋ฒ ๋“œ ์˜์—ญ: ๋‚จ์€ ๊ณต๊ฐ„์„ ๋ชจ๋‘ ์ฐจ์ง€ */
#embed-container {
flex: 1;
padding: 0;
margin: 0;
background-color: #fff;
}
#embed-container iframe {
width: 100%;
height: 100%;
border: none;
display: block;
}
</style>
</head>
<body>
<div class="github-link">
<a href="https://discord.gg/openfreeai" target="_blank">Community</a>
</div>
<!-- ํ•„ํ„ฐ ๋ฒ„ํŠผ ์˜์—ญ (๋ฏธ๋ฆฌ ์ •์˜ํ•œ 10๊ฐ€์ง€ ๊ทธ๋ฃน ์‚ฌ์šฉ) -->
<div class="filter-group" id="filter-group">
<!-- JavaScript๋กœ ๋™์ ์œผ๋กœ ๋ฒ„ํŠผ ์ƒ์„ฑ -->
</div>
<div class="main-container">
<!-- ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”: ์„ ํƒํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ํ•ญ๋ชฉ ์ „์ฒด ๋ชฉ๋ก -->
<div id="sidebar">
<!-- JavaScript๋กœ ๋™์ ์œผ๋กœ ์ƒ์„ฑ -->
</div>
<!-- ์šฐ์ธก ์ž„๋ฒ ๋“œ ์˜์—ญ -->
<div id="embed-container">
<iframe id="embed-frame" src=""></iframe>
</div>
</div>
<script>
// 1. ์ œ๊ณต๋œ ์ „์ฒด ํ”„๋กœ์ ํŠธ ๋ฆฌ์ŠคํŠธ (ํ‚ค: ํ”„๋กœ์ ํŠธ ์ด๋ฆ„, ๊ฐ’: URL)
const projectList = {
"fantos/Panorama": "https://huggingface.co/spaces/fantos/Panorama",
"ginigen/Multi-LoRAgen": "https://huggingface.co/spaces/ginigen/Multi-LoRAgen",
"ginigen/canvas-studio": "https://huggingface.co/spaces/ginigen/canvas-studio",
"ginipick/Fashion-Stylegen": "https://huggingface.co/spaces/ginipick/Fashion-Style",
"ginipick/Time-Stream": "https://huggingface.co/spaces/ginipick/Time-Stream",
"ginipick/AccuVision-Diffusion": "https://huggingface.co/spaces/ginipick/AccuVision-Diffusion",
"fantos/Magic-Drawings": "https://huggingface.co/spaces/fantos/Magic-Drawings",
"ginigen/Lumina-Image-PLUS": "https://huggingface.co/spaces/ginigen/Lumina-Image-PLUS",
"fantaxy/fantasy-novel": "https://huggingface.co/spaces/fantaxy/fantasy-novel",
"fantaxy/eros": "https://huggingface.co/spaces/fantaxy/eros",
"fantaxy/adult-novel": "https://huggingface.co/spaces/fantaxy/adult-novel",
"fantaxy/kungfu-novel": "https://huggingface.co/spaces/fantaxy/kungfu-novel",
"fantaxy/love-novel": "https://huggingface.co/spaces/fantaxy/love-novel",
"VIDraft/mouse-webgen": "https://huggingface.co/spaces/VIDraft/mouse-webgen",
"immunobiotech/MUSIC-Jukebox": "https://huggingface.co/spaces/immunobiotech/MUSIC-Jukebox",
"seawolf2357/Flowise-AI": "https://huggingface.co/spaces/seawolf2357/Flowise-AI",
"ginigen/Flux-LayerDiffuse": "https://huggingface.co/spaces/ginigen/Flux-LayerDiffuse",
"VIDraft/Portrait-Animation": "https://huggingface.co/spaces/VIDraft/Portrait-Animation",
"VIDraft/Deepseek-Multimodal": "https://huggingface.co/spaces/VIDraft/Deepseek-Multimodal",
"VIDraft/BLIP2": "https://huggingface.co/spaces/VIDraft/BLIP2",
"ginigen/text3d-r1": "https://huggingface.co/spaces/ginigen/text3d-r1",
"immunobiotech/drug-discovery": "https://huggingface.co/spaces/immunobiotech/drug-discovery",
"openfree/VisionOCR-Chat": "https://huggingface.co/spaces/openfree/VisionOCR-Chat",
"immunobiotech/MICHELIN": "https://huggingface.co/spaces/immunobiotech/MICHELIN",
"immunobiotech/MICHELIN-korea": "https://huggingface.co/spaces/immunobiotech/MICHELIN-korea",
"immunobiotech/MICHELIN-japan": "https://huggingface.co/spaces/immunobiotech/MICHELIN-japan",
"immunobiotech/MICHELIN-china": "https://huggingface.co/spaces/immunobiotech/MICHELIN-china",
"VIDraft/money-radar-korea": "https://huggingface.co/spaces/VIDraft/money-radar-korea",
"VIDraft/money-radar": "https://huggingface.co/spaces/VIDraft/money-radar",
"ginipick/PharmAI-Korea": "https://huggingface.co/spaces/ginipick/PharmAI-Korea",
"ginigen/MagicFace-V3": "https://huggingface.co/spaces/ginigen/MagicFace-V3",
"aiqcamp/MindMap": "https://huggingface.co/spaces/aiqcamp/MindMap",
"ginigen/3D-LLAMA": "https://huggingface.co/spaces/ginigen/3D-LLAMA",
"openfree/VectorFlow": "https://huggingface.co/spaces/openfree/VectorFlow",
"openfree/webtoon-gen": "https://huggingface.co/spaces/openfree/webtoon-gen",
"VIDraft/topic-prediction": "https://huggingface.co/spaces/VIDraft/topic-prediction",
"VIDraft/PapersImpact": "https://huggingface.co/spaces/VIDraft/PapersImpact",
"VIDraft/EveryRAG": "https://huggingface.co/spaces/VIDraft/EveryRAG",
"VIDraft/korea-president-DJ": "https://huggingface.co/spaces/VIDraft/korea-president-DJ",
"VIDraft/korea-president-PARK": "https://huggingface.co/spaces/VIDraft/korea-president-PARK",
"openfree/image-to-vector": "https://huggingface.co/spaces/openfree/image-to-vector",
"ginipick/QR-Canvas-plus": "https://huggingface.co/spaces/ginipick/QR-Canvas-plus",
"ginigen/text3d-R1": "https://huggingface.co/spaces/ginigen/text3d-R1",
"openfree/MagicFace-V3": "https://huggingface.co/spaces/openfree/MagicFace-V3",
"ginipick/DeepSeekR1-LIVE": "https://huggingface.co/spaces/ginipick/DeepSeekR1-LIVE",
"ginipick/like-history": "https://huggingface.co/spaces/ginipick/like-history",
"ginigen/ColPali-multi": "https://huggingface.co/spaces/ginigen/ColPali-multi",
"ginigen/Janus-Pro-7B": "https://huggingface.co/spaces/ginigen/Janus-Pro-7B",
"ginigen/Animagine": "https://huggingface.co/spaces/ginigen/Animagine",
"openfree/PDF-RAG": "https://huggingface.co/spaces/openfree/PDF-RAG",
"fantos/Ranking-Tracker": "https://huggingface.co/spaces/fantos/Ranking-Tracker",
"aiqcamp/Multilingual-Images": "https://huggingface.co/spaces/aiqcamp/Multilingual-Images",
"aiqcamp/Gemini2-Flash-Thinking": "https://huggingface.co/spaces/aiqcamp/Gemini2-Flash-Thinking",
"openfree/pepe": "https://huggingface.co/spaces/openfree/pepe",
"openfree/korea-president-yoon": "https://huggingface.co/spaces/openfree/korea-president-yoon",
"openfree/CryptoVision": "https://huggingface.co/spaces/openfree/CryptoVision",
"fantos/VoiceClone": "https://huggingface.co/spaces/fantos/VoiceClone",
"seawolf2357/ocrlatex": "https://huggingface.co/spaces/seawolf2357/ocrlatex",
"seawolf2357/img2vid": "https://huggingface.co/spaces/seawolf2357/img2vid",
"seawolf2357/sd-prompt-gen": "https://huggingface.co/spaces/seawolf2357/sd-prompt-gen",
"openfree/tarotcard": "https://huggingface.co/spaces/openfree/tarotcard",
"aiqcamp/Polaroid": "https://huggingface.co/spaces/aiqcamp/Polaroid",
"ginigen/cartoon": "https://huggingface.co/spaces/ginigen/cartoon",
"ginigen/Book-Cover": "https://huggingface.co/spaces/ginigen/Book-Cover",
"aiqcamp/fash": "https://huggingface.co/spaces/aiqcamp/fash",
"gunship999/Korea-Daily-News": "https://huggingface.co/spaces/gunship999/Korea-Daily-News",
"immunobiotech/ChicagoGallery": "https://huggingface.co/spaces/immunobiotech/ChicagoGallery",
"immunobiotech/MetropolitanMuseum": "https://huggingface.co/spaces/immunobiotech/MetropolitanMuseum",
"immunobiotech/opensky": "https://huggingface.co/spaces/immunobiotech/opensky",
"VIDraft/eum": "https://huggingface.co/spaces/VIDraft/eum",
"aiqtech/FLUX-military": "https://huggingface.co/spaces/aiqtech/FLUX-military",
"fantaxy/Rolls-Royce": "https://huggingface.co/spaces/fantaxy/Rolls-Royce",
"seawolf2357/flux-korea-hanbok-lora": "https://huggingface.co/spaces/seawolf2357/flux-korea-hanbok-lora",
"seawolf2357/flux-korea-palace-lora": "https://huggingface.co/spaces/seawolf2357/flux-korea-palace-lora",
"aiqcamp/flux-cat-lora": "https://huggingface.co/spaces/aiqcamp/flux-cat-lora",
"gunship999/SexyImages": "https://huggingface.co/spaces/gunship999/SexyImages",
"aiqtech/flux-claude-monet-lora": "https://huggingface.co/spaces/aiqtech/flux-claude-monet-lora",
"seawolf2357/3D-Avatar-Generator": "https://huggingface.co/spaces/seawolf2357/3D-Avatar-Generator",
"fantaxy/playground25": "https://huggingface.co/spaces/fantaxy/playground25",
"openfree/ultpixgen": "https://huggingface.co/spaces/openfree/ultpixgen",
"seawolf2357/REALVISXL-V5": "https://huggingface.co/spaces/seawolf2357/REALVISXL-V5",
"fantos/flxcontrol": "https://huggingface.co/spaces/fantos/flxcontrol",
"fantos/textcutobject": "https://huggingface.co/spaces/fantos/textcutobject",
"ginipick/FLUX-Prompt-Generator": "https://huggingface.co/spaces/ginipick/FLUX-Prompt-Generator",
"fantaxy/flxloraexp": "https://huggingface.co/spaces/fantaxy/flxloraexp",
"fantos/flxloraexp": "https://huggingface.co/spaces/fantos/flxloraexp",
"seawolf2357/flxloraexp": "https://huggingface.co/spaces/seawolf2357/flxloraexp",
"ginipick/flxloraexp": "https://huggingface.co/spaces/ginipick/flxloraexp",
"aiqcamp/imagemagic": "https://huggingface.co/spaces/aiqcamp/imagemagic",
"openfree/ColorRevive": "https://huggingface.co/spaces/openfree/ColorRevive",
"VIDraft/RAGOndevice": "https://huggingface.co/spaces/VIDraft/RAGOndevice",
"aiqcamp/AudioLlama": "https://huggingface.co/spaces/aiqcamp/AudioLlama",
"ginigen/FLUXllama-Multilingual": "https://huggingface.co/spaces/ginigen/FLUXllama-Multilingual",
"ginipick/FitGen": "https://huggingface.co/spaces/ginipick/FitGen",
"fantaxy/FLUX-Animations": "https://huggingface.co/spaces/fantaxy/FLUX-Animations",
"fantaxy/Remove-Video-Background": "https://huggingface.co/spaces/fantaxy/Remove-Video-Background",
"fantaxy/ofai-flx-logo": "https://huggingface.co/spaces/fantaxy/ofai-flx-logo",
"fantaxy/flx-pulid": "https://huggingface.co/spaces/fantaxy/flx-pulid",
"fantaxy/flx-upscale": "https://huggingface.co/spaces/fantaxy/flx-upscale",
"aiqcamp/Fashion-FLUX": "https://huggingface.co/spaces/aiqcamp/Fashion-FLUX",
"fantos/x-mas": "https://huggingface.co/spaces/fantos/x-mas",
"openfree/Korean-Leaderboard": "https://huggingface.co/spaces/openfree/Korean-Leaderboard",
"ginipick/FLUXllama": "https://huggingface.co/spaces/ginipick/FLUXllama",
"fantaxy/Sound-AI-SFX": "https://huggingface.co/spaces/fantaxy/Sound-AI-SFX",
"fantos/flx8lora": "https://huggingface.co/spaces/fantos/flx8lora",
"openfree/trending-board": "https://huggingface.co/spaces/openfree/trending-board",
"aiqtech/Particle-Accelerator-Simulation": "https://huggingface.co/spaces/aiqtech/Particle-Accelerator-Simulation",
"ginipick/Realtime-FLUX": "https://huggingface.co/spaces/ginipick/Realtime-FLUX",
"VIDraft/prime-number": "https://huggingface.co/spaces/VIDraft/prime-number",
"aiqtech/kofaceid": "https://huggingface.co/spaces/aiqtech/kofaceid",
"fantaxy/fastvideogena": "https://huggingface.co/spaces/fantaxy/fastvideogen",
"fantos/cogvidx": "https://huggingface.co/spaces/fantos/cogvidx",
"fantos/flxfashmodel": "https://huggingface.co/spaces/fantos/flxfashmodel",
"fantos/kolcontrl": "https://huggingface.co/spaces/fantos/kolcontrl",
"aiqtech/cinevid": "https://huggingface.co/spaces/aiqtech/cinevid",
"aiqtech/FLUX-Ghibli-Studio-LoRA": "https://huggingface.co/spaces/aiqtech/FLUX-Ghibli-Studio-LoRA",
"aiqtech/flxgif": "https://huggingface.co/spaces/aiqtech/flxgif",
"aiqtech/imaginpaint": "https://huggingface.co/spaces/aiqtech/imaginpaint"
};
// 2. URL ๋ณ€ํ™˜ ํ•จ์ˆ˜: "https://huggingface.co/spaces/{namespace}/{project}" โ†’ "https://{namespace}-{project}.hf.space"
function transformUrl(url) {
const prefix = "https://huggingface.co/spaces/";
if (url.startsWith(prefix)) {
const rest = url.substring(prefix.length);
return "https://" + rest.replace("/", "-") + ".hf.space";
}
return url;
}
// 3. ๋ชจ๋“  ํ•ญ๋ชฉ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๊ฐ•์ œ๋กœ "Image Gen"์œผ๋กœ ์ง€์ •ํ•˜๊ณ , ์ด๋ฆ„์„ "Image Gen/ํ”„๋กœ์ ํŠธ๋ช…" ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝ
const keys = Object.keys(projectList);
const projects = keys.map((key) => {
const projectName = key.split("/").slice(1).join("/");
return {
name: "Image Gen/" + projectName,
url: transformUrl(projectList[key]),
category: "Image Gen"
};
});
// 4. (ํ˜„์žฌ ๋ชจ๋“  ํ•ญ๋ชฉ์ด "Image Gen"์ด์ง€๋งŒ) ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๊ทธ๋ฃนํ™”
const grouped = {};
projects.forEach(project => {
const cat = project.category;
if (!grouped[cat]) {
grouped[cat] = [];
}
grouped[cat].push(project);
});
// 5. ํ•„ํ„ฐ ๋ฒ„ํŠผ์€ ๋ฏธ๋ฆฌ ์ •์˜ํ•œ 10๊ฐ€์ง€ ๊ทธ๋ฃน์œผ๋กœ ์ƒ์„ฑ (NEW, BEST, Text, Image Gen, Image Edit, Audio, Video, Productivity, Utility, Vision)
const fixedGroups = ["NEW", "BEST", "Text", "Image Gen", "Image Edit", "Audio", "Video", "Productivity", "Utility", "Vision"];
const filterGroupDiv = document.getElementById("filter-group");
const allButton = document.createElement("button");
allButton.className = "toggle-button active";
allButton.setAttribute("data-filter", "all");
allButton.textContent = "All";
filterGroupDiv.appendChild(allButton);
fixedGroups.forEach(category => {
const btn = document.createElement("button");
btn.className = "toggle-button";
btn.setAttribute("data-filter", category);
btn.textContent = category;
filterGroupDiv.appendChild(btn);
});
// 6. ์‚ฌ์ด๋“œ๋ฐ” ์—…๋ฐ์ดํŠธ ํ•จ์ˆ˜: ์„ ํƒํ•œ ํ•„ํ„ฐ์˜ ํ•ญ๋ชฉ ์ถœ๋ ฅ
function updateSidebar(filter) {
const sidebar = document.getElementById("sidebar");
sidebar.innerHTML = "";
let items = (filter === "all") ? projects : projects.filter(project => project.category === filter);
const ul = document.createElement("ul");
items.forEach(item => {
const li = document.createElement("li");
li.textContent = item.name;
li.addEventListener("click", function() {
document.getElementById("embed-frame").setAttribute("src", item.url);
});
ul.appendChild(li);
});
sidebar.appendChild(ul);
if (items.length > 0) {
document.getElementById("embed-frame").setAttribute("src", items[0].url);
} else {
document.getElementById("embed-frame").setAttribute("src", "");
}
}
// 7. ํ•„ํ„ฐ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
document.querySelectorAll(".toggle-button").forEach(button => {
button.addEventListener("click", function() {
document.querySelectorAll(".toggle-button").forEach(btn => btn.classList.remove("active"));
this.classList.add("active");
updateSidebar(this.getAttribute("data-filter"));
});
});
// 8. ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ ๊ธฐ๋ณธ "all" ํ•„ํ„ฐ ์ ์šฉ
updateSidebar("all");
</script>
</body>
</html>