malcolmrey commited on
Commit
cc86cf2
·
verified ·
1 Parent(s): 32bbd81

Upload 9 files

Browse files
data-filenames.js CHANGED
The diff for this file is too large to render. See raw diff
 
data-filenames.json CHANGED
The diff for this file is too large to render. See raw diff
 
data-hf-images.js CHANGED
@@ -6708,6 +6708,18 @@ const hfImages = {
6708
  "framework": "Flux"
6709
  }
6710
  ],
 
 
 
 
 
 
 
 
 
 
 
 
6711
  "WAN": [
6712
  {
6713
  "url": "https://huggingface.co/datasets/malcolmrey/samples/resolve/main/wan/wan_feliciaday_00001_.png",
 
6708
  "framework": "Flux"
6709
  }
6710
  ],
6711
+ "LTX": [
6712
+ {
6713
+ "url": "https://huggingface.co/datasets/malcolmrey/samples/resolve/main/ltx/ltx2_feliciaday_00001_.png",
6714
+ "filename": "ltx2_feliciaday_00001_.png",
6715
+ "framework": "LTX"
6716
+ },
6717
+ {
6718
+ "url": "https://huggingface.co/datasets/malcolmrey/samples/resolve/main/ltx/ltx2_feliciaday_00002_.mp4",
6719
+ "filename": "ltx2_feliciaday_00002_.mp4",
6720
+ "framework": "LTX"
6721
+ }
6722
+ ],
6723
  "WAN": [
6724
  {
6725
  "url": "https://huggingface.co/datasets/malcolmrey/samples/resolve/main/wan/wan_feliciaday_00001_.png",
data-hf-images.json CHANGED
@@ -6708,6 +6708,18 @@
6708
  "framework": "Flux"
6709
  }
6710
  ],
 
 
 
 
 
 
 
 
 
 
 
 
6711
  "WAN": [
6712
  {
6713
  "url": "https://huggingface.co/datasets/malcolmrey/samples/resolve/main/wan/wan_feliciaday_00001_.png",
 
6708
  "framework": "Flux"
6709
  }
6710
  ],
6711
+ "LTX": [
6712
+ {
6713
+ "url": "https://huggingface.co/datasets/malcolmrey/samples/resolve/main/ltx/ltx2_feliciaday_00001_.png",
6714
+ "filename": "ltx2_feliciaday_00001_.png",
6715
+ "framework": "LTX"
6716
+ },
6717
+ {
6718
+ "url": "https://huggingface.co/datasets/malcolmrey/samples/resolve/main/ltx/ltx2_feliciaday_00002_.mp4",
6719
+ "filename": "ltx2_feliciaday_00002_.mp4",
6720
+ "framework": "LTX"
6721
+ }
6722
+ ],
6723
  "WAN": [
6724
  {
6725
  "url": "https://huggingface.co/datasets/malcolmrey/samples/resolve/main/wan/wan_feliciaday_00001_.png",
data-hf-uploaded.js CHANGED
The diff for this file is too large to render. See raw diff
 
data-hf-uploaded.json CHANGED
The diff for this file is too large to render. See raw diff
 
data-huggingface.js CHANGED
The diff for this file is too large to render. See raw diff
 
data-huggingface.json CHANGED
The diff for this file is too large to render. See raw diff
 
index.html CHANGED
@@ -1421,6 +1421,15 @@
1421
  <span>SDXL</span>
1422
  </label>
1423
 
 
 
 
 
 
 
 
 
 
1424
  <label class="checkbox-label">
1425
  <input
1426
  id="selectedZimage"
@@ -1491,6 +1500,7 @@
1491
  <div class="image-viewer">
1492
  <button id="prevImageBtn" class="image-nav-arrow image-nav-prev" onclick="previousImage()" aria-label="Previous image" style="display:none;">‹</button>
1493
  <img id="modalImage" src="" alt="" class="modal-image" />
 
1494
  <button id="nextImageBtn" class="image-nav-arrow image-nav-next" onclick="nextImage()" aria-label="Next image" style="display:none;">›</button>
1495
  </div>
1496
  <div id="imageInfo" class="image-info" style="display:none;">
@@ -1761,6 +1771,7 @@
1761
  flux: 'Flux',
1762
  wan: 'WAN',
1763
  sdxl: 'SDXL',
 
1764
  qwen: 'Qwen',
1765
  zimage: 'ZImage'
1766
  };
@@ -1926,6 +1937,7 @@
1926
  flux: 'flux',
1927
  wan: 'wan',
1928
  sdxl: 'sdxl',
 
1929
  qwen: 'qwen',
1930
  zimage: 'zimage'
1931
  };
