theWitcher commited on
Commit
757db24
·
1 Parent(s): 8f521f6

add new banner and new tools

Browse files
Files changed (3) hide show
  1. index.html +102 -12
  2. style.css +9 -0
  3. tools.json +31 -16
index.html CHANGED
@@ -4,6 +4,8 @@ https://huggingface.co/spaces/theWitcher/sagi-ai-tools
4
 
5
  https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
6
 
 
 
7
  -->
8
 
9
  <!DOCTYPE html>
@@ -184,6 +186,12 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
184
  </script>
185
  </head>
186
  <body class="min-h-screen">
 
 
 
 
 
 
187
  <!-- Header -->
188
  <header class="sticky top-0 z-50 backdrop-blur-md bg-white/80 shadow-md border-b border-gray-200">
189
  <div class="container mx-auto px-4 py-4">
@@ -529,9 +537,46 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
529
  const showVideosBtn = document.getElementById('showVideosBtn');
530
  const refreshBtn = document.getElementById('refreshBtn');
531
  const refreshBtnMobile = document.getElementById('refreshBtnMobile');
 
 
532
  const topRatedStatBox = document.getElementById('topRatedStatBox');
533
  const newToolsStatBox = document.getElementById('newToolsStatBox');
534
- const loadingMessage = document.getElementById('loadingMessage'); // For showing loading status
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
535
 
536
  // --- State ---
537
  let currentCategory = 'all';
@@ -541,23 +586,24 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
541
 
542
  // --- Initialize ---
