openfree commited on
Commit
1b5e3b6
·
verified ·
1 Parent(s): 599adfe

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +565 -18
index.html CHANGED
@@ -1,19 +1,566 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
+ <!DOCTYPE html>
2
+ <html lang="ko">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>프로젝트 뷰어 (자동 분류 및 URL 변환)</title>
7
+ <style>
8
+ body {
9
+ font-family: Arial, sans-serif;
10
+ margin: 0;
11
+ padding: 0;
12
+ background-color: #f4f4f9;
13
+ color: #333;
14
+ }
15
+ .github-link {
16
+ text-align: center;
17
+ padding: 8px;
18
+ background-color: #24292e;
19
+ color: #fff;
20
+ font-size: 14px;
21
+ }
22
+ .github-link a {
23
+ color: #fff;
24
+ text-decoration: none;
25
+ }
26
+ .filter-group {
27
+ padding: 10px;
28
+ background-color: #fff;
29
+ border-bottom: 1px solid #eee;
30
+ text-align: center;
31
+ overflow-x: auto;
32
+ white-space: nowrap;
33
+ }
34
+ .filter-group .toggle-button {
35
+ padding: 6px 12px;
36
+ margin: 5px;
37
+ border: 1px solid #ddd;
38
+ border-radius: 15px;
39
+ background-color: #fff;
40
+ font-size: 13px;
41
+ cursor: pointer;
42
+ display: inline-block;
43
+ }
44
+ .filter-group .toggle-button.active {
45
+ background-color: #2196f3;
46
+ border-color: #2196f3;
47
+ color: #fff;
48
+ }
49
+ .main-container {
50
+ display: flex;
51
+ height: calc(100vh - 100px); /* 상단 영역 제외 전체 높이 */
52
+ }
53
+ #sidebar {
54
+ width: 25%;
55
+ border-right: 1px solid #ccc;
56
+ overflow-y: auto;
57
+ padding: 10px;
58
+ }
59
+ #sidebar ul {
60
+ list-style: none;
61
+ padding: 0;
62
+ margin: 0;
63
+ }
64
+ #sidebar li {
65
+ margin: 5px 0;
66
+ padding: 8px;
67
+ background-color: #fff;
68
+ border: 1px solid #ddd;
69
+ border-radius: 4px;
70
+ cursor: pointer;
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: space-between;
74
+ }
75
+ #sidebar li:hover {
76
+ background-color: #f0f0f0;
77
+ }
78
+ #sidebar li button {
79
+ margin-left: 8px;
80
+ padding: 4px 8px;
81
+ cursor: pointer;
82
+ font-size: 12px;
83
+ border-radius: 4px;
84
+ border: 1px solid #ccc;
85
+ background-color: #fafafa;
86
+ }
87
+ #embed-container {
88
+ flex: 1;
89
+ padding: 0;
90
+ margin: 0;
91
+ background-color: #fff;
92
+ }
93
+ #embed-container iframe {
94
+ width: 100%;
95
+ height: 100%;
96
+ border: none;
97
+ display: block;
98
+ }
99
+ </style>
100
+ </head>
101
+ <body>
102
+ <div class="github-link">
103
+ <a href="https://discord.gg/openfreeai" target="_blank">Community</a>
104
+ </div>
105
+
106
+ <!-- 필터 버튼 영역 -->
107
+ <div class="filter-group" id="filter-group">
108
+ <!-- JavaScript로 동적으로 버튼 생성 -->
109
+ </div>
110
+
111
+ <div class="main-container">
112
+ <div id="sidebar"></div>
113
+ <div id="embed-container">
114
+ <iframe id="embed-frame" src=""></iframe>
115
+ </div>
116
+ </div>
117
+
118
+ <script>
119
+ // 1. 프로젝트 URL 목록: 프로젝트 이름 -> URL
120
+ const projectList = {
121
+ "fantos/Panorama": "https://huggingface.co/spaces/fantos/Panorama",
122
+ "ginigen/Multi-LoRAgen": "https://huggingface.co/spaces/ginigen/Multi-LoRAgen",
123
+ "ginigen/canvas-studio": "https://huggingface.co/spaces/ginigen/canvas-studio",
124
+ "ginipick/Fashion-Stylegen": "https://huggingface.co/spaces/ginipick/Fashion-Style",
125
+ "ginipick/Time-Stream": "https://huggingface.co/spaces/ginipick/Time-Stream",
126
+ "ginipick/AccuVision-Diffusion": "https://huggingface.co/spaces/ginipick/AccuVision-Diffusion",
127
+ "fantos/Magic-Drawings": "https://huggingface.co/spaces/fantos/Magic-Drawings",
128
+ "ginigen/Lumina-Image-PLUS": "https://huggingface.co/spaces/ginigen/Lumina-Image-PLUS",
129
+ "fantaxy/fantasy-novel": "https://huggingface.co/spaces/fantaxy/fantasy-novel",
130
+ "fantaxy/eros": "https://huggingface.co/spaces/fantaxy/eros",
131
+ "fantaxy/adult-novel": "https://huggingface.co/spaces/fantaxy/adult-novel",
132
+ "fantaxy/kungfu-novel": "https://huggingface.co/spaces/fantaxy/kungfu-novel",
133
+ "fantaxy/love-novel": "https://huggingface.co/spaces/fantaxy/love-novel",
134
+ "VIDraft/mouse-webgen": "https://huggingface.co/spaces/VIDraft/mouse-webgen",
135
+ "immunobiotech/MUSIC-Jukebox": "https://huggingface.co/spaces/immunobiotech/MUSIC-Jukebox",
136
+ "seawolf2357/Flowise-AI": "https://huggingface.co/spaces/seawolf2357/Flowise-AI",
137
+ "ginigen/Flux-LayerDiffuse": "https://huggingface.co/spaces/ginigen/Flux-LayerDiffuse",
138
+ "VIDraft/Portrait-Animation": "https://huggingface.co/spaces/VIDraft/Portrait-Animation",
139
+ "VIDraft/Deepseek-Multimodal": "https://huggingface.co/spaces/VIDraft/Deepseek-Multimodal",
140
+ "VIDraft/BLIP2": "https://huggingface.co/spaces/VIDraft/BLIP2",
141
+ "ginigen/text3d-r1": "https://huggingface.co/spaces/ginigen/text3d-r1",
142
+ "immunobiotech/drug-discovery": "https://huggingface.co/spaces/immunobiotech/drug-discovery",
143
+ "openfree/VisionOCR-Chat": "https://huggingface.co/spaces/openfree/VisionOCR-Chat",
144
+ "immunobiotech/MICHELIN": "https://huggingface.co/spaces/immunobiotech/MICHELIN",
145
+ "immunobiotech/MICHELIN-korea": "https://huggingface.co/spaces/immunobiotech/MICHELIN-korea",
146
+ "immunobiotech/MICHELIN-japan": "https://huggingface.co/spaces/immunobiotech/MICHELIN-japan",
147
+ "immunobiotech/MICHELIN-china": "https://huggingface.co/spaces/immunobiotech/MICHELIN-china",
148
+ "VIDraft/money-radar-korea": "https://huggingface.co/spaces/VIDraft/money-radar-korea",
149
+ "VIDraft/money-radar": "https://huggingface.co/spaces/VIDraft/money-radar",
150
+ "ginipick/PharmAI-Korea": "https://huggingface.co/spaces/ginipick/PharmAI-Korea",
151
+ "ginigen/MagicFace-V3": "https://huggingface.co/spaces/ginigen/MagicFace-V3",
152
+ "aiqcamp/MindMap": "https://huggingface.co/spaces/aiqcamp/MindMap",
153
+ "ginigen/3D-LLAMA": "https://huggingface.co/spaces/ginigen/3D-LLAMA",
154
+ "openfree/VectorFlow": "https://huggingface.co/spaces/openfree/VectorFlow",
155
+ "openfree/webtoon-gen": "https://huggingface.co/spaces/openfree/webtoon-gen",
156
+ "VIDraft/topic-prediction": "https://huggingface.co/spaces/VIDraft/topic-prediction",
157
+ "VIDraft/PapersImpact": "https://huggingface.co/spaces/VIDraft/PapersImpact",
158
+ "VIDraft/EveryRAG": "https://huggingface.co/spaces/VIDraft/EveryRAG",
159
+ "VIDraft/korea-president-DJ": "https://huggingface.co/spaces/VIDraft/korea-president-DJ",
160
+ "VIDraft/korea-president-PARK": "https://huggingface.co/spaces/VIDraft/korea-president-PARK",
161
+ "openfree/image-to-vector": "https://huggingface.co/spaces/openfree/image-to-vector",
162
+ "ginipick/QR-Canvas-plus": "https://huggingface.co/spaces/ginipick/QR-Canvas-plus",
163
+ "ginigen/text3d-R1": "https://huggingface.co/spaces/ginigen/text3d-R1",
164
+ "openfree/MagicFace-V3": "https://huggingface.co/spaces/openfree/MagicFace-V3",
165
+ "ginipick/DeepSeekR1-LIVE": "https://huggingface.co/spaces/ginipick/DeepSeekR1-LIVE",
166
+ "ginigen/ColPali-multi": "https://huggingface.co/spaces/ginigen/ColPali-multi",
167
+ "ginigen/Janus-Pro-7B": "https://huggingface.co/spaces/ginigen/Janus-Pro-7B",
168
+ "ginigen/Animagine": "https://huggingface.co/spaces/ginigen/Animagine",
169
+ "openfree/PDF-RAG": "https://huggingface.co/spaces/openfree/PDF-RAG",
170
+ "fantos/Ranking-Tracker": "https://huggingface.co/spaces/fantos/Ranking-Tracker",
171
+ "aiqcamp/Multilingual-Images": "https://huggingface.co/spaces/aiqcamp/Multilingual-Images",
172
+ "aiqcamp/Gemini2-Flash-Thinking": "https://huggingface.co/spaces/aiqcamp/Gemini2-Flash-Thinking",
173
+ "openfree/pepe": "https://huggingface.co/spaces/openfree/pepe",
174
+ "openfree/korea-president-yoon": "https://huggingface.co/spaces/openfree/korea-president-yoon",
175
+ "openfree/CryptoVision": "https://huggingface.co/spaces/openfree/CryptoVision",
176
+ "fantos/VoiceClone": "https://huggingface.co/spaces/fantos/VoiceClone",
177
+ "seawolf2357/ocrlatex": "https://huggingface.co/spaces/seawolf2357/ocrlatex",
178
+ "seawolf2357/img2vid": "https://huggingface.co/spaces/seawolf2357/img2vid",
179
+ "seawolf2357/sd-prompt-gen": "https://huggingface.co/spaces/seawolf2357/sd-prompt-gen",
180
+ "openfree/tarotcard": "https://huggingface.co/spaces/openfree/tarotcard",
181
+ "aiqcamp/Polaroid": "https://huggingface.co/spaces/aiqcamp/Polaroid",
182
+ "ginigen/cartoon": "https://huggingface.co/spaces/ginigen/cartoon",
183
+ "ginigen/Book-Cover": "https://huggingface.co/spaces/ginigen/Book-Cover",
184
+ "aiqcamp/fash": "https://huggingface.co/spaces/aiqcamp/fash",
185
+ "gunship999/Korea-Daily-News": "https://huggingface.co/spaces/gunship999/Korea-Daily-News",
186
+ "immunobiotech/ChicagoGallery": "https://huggingface.co/spaces/immunobiotech/ChicagoGallery",
187
+ "immunobiotech/MetropolitanMuseum": "https://huggingface.co/spaces/immunobiotech/MetropolitanMuseum",
188
+ "immunobiotech/opensky": "https://huggingface.co/spaces/immunobiotech/opensky",
189
+ "aiqtech/FLUX-military": "https://huggingface.co/spaces/aiqtech/FLUX-military",
190
+ "fantaxy/Rolls-Royce": "https://huggingface.co/spaces/fantaxy/Rolls-Royce",
191
+ "seawolf2357/flux-korea-hanbok-lora": "https://huggingface.co/spaces/seawolf2357/flux-korea-hanbok-lora",
192
+ "seawolf2357/flux-korea-palace-lora": "https://huggingface.co/spaces/seawolf2357/flux-korea-palace-lora",
193
+ "aiqcamp/flux-cat-lora": "https://huggingface.co/spaces/aiqcamp/flux-cat-lora",
194
+ "gunship999/SexyImages": "https://huggingface.co/spaces/gunship999/SexyImages",
195
+ "aiqtech/flux-claude-monet-lora": "https://huggingface.co/spaces/aiqtech/flux-claude-monet-lora",
196
+ "seawolf2357/3D-Avatar-Generator": "https://huggingface.co/spaces/seawolf2357/3D-Avatar-Generator",
197
+ "fantaxy/playground25": "https://huggingface.co/spaces/fantaxy/playground25",
198
+ "openfree/ultpixgen": "https://huggingface.co/spaces/openfree/ultpixgen",
199
+ "seawolf2357/REALVISXL-V5": "https://huggingface.co/spaces/seawolf2357/REALVISXL-V5",
200
+ "fantos/flxcontrol": "https://huggingface.co/spaces/fantos/flxcontrol",
201
+ "fantos/textcutobject": "https://huggingface.co/spaces/fantos/textcutobject",
202
+ "ginipick/FLUX-Prompt-Generator": "https://huggingface.co/spaces/ginipick/FLUX-Prompt-Generator",
203
+ "fantaxy/flxloraexp": "https://huggingface.co/spaces/fantaxy/flxloraexp",
204
+ "fantos/flxloraexp": "https://huggingface.co/spaces/fantos/flxloraexp",
205
+ "seawolf2357/flxloraexp": "https://huggingface.co/spaces/seawolf2357/flxloraexp",
206
+ "ginipick/flxloraexp": "https://huggingface.co/spaces/ginipick/flxloraexp",
207
+ "aiqcamp/imagemagic": "https://huggingface.co/spaces/aiqcamp/imagemagic",
208
+ "openfree/ColorRevive": "https://huggingface.co/spaces/openfree/ColorRevive",
209
+ "VIDraft/RAGOndevice": "https://huggingface.co/spaces/VIDraft/RAGOndevice",
210
+ "aiqcamp/AudioLlama": "https://huggingface.co/spaces/aiqcamp/AudioLlama",
211
+ "ginigen/FLUXllama-Multilingual": "https://huggingface.co/spaces/ginigen/FLUXllama-Multilingual",
212
+ "ginipick/FitGen": "https://huggingface.co/spaces/ginipick/FitGen",
213
+ "fantaxy/FLUX-Animations": "https://huggingface.co/spaces/fantaxy/FLUX-Animations",
214
+ "fantaxy/Remove-Video-Background": "https://huggingface.co/spaces/fantaxy/Remove-Video-Background",
215
+ "fantaxy/ofai-flx-logo": "https://huggingface.co/spaces/fantaxy/ofai-flx-logo",
216
+ "fantaxy/flx-pulid": "https://huggingface.co/spaces/fantaxy/flx-pulid",
217
+ "fantaxy/flx-upscale": "https://huggingface.co/spaces/fantaxy/flx-upscale",
218
+ "aiqcamp/Fashion-FLUX": "https://huggingface.co/spaces/aiqcamp/Fashion-FLUX",
219
+ "fantos/x-mas": "https://huggingface.co/spaces/fantos/x-mas",
220
+ "openfree/Korean-Leaderboard": "https://huggingface.co/spaces/openfree/Korean-Leaderboard",
221
+ "ginipick/FLUXllama": "https://huggingface.co/spaces/ginipick/FLUXllama",
222
+ "fantaxy/Sound-AI-SFX": "https://huggingface.co/spaces/fantaxy/Sound-AI-SFX",
223
+ "fantos/flx8lora": "https://huggingface.co/spaces/fantos/flx8lora",
224
+ "openfree/trending-board": "https://huggingface.co/spaces/openfree/trending-board",
225
+ "ginipick/Realtime-FLUX": "https://huggingface.co/spaces/ginipick/Realtime-FLUX",
226
+ "aiqtech/kofaceid": "https://huggingface.co/spaces/aiqtech/kofaceid",
227
+ "fantaxy/fastvideogena": "https://huggingface.co/spaces/fantaxy/fastvideogen",
228
+ "fantos/flxfashmodel": "https://huggingface.co/spaces/fantos/flxfashmodel",
229
+ "fantos/kolcontrl": "https://huggingface.co/spaces/fantos/kolcontrl",
230
+ "aiqtech/cinevid": "https://huggingface.co/spaces/aiqtech/cinevid",
231
+ "aiqtech/FLUX-Ghibli-Studio-LoRA": "https://huggingface.co/spaces/aiqtech/FLUX-Ghibli-Studio-LoRA",
232
+ "aiqtech/flxgif": "https://huggingface.co/spaces/aiqtech/flxgif",
233
+ "aiqtech/imaginpaint": "https://huggingface.co/spaces/aiqtech/imaginpaint"
234
+ };
235
+
236
+ // 2. 별도 객체: 프로젝트의 개별 카테고리 지정 (없으면 기본값 "Image Gen" 사용)
237
+ const customCategories = {
238
+ "fantos/Panorama": "Image Gen",
239
+ "ginigen/Multi-LoRAgen": "Image Gen",
240
+ "ginigen/canvas-studio": "Image Edit",
241
+ "ginipick/Fashion-Stylegen": "Productivity",
242
+ "ginipick/Time-Stream": "Video",
243
+ "ginipick/AccuVision-Diffusion": "Image Gen",
244
+ "fantos/Magic-Drawings": "Image Edit",
245
+ "ginigen/Lumina-Image-PLUS": "Image Gen",
246
+ "fantaxy/fantasy-novel": "Text",
247
+ "fantaxy/eros": "Text",
248
+ "fantaxy/adult-novel": "Text",
249
+ "fantaxy/kungfu-novel": "Text",
250
+ "fantaxy/love-novel": "Text",
251
+ "VIDraft/mouse-webgen": "Productivity",
252
+ "immunobiotech/MUSIC-Jukebox": "Audio",
253
+ "seawolf2357/Flowise-AI": "Productivity",
254
+ "ginigen/Flux-LayerDiffuse": "Image Gen",
255
+ "VIDraft/Portrait-Animation": "Video",
256
+ "VIDraft/Deepseek-Multimodal": "Vision",
257
+ "VIDraft/BLIP2": "Image Gen",
258
+ "ginigen/text3d-r1": "Image Gen",
259
+ "immunobiotech/drug-discovery": "Productivity",
260
+ "openfree/VisionOCR-Chat": "Vision",
261
+ "immunobiotech/MICHELIN": "Productivity",
262
+ "immunobiotech/MICHELIN-korea": "Productivity",
263
+ "immunobiotech/MICHELIN-japan": "Productivity",
264
+ "immunobiotech/MICHELIN-china": "Productivity",
265
+ "VIDraft/money-radar-korea": "Productivity",
266
+ "VIDraft/money-radar": "Productivity",
267
+ "ginipick/PharmAI-Korea": "Productivity",
268
+ "ginigen/MagicFace-V3": "Image Gen",
269
+ "aiqcamp/MindMap": "Image Gen",
270
+ "ginigen/3D-LLAMA": "Productivity",
271
+ "openfree/VectorFlow": "Image Edit",
272
+ "openfree/webtoon-gen": "Image Gen",
273
+ "VIDraft/topic-prediction": "Text",
274
+ "VIDraft/PapersImpact": "Productivity",
275
+ "VIDraft/EveryRAG": "Text",
276
+ "VIDraft/korea-president-DJ": "Image Gen",
277
+ "VIDraft/korea-president-PARK": "Image Gen",
278
+ "openfree/image-to-vector": "Image Edit",
279
+ "ginipick/QR-Canvas-plus": "Productivity",
280
+ "ginigen/text3d-R1": "Image Gen",
281
+ "openfree/MagicFace-V3": "Image Edit",
282
+ "ginipick/DeepSeekR1-LIVE": "Text",
283
+ "ginigen/ColPali-multi": "Text",
284
+ "ginigen/Janus-Pro-7B": "Vision",
285
+ "ginigen/Animagine": "Image Gen",
286
+ "openfree/PDF-RAG": "Productivity",
287
+ "fantos/Ranking-Tracker": "Utility",
288
+ "aiqcamp/Multilingual-Images": "Image Gen",
289
+ "aiqcamp/Gemini2-Flash-Thinking": "Text",
290
+ "openfree/pepe": "Image Gen",
291
+ "openfree/korea-president-yoon": "Image Gen",
292
+ "openfree/CryptoVision": "Utility",
293
+ "fantos/VoiceClone": "Audio",
294
+ "seawolf2357/ocrlatex": "Utility",
295
+ "seawolf2357/img2vid": "Video",
296
+ "seawolf2357/sd-prompt-gen": "Text",
297
+ "openfree/tarotcard": "Utility",
298
+ "aiqcamp/Polaroid": "Image Gen",
299
+ "ginigen/cartoon": "Image Gen",
300
+ "ginigen/Book-Cover": "Image Gen",
301
+ "aiqcamp/fash": "Productivity",
302
+ "gunship999/Korea-Daily-News": "Utility",
303
+ "immunobiotech/ChicagoGallery": "Utility",
304
+ "immunobiotech/MetropolitanMuseum": "Utility",
305
+ "immunobiotech/opensky": "Utility",
306
+ "VIDraft/eum": "Text",
307
+ "aiqtech/FLUX-military": "Image Gen",
308
+ "fantaxy/Rolls-Royce": "Image Gen",
309
+ "seawolf2357/flux-korea-hanbok-lora": "Image Gen",
310
+ "seawolf2357/flux-korea-palace-lora": "Image Gen",
311
+ "aiqcamp/flux-cat-lora": "Image Gen",
312
+ "gunship999/SexyImages": "Image Gen",
313
+ "aiqtech/flux-claude-monet-lora": "Image Gen",
314
+ "seawolf2357/3D-Avatar-Generator": "Utility",
315
+ "fantaxy/playground25": "Image Gen",
316
+ "openfree/ultpixgen": "Image Gen",
317
+ "seawolf2357/REALVISXL-V5": "Image Gen",
318
+ "fantos/flxcontrol": "Image Edit",
319
+ "fantos/textcutobject": "Image Edit",
320
+ "ginipick/FLUX-Prompt-Generator": "Text",
321
+ "fantaxy/flxloraexp": "Image Gen",
322
+ "fantos/flxloraexp": "Image Gen",
323
+ "seawolf2357/flxloraexp": "Image Gen",
324
+ "ginipick/flxloraexp": "Image Gen",
325
+ "aiqcamp/imagemagic": "Image Edit",
326
+ "openfree/ColorRevive": "Image Edit",
327
+ "VIDraft/RAGOndevice": "Productivity",
328
+ "aiqcamp/AudioLlama": "Audio",
329
+ "ginigen/FLUXllama-Multilingual": "Image Gen",
330
+ "ginipick/FitGen": "Image Gen",
331
+ "fantaxy/FLUX-Animations": "Image Gen",
332
+ "fantaxy/Remove-Video-Background": "Image Edit",
333
+ "fantaxy/ofai-flx-logo": "Image Gen",
334
+ "fantaxy/flx-pulid": "Image Gen",
335
+ "fantaxy/flx-upscale": "Image Edit",
336
+ "aiqcamp/Fashion-FLUX": "Image Gen",
337
+ "fantos/x-mas": "Image Gen",
338
+ "openfree/Korean-Leaderboard": "Utility",
339
+ "ginipick/FLUXllama": "Image Gen",
340
+ "fantaxy/Sound-AI-SFX": "Audio",
341
+ "fantos/flx8lora": "Image Gen",
342
+ "openfree/trending-board": "Utility",
343
+ "ginipick/Realtime-FLUX": "Image Gen",
344
+ "aiqtech/kofaceid": "Image Gen",
345
+ "fantaxy/fastvideogena": "Video",
346
+ "fantos/cogvidx": "Video",
347
+ "fantos/flxfashmodel": "Image Gen",
348
+ "fantos/kolcontrl": "Image Edit",
349
+ "aiqtech/cinevid": "Video",
350
+ "aiqtech/FLUX-Ghibli-Studio-LoRA": "Image Gen",
351
+ "aiqtech/flxgif": "Image Gen",
352
+ "aiqtech/imaginpaint": "Image Edit"
353
+
354
+
355
+ };
356
+
357
+ const newProjects = [
358
+ "fantos/Panorama",
359
+ "ginigen/Multi-LoRAgen",
360
+ "ginigen/canvas-studio",
361
+ "ginipick/Fashion-Stylegen",
362
+ "ginipick/Time-Stream",
363
+ "ginipick/AccuVision-Diffusion",
364
+ "fantos/Magic-Drawings",
365
+ "ginigen/Lumina-Image-PLUS",
366
+ "fantaxy/fantasy-novel",
367
+ "fantaxy/eros",
368
+ "fantaxy/adult-novel",
369
+ "fantaxy/kungfu-novel",
370
+ "fantaxy/love-novel",
371
+ "VIDraft/mouse-webgen",
372
+ "immunobiotech/MUSIC-Jukebox",
373
+ "seawolf2357/Flowise-AI",
374
+ "ginigen/Flux-LayerDiffuse",
375
+ "VIDraft/Portrait-Animation",
376
+ "VIDraft/Deepseek-Multimodal",
377
+ "VIDraft/BLIP2",
378
+ "ginigen/text3d-r1",
379
+ "immunobiotech/drug-discovery",
380
+ "openfree/VisionOCR-Chat",
381
+ "immunobiotech/MICHELIN",
382
+ "immunobiotech/MICHELIN-korea",
383
+ "immunobiotech/MICHELIN-japan",
384
+ "immunobiotech/MICHELIN-china",
385
+ "VIDraft/money-radar-korea",
386
+ "VIDraft/money-radar",
387
+ "ginipick/PharmAI-Korea",
388
+ "ginigen/MagicFace-V3",
389
+ "aiqcamp/MindMap",
390
+ "ginigen/3D-LLAMA",
391
+ "openfree/VectorFlow",
392
+ "openfree/webtoon-gen",
393
+ "VIDraft/topic-prediction",
394
+ "VIDraft/PapersImpact",
395
+ "VIDraft/EveryRAG",
396
+ "VIDraft/korea-president-DJ",
397
+ "VIDraft/korea-president-PARK",
398
+ "openfree/image-to-vector",
399
+ "ginipick/QR-Canvas-plus",
400
+ "openfree/MagicFace-V3",
401
+ "ginipick/DeepSeekR1-LIVE",
402
+ "ginigen/ColPali-multi",
403
+ "ginigen/Janus-Pro-7B",
404
+ "ginigen/Animagine",
405
+ "openfree/PDF-RAG",
406
+ "fantos/Ranking-Tracker",
407
+ "aiqcamp/Multilingual-Images",
408
+ "aiqcamp/Gemini2-Flash-Thinking",
409
+ "openfree/pepe",
410
+ "openfree/korea-president-yoon",
411
+ "openfree/CryptoVision",
412
+ "fantos/VoiceClone",
413
+ "seawolf2357/ocrlatex",
414
+ "seawolf2357/img2vid",
415
+ "seawolf2357/sd-prompt-gen",
416
+ "openfree/tarotcard",
417
+ "aiqcamp/Polaroid",
418
+ "ginigen/cartoon",
419
+ "ginigen/Book-Cover"
420
+ ];
421
+
422
+ const bestProjects = [
423
+ "openfree/VisionOCR-Chat",
424
+ "ginigen/3D-LLAMA",
425
+ "fantos/Ranking-Tracker",
426
+ "openfree/trending-board",
427
+ "openfree/Korean-Leaderboard",
428
+ "fantos/Panorama",
429
+ "ginigen/Multi-LoRAgen",
430
+ "ginigen/canvas-studio",
431
+ "fantaxy/adult-novel",
432
+ "VIDraft/mouse-webgen",
433
+ "ginigen/text3d-r1",
434
+ "immunobiotech/MICHELIN-korea",
435
+ "VIDraft/money-radar-korea",
436
+ "ginipick/PharmAI-Korea",
437
+ "VIDraft/PapersImpact",
438
+ "aiqcamp/MindMap",
439
+ "VIDraft/EveryRAG",
440
+ "openfree/MagicFace-V3",
441
+ "ginigen/Animagine",
442
+ "openfree/PDF-RAG",
443
+ "aiqcamp/Multilingual-Images",
444
+ "aiqcamp/Gemini2-Flash-Thinking",
445
+ "openfree/CryptoVision",
446
+ "fantos/VoiceClone",
447
+ "seawolf2357/ocrlatex",
448
+ "ginigen/cartoon",
449
+ "ginigen/Book-Cover",
450
+ "aiqcamp/fash",
451
+ "seawolf2357/REALVISXL-V5",
452
+ "aiqcamp/AudioLlama",
453
+ "ginigen/FLUXllama-Multilingual",
454
+ "ginipick/FitGen"
455
+ ];
456
+
457
+
458
+ // 4. URL 변환 함수
459
+ function transformUrl(url) {
460
+ const prefix = "https://huggingface.co/spaces/";
461
+ if (url.startsWith(prefix)) {
462
+ const rest = url.substring(prefix.length);
463
+ return "https://" + rest.replace("/", "-") + ".hf.space";
464
+ }
465
+ return url;
466
+ }
467
+
468
+ // 5. 프로젝트 배열 생성
469
+ const keys = Object.keys(projectList);
470
+ const projects = keys.map(key => {
471
+ const primaryCategory = customCategories[key] || "Image Gen";
472
+ let categories = [primaryCategory];
473
+
474
+ if (newProjects.includes(key)) categories.push("NEW");
475
+ if (bestProjects.includes(key)) categories.push("BEST");
476
+
477
+ return {
478
+ name: primaryCategory + "/" + key.split("/")[1],
479
+ url: transformUrl(projectList[key]),
480
+ categories: categories
481
+ };
482
+ });
483
+
484
+ // 6. 카테고리별 그룹화
485
+ const grouped = {};
486
+ projects.forEach(proj => {
487
+ proj.categories.forEach(cat => {
488
+ if (!grouped[cat]) grouped[cat] = [];
489
+ grouped[cat].push(proj);
490
+ });
491
+ });
492
+
493
+ // 7. 필터 버튼 생성
494
+ const fixedGroups = ["NEW", "BEST", "Text", "Image Gen", "Image Edit", "Audio", "Video", "Productivity", "Utility", "Vision"];
495
+ const filterGroupDiv = document.getElementById("filter-group");
496
+
497
+ const allButton = document.createElement("button");
498
+ allButton.className = "toggle-button active";
499
+ allButton.setAttribute("data-filter", "all");
500
+ allButton.textContent = "All";
501
+ filterGroupDiv.appendChild(allButton);
502
+
503
+ fixedGroups.forEach(category => {
504
+ const btn = document.createElement("button");
505
+ btn.className = "toggle-button";
506
+ btn.setAttribute("data-filter", category);
507
+ btn.textContent = category;
508
+ filterGroupDiv.appendChild(btn);
509
+ });
510
+
511
+ // 8. 사이드바 갱신 함수
512
+ function updateSidebar(filter) {
513
+ const sidebar = document.getElementById("sidebar");
514
+ sidebar.innerHTML = "";
515
+ let items = (filter === "all")
516
+ ? projects
517
+ : projects.filter(p => p.categories.includes(filter));
518
+
519
+ const ul = document.createElement("ul");
520
+ items.forEach(item => {
521
+ const li = document.createElement("li");
522
+
523
+ // 이름 표시
524
+ const nameSpan = document.createElement("span");
525
+ nameSpan.textContent = item.name;
526
+ li.appendChild(nameSpan);
527
+
528
+ // "링크 클릭" 버튼
529
+ const linkButton = document.createElement("button");
530
+ linkButton.textContent = "링크 클릭";
531
+ linkButton.addEventListener("click", (event) => {
532
+ event.stopPropagation(); // li 클릭 이벤트와 구분
533
+ window.open(item.url, "_blank"); // 새 탭(창) 열기
534
+ });
535
+ li.appendChild(linkButton);
536
+
537
+ // li 자체 클릭하면 iframe 변경
538
+ li.addEventListener("click", () => {
539
+ document.getElementById("embed-frame").src = item.url;
540
+ });
541
+
542
+ ul.appendChild(li);
543
+ });
544
+ sidebar.appendChild(ul);
545
+
546
+ if (items.length > 0) {
547
+ document.getElementById("embed-frame").src = items[0].url;
548
+ } else {
549
+ document.getElementById("embed-frame").src = "";
550
+ }
551
+ }
552
+
553
+ // 9. 버튼 클릭 이벤트
554
+ document.querySelectorAll(".toggle-button").forEach(button => {
555
+ button.addEventListener("click", function() {
556
+ document.querySelectorAll(".toggle-button").forEach(b => b.classList.remove("active"));
557
+ this.classList.add("active");
558
+ updateSidebar(this.getAttribute("data-filter"));
559
+ });
560
+ });
561
+
562
+ // 10. 페이지 로드 시 All 필터
563
+ updateSidebar("all");
564
+ </script>
565
+ </body>
566
  </html>