@@ -1997,6 +2009,7 @@
1997
  const modalTitle = document.getElementById('modalTitle');
1998
  const modalImage = document.getElementById('modalImage');
1999
  const modalStats = document.getElementById('modalStats');
 
2000
 
2001
  // Generate HuggingFace links using actual filenames from data-filenames.js
2002
  const personName = element.key;
@@ -2006,6 +2019,12 @@
2006
  modalTitle.textContent = element.key;
2007
  modalImage.src = element.imageUrl ?? unknownImage;
2008
  modalImage.alt = element.key;
 
 
 
 
 
 
2009
 
2010
  modalStats.innerHTML = `
2011
  <div class="modal-stat-row">
@@ -2044,6 +2063,12 @@
2044
  ${formatModalHFLinks(element.sdxl, 'sdxl', personFilenames.sdxl)}
2045
  </span>
2046
  </div>
 
 
 
 
 
 
2047
  <div class="modal-stat-row">
2048
  <span class="modal-stat-label">${yesNo(element.zimage)} ZImage</span>
2049
  <span class="modal-stat-value">
@@ -2088,6 +2113,7 @@
2088
  flux: [],
2089
  wan: [],
2090
  sdxl: [],
 
2091
  qwen: [],
2092
  };
2093
 
@@ -2157,6 +2183,22 @@
2157
  }
2158
  });
2159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2160
  models.qwens.forEach((qwen) => {
2161
  const key = prepareKey(qwen.name);
2162
  if (presence[key] !== undefined) {
@@ -2189,6 +2231,7 @@
2189
  flux: presence[property].flux,
2190
  wan: presence[property].wan,
2191
  sdxl: presence[property].sdxl,
 
2192
  zimage: presence[property].zimage,
2193
  qwen: presence[property].qwen,
2194
  mega: undefined,
@@ -2199,12 +2242,48 @@
2199
  fluxHFLink: presence[property]?.fluxHFLink,
2200
  wanHFLink: presence[property]?.wanHFLink,
2201
  sdxlHFLink: presence[property]?.sdxlHFLink,
 
2202
  zimageHFLink: presence[property]?.zimageHFLink,
2203
  qwenHFLink: presence[property]?.qwenHFLink,
2204
  };
2205
  presenceModels.push(element);
2206
  }
2207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2208
  function searchModelsModern(value) {
2209
  const lowerCaseValue = value.toLowerCase();
2210
  const sortBy = getSortBy();
@@ -2323,7 +2402,12 @@
2323
  images.push(...personHFImages.WAN);
2324
  }
2325
 
2326
- // 3. Add Civitai images by type
 
 
 
 
 
2327
  // Check each framework in personData for Civitai models
2328
  const checkCivitaiImage = (framework, civitaiModels) => {
2329
  if (!civitaiModels) return;
@@ -2345,9 +2429,12 @@
2345
  checkCivitaiImage('Flux', models.fluxes);
2346
  checkCivitaiImage('WAN', models.wans);
2347
  checkCivitaiImage('SDXL', models.sdxls);
 
 
 
2348
  checkCivitaiImage('Qwen', models.qwens);
2349
 
2350
- // 4. Add other HF samples (excluding ZImage and WAN which are already added)
2351
  const frameworkOrder = ['LyCORIS', 'Lora', 'Embedding', 'Flux', 'SDXL', 'Qwen'];
2352
  for (const fw of frameworkOrder) {
2353
  if (personHFImages[fw]) {
@@ -2360,6 +2447,7 @@
2360
 
2361
  function updateImageDisplay() {
2362
  const modalImage = document.getElementById('modalImage');
 
2363
  const imageCounter = document.getElementById('imageCounter');
2364
  const frameworkLabel = document.getElementById('frameworkLabel');
2365
  const imageInfo = document.getElementById('imageInfo');
@@ -2368,7 +2456,23 @@
2368
 
2369
  if (currentImages.length > 0) {
2370
  const currentImage = currentImages[currentImageIndex];
2371
- modalImage.src = currentImage.url;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2372
 
2373
  if (currentImages.length > 1) {
2374
  imageCounter.textContent = `${currentImageIndex + 1} / ${currentImages.length}`;
 
1421
  <span>SDXL</span>
1422
  </label>
1423
 
1424
+ <label class="checkbox-label">
1425
+ <input
1426
+ id="selectedLtx"
1427
+ type="checkbox"
1428
+ onclick="javascript:searchModels(getCurrentSearchValue());"
1429
+ />
1430
+ <span>LTX</span>
1431
+ </label>
1432
+
1433
  <label class="checkbox-label">
1434
  <input
1435
  id="selectedZimage"
 
1500
  <div class="image-viewer">
1501
  <button id="prevImageBtn" class="image-nav-arrow image-nav-prev" onclick="previousImage()" aria-label="Previous image" style="display:none;">‹</button>
1502
  <img id="modalImage" src="" alt="" class="modal-image" />
1503
+ <video id="modalVideo" class="modal-image" style="display:none;" controls muted playsinline preload="metadata"></video>
1504
  <button id="nextImageBtn" class="image-nav-arrow image-nav-next" onclick="nextImage()" aria-label="Next image" style="display:none;">›</button>
1505
  </div>
1506
  <div id="imageInfo" class="image-info" style="display:none;">
 
1771
  flux: 'Flux',
1772
  wan: 'WAN',
1773
  sdxl: 'SDXL',
1774
+ ltx: 'LTX',
1775
  qwen: 'Qwen',
1776
  zimage: 'ZImage'
1777
  };
 
1937
  flux: 'flux',
1938
  wan: 'wan',
1939
  sdxl: 'sdxl',
1940
+ ltx: 'ltx',
1941
  qwen: 'qwen',
1942
  zimage: 'zimage'
1943
  };
 
2009
  const modalTitle = document.getElementById('modalTitle');
2010
  const modalImage = document.getElementById('modalImage');
2011
  const modalStats = document.getElementById('modalStats');
2012
+ const modalVideo = document.getElementById('modalVideo');
2013
 
2014
  // Generate HuggingFace links using actual filenames from data-filenames.js
2015
  const personName = element.key;
 
2019
  modalTitle.textContent = element.key;
2020
  modalImage.src = element.imageUrl ?? unknownImage;
2021
  modalImage.alt = element.key;
2022
+ if (modalVideo) {
2023
+ modalVideo.pause?.();
2024
+ modalVideo.removeAttribute('src');
2025
+ modalVideo.load?.();
2026
+ modalVideo.style.display = 'none';
2027
+ }
2028
 
2029
  modalStats.innerHTML = `