543
  async function init() {
544
- showLoading(); // Show loading message
545
  try {
546
- // --- שחזור ערך חיפוש קיים מהאחסון המקומי (אם קיים) ---
547
  const savedSearch = localStorage.getItem('searchTerm');
548
  if (savedSearch) {
549
  searchInput.value = savedSearch;
550
  currentSearchTerm = savedSearch;
551
  }
552
 
553
- await loadData(); // Load fresh data from server on init
554
- sortTools(currentSort); // Apply default sort
555
  renderTools();
556
  renderVideos();
557
  updateStats();
558
  setupEventListeners();
559
 
560
- // Set initial active filter button (רק אם אין חיפוש)
 
 
561
  if (!currentSearchTerm) {
562
  const allFilterBtn = document.querySelector('.filter-btn[data-category="all"]');
563
  if (allFilterBtn) {
@@ -573,6 +619,7 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
573
  }
574
 
575
 
 
576
  const speechSynthesis = window.speechSynthesis;
577
  let currentUtterance = null;
578
 
@@ -797,9 +844,10 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
797
  <img src="${tool.logo}" alt="${tool.name} Logo" class="w-14 h-14 object-contain rounded bg-white p-1 shadow-sm">
798
 
799
  <div>
800
- <!-- שם הכלי וכפתור רמקול -->
801
  <div class="flex items-center gap-2">
802
  <h3 class="text-xl font-semibold">${tool.name}</h3>
 
803
  <button title="הקרא תיאור" onclick="event.stopPropagation(); speakText('${tool.description.replace(/'/g, "\\'")}')" class="text-blue-600 hover:text-blue-800 focus:outline-none">
804
  <i class="fas fa-volume-up"></i>
805
  </button>
@@ -836,9 +884,7 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
836
  <i class="fas fa-external-link-alt ml-2"></i> ${tool.url !== '#' ? 'גישה לכלי' : 'אין קישור'}
837
  </a>
838
  `;
839
-
840
-
841
-
842
  toolsContainer.appendChild(toolCard);
843
  });
844
  // אנימציה של הופעה חלקה
@@ -932,7 +978,16 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
932
  // --- Helper Functions (Filtering, Stats, Stars, Category, Date - Unchanged) ---
933
  function filterTools() {
934
  if (!toolsData || !Array.isArray(toolsData.tools)) return [];
935
- return toolsData.tools.filter(tool => {
 
 
 
 
 
 
 
 
 
936
  const searchTermLower = currentSearchTerm.toLowerCase();
937
  const nameMatch = tool.name.toLowerCase().includes(searchTermLower);
938
  const descMatch = tool.description.toLowerCase().includes(searchTermLower);
@@ -946,7 +1001,7 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
946
  function updateStats() { /* ... (unchanged) ... */
947
  const toolsCount = (toolsData && Array.isArray(toolsData.tools)) ? toolsData.tools.length : 0;
948
  totalToolsElement.textContent = toolsCount;
949
- const topRatedCount = toolsCount > 0 ? toolsData.tools.filter(tool => tool.rating >= 4).length : 0;
950
  topRatedElement.textContent = topRatedCount;
951
  const newToolsCount = toolsCount > 0 ? toolsData.tools.filter(tool => tool.isNew).length : 0;
952
  newToolsElement.textContent = newToolsCount;
@@ -1174,6 +1229,41 @@ https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
1174
  console.error("שגיאה בטעינת כמות הכלים:", err);
1175
  document.getElementById('toolsCount').textContent = 'טעינה נכשלה';
1176
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1177
  </script>
1178
  <!-- /* --------------------------------- */
1179
  /* ------- END OF JAVASCRIPT ------- */
 
4
 
5
  https://chatgpt.com/c/67efa5ae-ab80-8005-a7d4-de3ced6ccec4
6
 
7
+ https://bit.ly/a-tools
8
+
9
  -->
10
 
11
  <!DOCTYPE html>
 
186
  </script>
187
  </head>
188
  <body class="min-h-screen">
189
+ <div id="newToolBanner" class="hidden bg-green-100 text-green-800 text-center py-2 text-sm font-semibold">
190
+ 🎉 התווסף כלי חדש: <span id="newToolName"></span> – <a href="#toolsContainer" class="underline">צפו עכשיו</a>
191
+ <button id="closeBanner" class="ml-4 text-green-800 font-bold">×</button>
192
+ </div>
193
+
194
+
195
  <!-- Header -->
196
  <header class="sticky top-0 z-50 backdrop-blur-md bg-white/80 shadow-md border-b border-gray-200">
197
  <div class="container mx-auto px-4 py-4">
 
537
  const showVideosBtn = document.getElementById('showVideosBtn');
538
  const refreshBtn = document.getElementById('refreshBtn');
539
  const refreshBtnMobile = document.getElementById('refreshBtnMobile');
540
+ const loadingMessage = document.getElementById('loadingMessage'); // For showing loading status
541
+
542
  const topRatedStatBox = document.getElementById('topRatedStatBox');
543
  const newToolsStatBox = document.getElementById('newToolsStatBox');
544
+ const totalToolsStatBox = document.querySelector('[id="totalTools"]').closest('.bg-white');
545
+ let filteredStatView = null; // 'topRated', 'newTools', או null
546
+
547
+ if (totalToolsStatBox) {
548
+ totalToolsStatBox.classList.add('clickable-stat');
549
+ totalToolsStatBox.addEventListener('click', () => {
550
+ filteredStatView = null;
551
+ currentSearchTerm = '';
552
+ currentCategory = 'all';
553
+ document.querySelectorAll('.filter-btn').forEach(btn => btn.classList.remove('active'));
554
+ const allBtn = document.querySelector('.filter-btn[data-category="all"]');
555
+ if (allBtn) allBtn.classList.add('active');
556
+ renderTools();
557
+ scrollToTools();
558
+ });
559
+ }
560
+
561
+ if (topRatedStatBox) {
562
+ topRatedStatBox.addEventListener('click', () => {
563
+ filteredStatView = 'topRated';
564
+ currentSearchTerm = '';
565
+ currentCategory = 'all';
566
+ renderTools();
567
+ scrollToTools();
568
+ });
569
+ }
570
+
571
+ if (newToolsStatBox) {
572
+ newToolsStatBox.addEventListener('click', () => {
573
+ filteredStatView = 'newTools';
574
+ currentSearchTerm = '';
575
+ currentCategory = 'all';
576
+ renderTools();
577
+ scrollToTools();
578
+ });
579
+ }
580
 
581
  // --- State ---
582
  let currentCategory = 'all';
 
586
 
587
  // --- Initialize ---
588
  async function init() {
589
+ showLoading();
590
  try {
 
591
  const savedSearch = localStorage.getItem('searchTerm');
592
  if (savedSearch) {
593
  searchInput.value = savedSearch;
594
  currentSearchTerm = savedSearch;
595
  }
596
 
597
+ await loadData(); // הנתונים נטענים כאן
598
+ sortTools(currentSort);
599
  renderTools();
600
  renderVideos();
601
  updateStats();
602
  setupEventListeners();
603
 
604
+ // 👇 כאן נוסיף את הקריאה לבאנר לאחר שהכלים נטענו
605
+ showNewToolBanner();
606
+
607
  if (!currentSearchTerm) {
608
  const allFilterBtn = document.querySelector('.filter-btn[data-category="all"]');
609
  if (allFilterBtn) {
 
619
  }
620
 
621
 
622
+
623
  const speechSynthesis = window.speechSynthesis;
624
  let currentUtterance = null;
625
 
 
844
  <img src="${tool.logo}" alt="${tool.name} Logo" class="w-14 h-14 object-contain rounded bg-white p-1 shadow-sm">
845
 
846
  <div>
847
+ <!-- שם הכלי, תגית 'חדש!' וכפתור רמקול -->
848
  <div class="flex items-center gap-2">
849
  <h3 class="text-xl font-semibold">${tool.name}</h3>
850
+ ${tool.isNew ? `<span class="text-xs bg-green-500 text-white px-2 py-1 rounded-full animate-pulse">חדש!</span>` : ''}
851
  <button title="הקרא תיאור" onclick="event.stopPropagation(); speakText('${tool.description.replace(/'/g, "\\'")}')" class="text-blue-600 hover:text-blue-800 focus:outline-none">
852
  <i class="fas fa-volume-up"></i>
853
  </button>
 
884
  <i class="fas fa-external-link-alt ml-2"></i> ${tool.url !== '#' ? 'גישה לכלי' : 'אין קישור'}
885
  </a>
886
  `;
887
+
 
 
888
  toolsContainer.appendChild(toolCard);
889
  });