2030
  <div class="modal-stat-row">
 
2063
  ${formatModalHFLinks(element.sdxl, 'sdxl', personFilenames.sdxl)}
2064
  </span>
2065
  </div>
2066
+ <div class="modal-stat-row">
2067
+ <span class="modal-stat-label">${yesNo(element.ltx)} LTX</span>
2068
+ <span class="modal-stat-value">
2069
+ ${formatModalHFLinks(element.ltx, 'ltx', personFilenames.ltx)}
2070
+ </span>
2071
+ </div>
2072
  <div class="modal-stat-row">
2073
  <span class="modal-stat-label">${yesNo(element.zimage)} ZImage</span>
2074
  <span class="modal-stat-value">
 
2113
  flux: [],
2114
  wan: [],
2115
  sdxl: [],
2116
+ ltx: [],
2117
  qwen: [],
2118
  };
2119
 
 
2183
  }
2184
  });
2185
 
2186
+ if (models.ltxes) {
2187
+ models.ltxes.forEach((ltx) => {
2188
+ const key = prepareKey(ltx.name);
2189
+ if (presence[key] !== undefined) {
2190
+ presence[key].ltxCivitai = true;
2191
+ setImageUrl(key, ltx.imageUrl);
2192
+ presence[key].ltxCivitaiLink = ltx.url;
2193
+ } else if (!isKnownSkippableKey(key)) {
2194
+ if (!notMatched.ltx) {
2195
+ notMatched.ltx = [];
2196
+ }
2197
+ notMatched.ltx.push(key);
2198
+ }
2199
+ });
2200
+ }
2201
+
2202
  models.qwens.forEach((qwen) => {
2203
  const key = prepareKey(qwen.name);
2204
  if (presence[key] !== undefined) {
 
2231
  flux: presence[property].flux,
2232
  wan: presence[property].wan,
2233
  sdxl: presence[property].sdxl,
2234
+ ltx: presence[property].ltx,
2235
  zimage: presence[property].zimage,
2236
  qwen: presence[property].qwen,
2237
  mega: undefined,
 
2242
  fluxHFLink: presence[property]?.fluxHFLink,
2243
  wanHFLink: presence[property]?.wanHFLink,
2244
  sdxlHFLink: presence[property]?.sdxlHFLink,
2245
+ ltxHFLink: presence[property]?.ltxHFLink,
2246
  zimageHFLink: presence[property]?.zimageHFLink,
2247
  qwenHFLink: presence[property]?.qwenHFLink,
2248
  };
2249
  presenceModels.push(element);
2250
  }
2251
 
2252
+ function filterByType(element) {
2253
+ const mode = document.getElementById('searchMode').value;
2254
+ const filters = [
2255
+ { selected: document.getElementById('selectedLocon').checked, property: element.locon },
2256
+ { selected: document.getElementById('selectedLora').checked, property: element.lora },
2257
+ { selected: document.getElementById('selectedEmbedding').checked, property: element.embedding },
2258
+ { selected: document.getElementById('selectedFlux').checked, property: element.flux },
2259
+ { selected: document.getElementById('selectedWan').checked, property: element.wan },
2260
+ { selected: document.getElementById('selectedSdxl').checked, property: element.sdxl },
2261
+ { selected: document.getElementById('selectedLtx').checked, property: element.ltx },
2262
+ { selected: document.getElementById('selectedQwen').checked, property: element.qwen },
2263
+ { selected: document.getElementById('selectedZimage').checked, property: element.zimage },
2264
+ ];
2265
+
2266
+ // If no filters are selected, show all
2267
+ const anySelected = filters.some((f) => f.selected);
2268
+ if (!anySelected) {
2269
+ return true;
2270
+ }
2271
+
2272
+ // Check each selected filter
2273
+ for (const filter of filters) {
2274
+ if (filter.selected) {
2275
+ if (mode === 'available' && !filter.property) {
2276
+ return false;
2277
+ }
2278
+ if (mode === 'missing' && filter.property) {
2279
+ return false;
2280
+ }
2281
+ }
2282
+ }
2283
+
2284
+ return true;
2285
+ }
2286
+
2287
  function searchModelsModern(value) {
2288
  const lowerCaseValue = value.toLowerCase();
2289
  const sortBy = getSortBy();
 
2402
  images.push(...personHFImages.WAN);
2403
  }
2404
 
2405
+ // 3. Add LTX samples third (from HF samples data)
2406
+ if (personHFImages.LTX) {
2407
+ images.push(...personHFImages.LTX);
2408
+ }
2409
+
2410
+ // 4. Add Civitai images by type
2411
  // Check each framework in personData for Civitai models
2412
  const checkCivitaiImage = (framework, civitaiModels) => {
2413
  if (!civitaiModels) return;
 
2429
  checkCivitaiImage('Flux', models.fluxes);
2430
  checkCivitaiImage('WAN', models.wans);
2431
  checkCivitaiImage('SDXL', models.sdxls);
2432
+ if (models.ltxes) {
2433
+ checkCivitaiImage('LTX', models.ltxes);
2434
+ }
2435
  checkCivitaiImage('Qwen', models.qwens);
2436
 
2437
+ // 5. Add other HF samples (excluding ZImage, WAN and LTX which are already added)
2438
  const frameworkOrder = ['LyCORIS', 'Lora', 'Embedding', 'Flux', 'SDXL', 'Qwen'];
2439
  for (const fw of frameworkOrder) {
2440
  if (personHFImages[fw]) {
 
2447
 
2448
  function updateImageDisplay() {
2449
  const modalImage = document.getElementById('modalImage');
2450
+ const modalVideo = document.getElementById('modalVideo');
2451
  const imageCounter = document.getElementById('imageCounter');
2452
  const frameworkLabel = document.getElementById('frameworkLabel');
2453
  const imageInfo = document.getElementById('imageInfo');
 
2456
 
2457
  if (currentImages.length > 0) {
2458
  const currentImage = currentImages[currentImageIndex];
2459
+ const isVideo = currentImage.url.toLowerCase().endsWith('.mp4');
2460
+ if (isVideo) {
2461
+ if (modalVideo) {
2462
+ modalVideo.src = currentImage.url;
2463
+ modalVideo.style.display = 'block';
2464
+ }
2465
+ modalImage.style.display = 'none';
2466
+ } else {
2467
+ modalImage.src = currentImage.url;
2468
+ modalImage.style.display = 'block';
2469
+ if (modalVideo) {
2470
+ modalVideo.pause?.();
2471
+ modalVideo.removeAttribute('src');
2472
+ modalVideo.load?.();
2473
+ modalVideo.style.display = 'none';
2474
+ }
2475
+ }
2476
 
2477
  if (currentImages.length > 1) {
2478
  imageCounter.textContent = `${currentImageIndex + 1} / ${currentImages.length}`;