890
  // אנימציה של הופעה חלקה
 
978
  // --- Helper Functions (Filtering, Stats, Stars, Category, Date - Unchanged) ---
979
  function filterTools() {
980
  if (!toolsData || !Array.isArray(toolsData.tools)) return [];
981
+
982
+ let filtered = toolsData.tools;
983
+
984
+ if (filteredStatView === 'topRated') {
985
+ filtered = filtered.filter(tool => tool.rating === 5);
986
+ } else if (filteredStatView === 'newTools') {
987
+ filtered = filtered.filter(tool => tool.isNew);
988
+ }
989
+
990
+ return filtered.filter(tool => {
991
  const searchTermLower = currentSearchTerm.toLowerCase();
992
  const nameMatch = tool.name.toLowerCase().includes(searchTermLower);
993
  const descMatch = tool.description.toLowerCase().includes(searchTermLower);
 
1001
  function updateStats() { /* ... (unchanged) ... */
1002
  const toolsCount = (toolsData && Array.isArray(toolsData.tools)) ? toolsData.tools.length : 0;
1003
  totalToolsElement.textContent = toolsCount;
1004
+ const topRatedCount = toolsCount > 0 ? toolsData.tools.filter(tool => tool.rating >= 5).length : 0;
1005
  topRatedElement.textContent = topRatedCount;
1006
  const newToolsCount = toolsCount > 0 ? toolsData.tools.filter(tool => tool.isNew).length : 0;
1007
  newToolsElement.textContent = newToolsCount;
 
1229
  console.error("שגיאה בטעינת כמות הכלים:", err);
1230
  document.getElementById('toolsCount').textContent = 'טעינה נכשלה';
1231
  });
1232
+ function showNewToolBanner() {
1233
+ const tools = toolsData.tools;
1234
+ const lastSeenToolDate = localStorage.getItem('lastSeenToolDate');
1235
+ const newTools = tools.filter(tool => tool.isNew);
1236
+ if (newTools.length === 0) return;
1237
+
1238
+ const latestTool = newTools.reduce((latest, tool) => {
1239
+ return new Date(tool.dateAdded) > new Date(latest.dateAdded) ? tool : latest;
1240
+ }, newTools[0]);
1241
+
1242
+ if (!lastSeenToolDate || new Date(latestTool.dateAdded) > new Date(lastSeenToolDate)) {
1243
+ const banner = document.getElementById('newToolBanner');
1244
+ const toolNameSpan = document.getElementById('newToolName');
1245
+ const closeBtn = document.getElementById('closeBanner');
1246
+
1247
+ toolNameSpan.textContent = latestTool.name;
1248
+ banner.classList.remove('hidden');
1249
+ const viewNowLink = banner.querySelector('a');
1250
+ viewNowLink.addEventListener('click', (e) => {
1251
+ e.preventDefault();
1252
+ filteredStatView = 'newTools';
1253
+ currentCategory = 'all';
1254
+ currentSearchTerm = '';
1255
+ renderTools();
1256
+ scrollToTools();
1257
+ });
1258
+
1259
+
1260
+ closeBtn.addEventListener('click', () => {
1261
+ banner.classList.add('hidden');
1262
+ localStorage.setItem('lastSeenToolDate', latestTool.dateAdded);
1263
+ });
1264
+ }
1265
+ }
1266
+
1267
  </script>
1268
  <!-- /* --------------------------------- */
1269
  /* ------- END OF JAVASCRIPT ------- */
style.css CHANGED
@@ -82,6 +82,15 @@ p {
82
  color: white;
83
  border-color: #666;
84
  }
 
 
 
 
 
 
 
 
 
85
 
86
  /* Chat animations and effects */
87
  @keyframes pulse {
 
82
  color: white;
83
  border-color: #666;
84
  }
85
+ #newToolBanner {
86
+ position: fixed;
87
+ top: 0;
88
+ width: 100%;
89
+ z-index: 1000;
90
+ }
91
+ .hidden {
92
+ display: none;
93
+ }
94
 
95
  /* Chat animations and effects */
96
  @keyframes pulse {
tools.json CHANGED
@@ -1,4 +1,18 @@
1
  [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  {
3
  "name": "Adobe Firefly",
4
  "description": "המערכת של אדובי ליצירת תוכן גרפי מתיאורים – כולל טקסטים, צבעים, וסטיילים.",
@@ -6,9 +20,9 @@
6
  "url": "https://firefly.adobe.com/",
7
  "logo":"https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Adobe_Firefly_Logo.svg/512px-Adobe_Firefly_Logo.svg.png",
8
  "icon": "fas fa-fire",
9
- "rating": 4,
10
- "isNew": false,
11
- "isFeatured": false
12
  },
13
  {
14
  "name": "שיפור סאונד עם Adobe Podcast AI",
@@ -18,9 +32,10 @@
18
  "category": "audio",
19
  "icon": "fas fa-volume-up",
20
  "video": "https://www.youtube.com/embed/pfebhGgaNBA?si=GjBTJFyuVHAjoDnd",
21
- "isNew": false,
22
- "isFeatured": false,
23
- "rating": 5
 
24
  },
25
  {
26
  "name": "היפוך כיוון תצוגה באתר",
@@ -299,7 +314,7 @@
299
  "logo": "https://logosandtypes.com/wp-content/uploads/2025/02/Deepseek.png",
300
  "icon": "fas fa-search",
301
  "rating": 4.5,
302
- "isNew": true,
303
  "isFeatured": false
304
  },
305
  {
@@ -455,7 +470,7 @@
455
  "logo":"https://media.licdn.com/dms/image/v2/D560BAQE-bb2bxfUU3A/company-logo_200_200/company-logo_200_200/0/1718684112316?e=2147483647&v=beta&t=nAPQuZC2xjW6G30auki753slYNEdM-lWOXPJEQDSxnA",
456
  "icon": "fas fa-pen-nib",
457
  "rating": 4,
458
- "isNew": true,
459
  "isFeatured": false
460
  },
461
  {
@@ -521,7 +536,7 @@
521
  "logo":"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQvr3EyhGPtM5HKhe6wz98i_xbcq1-IVmIfAcFRR-OQXCaDtD-cniUT3qlkemNQ1mgMHMA&usqp=CAU",
522
  "icon": "fas fa-robot",
523
  "rating": 5,
524
- "isNew": true,
525
  "isFeatured": false
526
  },
527
  {
@@ -666,7 +681,7 @@
666
  "logo":"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ7BWkd-_2Mai34fI4zacUOJqyIQ84txeBYtQ&s",
667
  "icon": "fas fa-tshirt",
668
  "rating": 4,
669
- "isNew": true,
670
  "isFeatured": false
671
  },
672
  {
@@ -777,7 +792,7 @@
777
  "logo":"https://play-lh.googleusercontent.com/JOfjXqsShK8j1aGBc1xlHBnatoRKRwLsGuoFZUAvKksaEPvK71eLwSg4FbKlky9Es-s",
778
  "icon": "fas fa-video",
779
  "rating": 4,
780
- "isNew": true,
781
  "isFeatured": false
782
  },
783
  {
@@ -844,7 +859,7 @@
844
  "logo":"https://lovable.dev/icon.svg?3d7ac3d2bb57ecbe",
845
  "icon": "fas fa-magic",
846
  "rating": 4,
847
- "isNew": true,
848
  "isFeatured": false
849
  },
850
  {
@@ -877,7 +892,7 @@
877
  "logo":"https://registry.npmmirror.com/@lobehub/icons-static-png/latest/files/light/manus.png",
878
  "icon": "fas fa-robot",
879
  "rating": 4,
880
- "isNew": true,
881
  "isFeatured": false
882
  },
883
  {
@@ -1034,7 +1049,7 @@
1034
  "logo":"https://openai-tts-fm.vercel.app/icons/favicon.ico",
1035
  "icon": "fas fa-volume-up",
1036
  "rating": 4,
1037
- "isNew": true,
1038
  "isFeatured": false
1039
  },
1040
  {
@@ -1438,7 +1453,7 @@
1438
  "category": "ocr",
1439
  "icon": "fas fa-file-alt",
1440
  "video": "https://www.youtube.com/embed/vdaXGeOyvbE?si=AJz1NPiEnfnklArg",
1441
- "isNew": true,
1442
  "isFeatured": true,
1443
  "rating": 5
1444
  },
@@ -1450,7 +1465,7 @@
1450
  "category": "image",
1451
  "icon": "fas fa-image",
1452
  "video": "https://www.youtube.com/embed/vXvVxbjTBVw?si=Ep8aVPMF0NB48_Q8",
1453
- "isNew": true,
1454
  "isFeatured": true,
1455
  "rating": 5
1456
  },
 
1
  [
2
+ {
3
+ "name": "יצירת פודקאסט AI בחינם",
4
+ "description": "צרו שיחות פודקאסט בין שני דוברים בנושאים שמעניינים אתכם. בחרו נושא או העלו קובץ PDF, והמערכת תיצור עבורכם תסריט שיחה עם תוכן מעניין ומידע אמין, תפיק אודיו טבעי, ותאפשר לכם להוריד ולשתף את הפודקאסט המוכן.",
5
+ "url": "https://example.com/ai-podcast-creator",
6
+ "logo": "https://user-images.githubusercontent.com/397895/34431097-350197f6-ec29-11e7-8369-0c4069a65fd3.jpg",
7
+ "category": "audio",
8
+ "icon": "fas fa-podcast",
9
+ "video": "https://www.youtube.com/watch?v=example",
10
+ "isFeatured": false,
11
+ "rating": 4,
12
+ "isNew": true,
13
+ "dateAdded": "2025-04-13T10:30:00Z"
14
+ },
15
+
16
  {
17
  "name": "Adobe Firefly",
18
  "description": "המערכת של אדובי ליצירת תוכן גרפי מתיאורים – כולל טקסטים, צבעים, וסטיילים.",
 
20
  "url": "https://firefly.adobe.com/",
21
  "logo":"https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Adobe_Firefly_Logo.svg/512px-Adobe_Firefly_Logo.svg.png",
22
  "icon": "fas fa-fire",
23
+ "rating": 4,
24
+ "isFeatured": false,
25
+ "isNew": false
26
  },
27
  {
28
  "name": "שיפור סאונד עם Adobe Podcast AI",
 
32
  "category": "audio",
33
  "icon": "fas fa-volume-up",
34
  "video": "https://www.youtube.com/embed/pfebhGgaNBA?si=GjBTJFyuVHAjoDnd",
35
+ "rating": 5,
36
+ "isFeatured": false,
37
+ "isNew": false
38
+
39
  },
40
  {
41
  "name": "היפוך כיוון תצוגה באתר",
 
314
  "logo": "https://logosandtypes.com/wp-content/uploads/2025/02/Deepseek.png",
315
  "icon": "fas fa-search",
316
  "rating": 4.5,
317
+ "isNew": false,
318
  "isFeatured": false
319
  },
320
  {
 
470
  "logo":"https://media.licdn.com/dms/image/v2/D560BAQE-bb2bxfUU3A/company-logo_200_200/company-logo_200_200/0/1718684112316?e=2147483647&v=beta&t=nAPQuZC2xjW6G30auki753slYNEdM-lWOXPJEQDSxnA",
471
  "icon": "fas fa-pen-nib",
472
  "rating": 4,
473
+ "isNew": false,
474
  "isFeatured": false
475
  },
476
  {
 
536
  "logo":"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQvr3EyhGPtM5HKhe6wz98i_xbcq1-IVmIfAcFRR-OQXCaDtD-cniUT3qlkemNQ1mgMHMA&usqp=CAU",
537
  "icon": "fas fa-robot",
538
  "rating": 5,
539
+ "isNew": false,
540
  "isFeatured": false
541
  },
542
  {
 
681
  "logo":"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ7BWkd-_2Mai34fI4zacUOJqyIQ84txeBYtQ&s",
682
  "icon": "fas fa-tshirt",
683
  "rating": 4,
684
+ "isNew": false,
685
  "isFeatured": false
686
  },
687
  {
 
792
  "logo":"https://play-lh.googleusercontent.com/JOfjXqsShK8j1aGBc1xlHBnatoRKRwLsGuoFZUAvKksaEPvK71eLwSg4FbKlky9Es-s",
793
  "icon": "fas fa-video",
794
  "rating": 4,
795
+ "isNew": false,
796
  "isFeatured": false
797
  },
798
  {
 
859
  "logo":"https://lovable.dev/icon.svg?3d7ac3d2bb57ecbe",
860
  "icon": "fas fa-magic",
861
  "rating": 4,
862
+ "isNew": false,
863
  "isFeatured": false
864
  },
865
  {
 
892
  "logo":"https://registry.npmmirror.com/@lobehub/icons-static-png/latest/files/light/manus.png",
893
  "icon": "fas fa-robot",
894
  "rating": 4,
895
+ "isNew": false,
896
  "isFeatured": false
897
  },
898
  {
 
1049
  "logo":"https://openai-tts-fm.vercel.app/icons/favicon.ico",
1050
  "icon": "fas fa-volume-up",
1051
  "rating": 4,
1052
+ "isNew": false,
1053
  "isFeatured": false
1054
  },
1055
  {
 
1453
  "category": "ocr",
1454
  "icon": "fas fa-file-alt",
1455
  "video": "https://www.youtube.com/embed/vdaXGeOyvbE?si=AJz1NPiEnfnklArg",
1456
+ "isNew": false,
1457
  "isFeatured": true,
1458
  "rating": 5
1459
  },
 
1465
  "category": "image",
1466
  "icon": "fas fa-image",
1467
  "video": "https://www.youtube.com/embed/vXvVxbjTBVw?si=Ep8aVPMF0NB48_Q8",
1468
+ "isNew": false,
1469
  "isFeatured": true,
1470
  "rating": 5
1471
  },