diff --git a/css/style.css b/css/style.css
index 74c8b9b..f1f1230 100644
--- a/css/style.css
+++ b/css/style.css
@@ -304,7 +304,7 @@ body {
/* 视频网格 */
.video-grid {
display: grid;
- grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
+ grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
gap: 24px;
margin-bottom: 48px;
}
@@ -474,7 +474,7 @@ body {
.shorts-grid {
display: grid;
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: 16px;
}
diff --git a/img/cover/art-26.jpg b/img/cover/art-26.jpg
new file mode 100644
index 0000000..d40ae96
Binary files /dev/null and b/img/cover/art-26.jpg differ
diff --git a/img/cover/art-27.jpg b/img/cover/art-27.jpg
new file mode 100644
index 0000000..48af0f5
Binary files /dev/null and b/img/cover/art-27.jpg differ
diff --git a/img/cover/art-28.jpg b/img/cover/art-28.jpg
new file mode 100644
index 0000000..3bdacaa
Binary files /dev/null and b/img/cover/art-28.jpg differ
diff --git a/img/cover/game-18.jpg b/img/cover/game-18.jpg
new file mode 100644
index 0000000..d9e58e7
Binary files /dev/null and b/img/cover/game-18.jpg differ
diff --git a/img/cover/game-19.jpg b/img/cover/game-19.jpg
new file mode 100644
index 0000000..86c0009
Binary files /dev/null and b/img/cover/game-19.jpg differ
diff --git a/img/cover/game-20.jpg b/img/cover/game-20.jpg
new file mode 100644
index 0000000..9a6511d
Binary files /dev/null and b/img/cover/game-20.jpg differ
diff --git a/img/cover/game-38.jpg b/img/cover/game-38.jpg
new file mode 100644
index 0000000..95a47bc
Binary files /dev/null and b/img/cover/game-38.jpg differ
diff --git a/img/cover/game-39.jpg b/img/cover/game-39.jpg
new file mode 100644
index 0000000..2be74f6
Binary files /dev/null and b/img/cover/game-39.jpg differ
diff --git a/img/cover/game-40.jpg b/img/cover/game-40.jpg
new file mode 100644
index 0000000..e150cde
Binary files /dev/null and b/img/cover/game-40.jpg differ
diff --git a/img/cover/maxresdefault.jpg b/img/cover/maxresdefault.jpg
deleted file mode 100644
index 980fd2f..0000000
Binary files a/img/cover/maxresdefault.jpg and /dev/null differ
diff --git a/img/cover/music-09.jpg b/img/cover/music-09.jpg
new file mode 100644
index 0000000..ed732b4
Binary files /dev/null and b/img/cover/music-09.jpg differ
diff --git a/img/cover/music-10.jpg b/img/cover/music-10.jpg
new file mode 100644
index 0000000..9cafcfb
Binary files /dev/null and b/img/cover/music-10.jpg differ
diff --git a/img/cover/music-11.jpg b/img/cover/music-11.jpg
new file mode 100644
index 0000000..2dedf5f
Binary files /dev/null and b/img/cover/music-11.jpg differ
diff --git a/img/cover/music-12.jpg b/img/cover/music-12.jpg
new file mode 100644
index 0000000..cf62f17
Binary files /dev/null and b/img/cover/music-12.jpg differ
diff --git a/img/cover/music-13.jpg b/img/cover/music-13.jpg
new file mode 100644
index 0000000..699e7b8
Binary files /dev/null and b/img/cover/music-13.jpg differ
diff --git a/img/cover/music-14.jpg b/img/cover/music-14.jpg
new file mode 100644
index 0000000..d82fbae
Binary files /dev/null and b/img/cover/music-14.jpg differ
diff --git a/img/cover/music-15.jpg b/img/cover/music-15.jpg
new file mode 100644
index 0000000..4ec9d7a
Binary files /dev/null and b/img/cover/music-15.jpg differ
diff --git a/img/cover/music-16.jpg b/img/cover/music-16.jpg
new file mode 100644
index 0000000..8d8de9b
Binary files /dev/null and b/img/cover/music-16.jpg differ
diff --git a/img/cover/music-17.jpg b/img/cover/music-17.jpg
new file mode 100644
index 0000000..b34a396
Binary files /dev/null and b/img/cover/music-17.jpg differ
diff --git a/img/cover/music-29.jpg b/img/cover/music-29.jpg
new file mode 100644
index 0000000..5813e60
Binary files /dev/null and b/img/cover/music-29.jpg differ
diff --git a/img/cover/music-30.jpg b/img/cover/music-30.jpg
new file mode 100644
index 0000000..df54b2c
Binary files /dev/null and b/img/cover/music-30.jpg differ
diff --git a/img/cover/music-31.jpg b/img/cover/music-31.jpg
new file mode 100644
index 0000000..9fb17ae
Binary files /dev/null and b/img/cover/music-31.jpg differ
diff --git a/img/cover/music-32.jpg b/img/cover/music-32.jpg
new file mode 100644
index 0000000..231c7d0
Binary files /dev/null and b/img/cover/music-32.jpg differ
diff --git a/img/cover/music-33.jpg b/img/cover/music-33.jpg
new file mode 100644
index 0000000..9831288
Binary files /dev/null and b/img/cover/music-33.jpg differ
diff --git a/img/cover/music-34.jpg b/img/cover/music-34.jpg
new file mode 100644
index 0000000..024c0d8
Binary files /dev/null and b/img/cover/music-34.jpg differ
diff --git a/img/cover/music-35.jpg b/img/cover/music-35.jpg
new file mode 100644
index 0000000..5ad75a9
Binary files /dev/null and b/img/cover/music-35.jpg differ
diff --git a/img/cover/music-36.jpg b/img/cover/music-36.jpg
new file mode 100644
index 0000000..53660c4
Binary files /dev/null and b/img/cover/music-36.jpg differ
diff --git a/img/cover/music-37.jpg b/img/cover/music-37.jpg
new file mode 100644
index 0000000..a9366a0
Binary files /dev/null and b/img/cover/music-37.jpg differ
diff --git a/img/cover/tech-21.jpg b/img/cover/tech-21.jpg
new file mode 100644
index 0000000..ac8b2b9
Binary files /dev/null and b/img/cover/tech-21.jpg differ
diff --git a/img/cover/tech-22.jpg b/img/cover/tech-22.jpg
new file mode 100644
index 0000000..dea7599
Binary files /dev/null and b/img/cover/tech-22.jpg differ
diff --git a/img/cover/tech-23.jpg b/img/cover/tech-23.jpg
new file mode 100644
index 0000000..a5a40de
Binary files /dev/null and b/img/cover/tech-23.jpg differ
diff --git a/img/cover/tech-24.jpg b/img/cover/tech-24.jpg
new file mode 100644
index 0000000..308de63
Binary files /dev/null and b/img/cover/tech-24.jpg differ
diff --git a/img/cover/tech-25.jpg b/img/cover/tech-25.jpg
new file mode 100644
index 0000000..a4cf786
Binary files /dev/null and b/img/cover/tech-25.jpg differ
diff --git a/img/cover/tech-41.jpg b/img/cover/tech-41.jpg
new file mode 100644
index 0000000..0f95e64
Binary files /dev/null and b/img/cover/tech-41.jpg differ
diff --git a/img/cover/tech-42.jpg b/img/cover/tech-42.jpg
new file mode 100644
index 0000000..0497eea
Binary files /dev/null and b/img/cover/tech-42.jpg differ
diff --git a/img/cover/tech-43.jpg b/img/cover/tech-43.jpg
new file mode 100644
index 0000000..57df9cd
Binary files /dev/null and b/img/cover/tech-43.jpg differ
diff --git a/img/short/short-46.jpg b/img/short/short-46.jpg
new file mode 100644
index 0000000..4cca2d8
Binary files /dev/null and b/img/short/short-46.jpg differ
diff --git a/img/short/short-47.jpg b/img/short/short-47.jpg
new file mode 100644
index 0000000..abac352
Binary files /dev/null and b/img/short/short-47.jpg differ
diff --git a/img/short/short-48.jpg b/img/short/short-48.jpg
new file mode 100644
index 0000000..497d36e
Binary files /dev/null and b/img/short/short-48.jpg differ
diff --git a/img/short/short-49.jpg b/img/short/short-49.jpg
new file mode 100644
index 0000000..2a22221
Binary files /dev/null and b/img/short/short-49.jpg differ
diff --git a/img/short/short-50.jpg b/img/short/short-50.jpg
new file mode 100644
index 0000000..5c099dc
Binary files /dev/null and b/img/short/short-50.jpg differ
diff --git a/img/short/short-51.jpg b/img/short/short-51.jpg
new file mode 100644
index 0000000..8c1e0ec
Binary files /dev/null and b/img/short/short-51.jpg differ
diff --git a/index.html b/index.html
index e1c65c9..0aabcce 100644
--- a/index.html
+++ b/index.html
@@ -172,13 +172,10 @@
-
-
-
+
-
diff --git a/js/script.js b/js/script.js
index 3c25cc2..0c40c99 100644
--- a/js/script.js
+++ b/js/script.js
@@ -37,7 +37,7 @@ let videos = [
"id": 4,
"title": "【Silent Witch沈默魔女的秘密】OST 主題曲「沈黙の魔女」bgm|Kitkit Lu COVER",
"channel": "KitKit Lu",
- "views": "1,856,164",
+ "views": "1,856,264",
"uploadDate": "5 months ago",
"duration": "2:39",
"thumbnail": "img/cover/music-04.jpg",
@@ -90,191 +90,411 @@ let videos = [
},
{
"id": 9,
- "title": "React vs Vue vs Angular",
- "channel": "前端开发",
- "views": "1,876,543",
- "uploadDate": "3天前",
- "duration": "19:45",
- "thumbnail": "https://picsum.photos/id/9/640/360",
- "category": "live",
- "type": "live"
+ "title": "ヨルシカ - 春泥棒(OFFICIAL VIDEO)",
+ "channel": "ヨルシカ / n-buna Official",
+ "views": "123,456,789",
+ "uploadDate": "5 years ago",
+ "duration": "4:17",
+ "thumbnail": "img/cover/music-09.jpg",
+ "category": "music",
+ "type": "video"
},
{
"id": 10,
- "title": "机器学习入门到精通",
- "channel": "AI 研究",
- "views": "2,345,678",
- "uploadDate": "5天前",
- "duration": "35:22",
- "thumbnail": "https://picsum.photos/id/10/640/360",
- "category": "AI",
+ "title": "YOASOBI「アイドル」Official Music Video",
+ "channel": "YOASOBI Official",
+ "views": "456,789,123",
+ "uploadDate": "2 years ago",
+ "duration": "3:33",
+ "thumbnail": "img/cover/music-10.jpg",
+ "category": "music",
"type": "video"
},
{
"id": 11,
- "title": "编程技巧分享",
- "channel": "编程大师",
- "views": "456,789",
- "uploadDate": "1天前",
- "duration": "01:23",
- "thumbnail": "https://picsum.photos/id/11/360/640",
- "category": "编程",
- "type": "short"
+ "title": "花譜 - 不可解",
+ "channel": "花譜 -KAF-",
+ "views": "12,345,678",
+ "uploadDate": "3 years ago",
+ "duration": "4:05",
+ "thumbnail": "img/cover/music-11.jpg",
+ "category": "music",
+ "type": "video"
},
{
"id": 12,
- "title": "JavaScript 小技巧",
- "channel": "前端开发",
- "views": "789,012",
- "uploadDate": "2天前",
- "duration": "00:58",
- "thumbnail": "https://picsum.photos/id/12/360/640",
- "category": "编程",
- "type": "short"
+ "title": "ZUTOMAYO - STUDY ME",
+ "channel": "ZUTOMAYO",
+ "views": "23,456,789",
+ "uploadDate": "1 year ago",
+ "duration": "3:45",
+ "thumbnail": "img/cover/music-12.jpg",
+ "category": "music",
+ "type": "video"
},
{
"id": 13,
- "title": "Python 一行代码",
- "channel": "数据科学",
- "views": "567,890",
- "uploadDate": "3天前",
- "duration": "01:15",
- "thumbnail": "https://picsum.photos/id/13/360/640",
- "category": "编程",
- "type": "short"
+ "title": "Eve - 廻廻奇譚",
+ "channel": "Eve",
+ "views": "89,123,456",
+ "uploadDate": "4 years ago",
+ "duration": "3:55",
+ "thumbnail": "img/cover/music-13.jpg",
+ "category": "music",
+ "type": "video"
},
{
"id": 14,
- "title": "前端开发日常",
- "channel": "前端开发",
- "views": "987,654",
- "uploadDate": "1天前",
- "duration": "01:32",
- "thumbnail": "https://picsum.photos/id/14/360/640",
- "category": "编程",
- "type": "short"
+ "title": "ClariS - コネクト",
+ "channel": "ClariS Official",
+ "views": "45,678,901",
+ "uploadDate": "10 years ago",
+ "duration": "4:30",
+ "thumbnail": "img/cover/music-14.jpg",
+ "category": "music",
+ "type": "video"
},
{
"id": 15,
- "title": "AI 生成艺术",
- "channel": "AI 研究",
- "views": "1,234,567",
- "uploadDate": "2天前",
- "duration": "01:45",
- "thumbnail": "https://picsum.photos/id/15/360/640",
- "category": "AI",
- "type": "short"
+ "title": "米津玄師 Kenshi Yonezu - Lemon",
+ "channel": "Kenshi Yonezu 米津玄師",
+ "views": "96,539,145",
+ "uploadDate": "7 years ago",
+ "duration": "4:35",
+ "thumbnail": "img/cover/music-15.jpg",
+ "category": "music",
+ "type": "video"
},
{
"id": 16,
- "title": "数据可视化技巧",
- "channel": "数据科学",
- "views": "654,321",
- "uploadDate": "4天前",
- "duration": "01:05",
- "thumbnail": "https://picsum.photos/id/16/360/640",
- "category": "编程",
- "type": "short"
+ "title": "【初音ミク】 夜明けと蛍 【オリジナル】",
+ "channel": "ヨルシカ / n-buna Official",
+ "views": "27,749,534",
+ "uploadDate": "8 years ago",
+ "duration": "5:10",
+ "thumbnail": "img/cover/music-16.jpg",
+ "category": "music",
+ "type": "video"
},
{
"id": 17,
- "title": "编程面试题",
- "channel": "编程大师",
- "views": "876,543",
- "uploadDate": "3天前",
- "duration": "01:20",
- "thumbnail": "https://picsum.photos/id/17/360/640",
- "category": "编程",
- "type": "short"
+ "title": "Empty old City - Buffer",
+ "channel": "Empty old city",
+ "views": "838,946",
+ "uploadDate": "1 year ago",
+ "duration": "3:18",
+ "thumbnail": "img/cover/music-17.jpg",
+ "category": "music",
+ "type": "video"
},
{
"id": 18,
- "title": "Web 设计趋势",
- "channel": "前端开发",
- "views": "765,432",
- "uploadDate": "5天前",
- "duration": "01:10",
- "thumbnail": "https://picsum.photos/id/18/360/640",
- "category": "设计",
- "type": "short"
+ "title": "I built Git for Minecraft for a hackathon and won",
+ "channel": "MathRayyan",
+ "views": "288,346",
+ "uploadDate": "12 days ago",
+ "duration": "5:13",
+ "thumbnail": "img/cover/game-18.jpg",
+ "category": "game",
+ "type": "video"
},
{
"id": 19,
- "title": "机器学习模型训练",
- "channel": "AI 研究",
- "views": "1,098,765",
- "uploadDate": "2天前",
- "duration": "01:35",
- "thumbnail": "https://picsum.photos/id/19/360/640",
- "category": "AI",
- "type": "short"
+ "title": "怎麼讓遊戲越來越真?PBR貼圖是怎麼做到的?",
+ "channel": "孫拓海Taku",
+ "views": "25,364",
+ "uploadDate": "3 weeks ago",
+ "duration": "13:14",
+ "thumbnail": "img/cover/game-19.jpg",
+ "category": "game",
+ "type": "video"
},
{
"id": 20,
- "title": "Python 库推荐",
- "channel": "数据科学",
- "views": "543,210",
- "uploadDate": "1天前",
- "duration": "01:08",
- "thumbnail": "https://picsum.photos/id/20/360/640",
- "category": "编程",
- "type": "short"
+ "title": "「空あくあ!」當さくな說出這句台詞時 全場都淚崩了....【結城さくな】【Vtuber中文/翻譯/精華】",
+ "channel": "Dar烤肉!",
+ "views": "116,498",
+ "uploadDate": "7 days ago",
+ "duration": "8:35",
+ "thumbnail": "img/cover/game-20.jpg",
+ "category": "game",
+ "type": "video"
},
{
"id": 21,
- "title": "2024年前端开发趋势",
- "channel": "前端开发",
- "views": "1,345,678",
- "uploadDate": "1周前",
- "duration": "18:32",
- "thumbnail": "https://picsum.photos/id/21/640/360",
- "category": "编程",
+ "title": "「明日方舟:终末地性能分析:二游画质巅峰?榨干手机!",
+ "channel": "极客湾Geekerwan",
+ "views": "51,649",
+ "uploadDate": "10 days ago",
+ "duration": "22:13",
+ "thumbnail": "img/cover/tech-21.jpg",
+ "category": "tech",
"type": "video"
},
{
"id": 22,
- "title": "数据结构与算法基础",
- "channel": "编程大师",
- "views": "987,654",
- "uploadDate": "3天前",
- "duration": "25:45",
- "thumbnail": "https://picsum.photos/id/22/640/360",
- "category": "编程",
+ "title": "What GPU is the BEST for Linux Gaming?",
+ "channel": "Linus Tech Tips",
+ "views": "96,751",
+ "uploadDate": "7 days ago",
+ "duration": "10:55",
+ "thumbnail": "img/cover/tech-22.jpg",
+ "category": "tech",
"type": "video"
},
{
"id": 23,
- "title": "人工智能的未来发展",
- "channel": "AI 研究",
- "views": "2,123,456",
- "uploadDate": "5天前",
- "duration": "30:15",
- "thumbnail": "https://picsum.photos/id/23/640/360",
- "category": "AI",
+ "title": "How Hard Is It to Build Your First PC?",
+ "channel": "PLACITECH",
+ "views": "4,351",
+ "uploadDate": "2 months ago",
+ "duration": "12:47",
+ "thumbnail": "img/cover/tech-23.jpg",
+ "category": "tech",
"type": "video"
},
{
"id": 24,
- "title": "Python Web 开发实战",
- "channel": "数据科学",
- "views": "765,432",
- "uploadDate": "2周前",
- "duration": "22:33",
- "thumbnail": "https://picsum.photos/id/24/640/360",
- "category": "编程",
+ "title": "回顾我们最中意的 2025 年产品发布 - 谷歌开发者新闻(年终特辑)",
+ "channel": "Google for Developers",
+ "views": "3,475",
+ "uploadDate": "1 month ago",
+ "duration": "6:39",
+ "thumbnail": "img/cover/tech-24.jpg",
+ "category": "tech",
"type": "video"
},
{
"id": 25,
- "title": "CSS 高级技巧",
- "channel": "前端开发",
- "views": "876,543",
- "uploadDate": "1天前",
- "duration": "15:22",
- "thumbnail": "https://picsum.photos/id/25/640/360",
- "category": "编程",
+ "title": "Commodore 128 Alternate Universe",
+ "channel": "The 8-Bit Guy",
+ "views": "17,498",
+ "uploadDate": "4 months ago",
+ "duration": "8:35",
+ "thumbnail": "img/cover/tech-25.jpg",
+ "category": "tech",
"type": "video"
- }
+ },
+ {
+ "id": 25,
+ "title": "Commodore 128 Alternate Universe",
+ "channel": "The 8-Bit Guy",
+ "views": "17,498",
+ "uploadDate": "4 months ago",
+ "duration": "8:35",
+ "thumbnail": "img/cover/tech-25.jpg",
+ "category": "tech",
+ "type": "video"
+ },
+ {
+ "id": 25,
+ "title": "Commodore 128 Alternate Universe",
+ "channel": "The 8-Bit Guy",
+ "views": "17,498",
+ "uploadDate": "4 months ago",
+ "duration": "8:35",
+ "thumbnail": "img/cover/tech-25.jpg",
+ "category": "tech",
+ "type": "video"
+ },
+ {
+ "id": 26,
+ "title": "\"The Roller Coaster\" - Behind the Scenes - Time Lapse & Commentary",
+ "channel": "AlanBeckerTutorials",
+ "views": "193,762",
+ "uploadDate": "7 years ago",
+ "duration": "14:52",
+ "thumbnail": "img/cover/art-26.jpg",
+ "category": "art",
+ "type": "video"
+ },
+ {
+ "id": 27,
+ "title": "Animation vs. Game Design",
+ "channel": "Alan Backer",
+ "views": "694,264",
+ "uploadDate": "2 months ago",
+ "duration": "3:12",
+ "thumbnail": "img/cover/art-27.jpg",
+ "category": "art",
+ "type": "video"
+ },
+ {
+ "id": 28,
+ "title": "The Far Lands - Animation vs. Minecraft Shorts Ep 38",
+ "channel": "Alan Backer",
+ "views": "975,192",
+ "uploadDate": "1 month ago",
+ "duration": "9:10",
+ "thumbnail": "img/cover/art-28.jpg",
+ "category": "art",
+ "type": "video"
+ },
+ {
+ "id": 29,
+ "title": "【Official MV】ray 超かぐや姫!Version/かぐや (cv.夏吉ゆうこ) & 月見ヤチヨ (cv.早見沙織) from #超かぐや姫 !【新作アニメーション】",
+ "channel": "",
+ "views": "78,192",
+ "uploadDate": "5 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-29.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 30,
+ "title": "ドッペルゲンガー feat.初音ミク#vocaloid #初音ミク",
+ "channel": "",
+ "views": "2,359",
+ "uploadDate": "3 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-30.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 31,
+ "title": "Melt CPK! Remix — English Subtitled Version",
+ "channel": "",
+ "views": "2,264",
+ "uploadDate": "3 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-31.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 32,
+ "title": "【Suite History】花譜×#KTちゃん「ギミギミ逃避行feat. #KTちゃん(Prod. peko)」 #花譜 #KTちゃん #組曲 #shorts",
+ "channel": "",
+ "views": "5,430",
+ "uploadDate": "2 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-32.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 33,
+ "title": "ヨルシカ - プレイシック #ヨルシカ #プレイシック #二人称 #yorushika #playsick #secondperson",
+ "channel": "",
+ "views": "39,254",
+ "uploadDate": "10 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-33.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 34,
+ "title": "#ヨルシカ #live #前世 #yorushika",
+ "channel": "",
+ "views": "36,181",
+ "uploadDate": "1 month ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-34.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 35,
+ "title": "【歌ってみた】蜜月アン・ドゥ・トロワ covered by ヰ世界情緒 #shorts",
+ "channel": "",
+ "views": "2,163",
+ "uploadDate": "6 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-35.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 36,
+ "title": "Thank you 2025🩵Have a wonderful new year! #YOASOBI_2025",
+ "channel": "",
+ "views": "36,165",
+ "uploadDate": "20 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-36.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 37,
+ "title": "初めてラブソングを書きました。新曲「ハートマーク feat.川谷絵音」#礼衣 #ハートマーク",
+ "channel": "",
+ "views": "2,609",
+ "uploadDate": "3 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/music-37.jpg",
+ "category": "music",
+ "type": "short"
+ },
+ {
+ "id": 38,
+ "title": "Would you play this at the school talent show for $500? #osu #osugame",
+ "channel": "",
+ "views": "133,658",
+ "uploadDate": "2 months ago",
+ "duration": "",
+ "thumbnail": "img/cover/game-38.jpg",
+ "category": "game",
+ "type": "short"
+ },
+ {
+ "id": 39,
+ "title": "May your holidays be filled with great vibes, full combos, and lots of epic tracks! 🎵",
+ "channel": "",
+ "views": "1,658",
+ "uploadDate": "1 months ago",
+ "duration": "",
+ "thumbnail": "img/cover/game-39.jpg",
+ "category": "game",
+ "type": "short"
+ },
+ {
+ "id": 40,
+ "title": "PANDORA PARADOXXX RE:MASTER alternative spin method #maimai #maimaiでらっくす #maimai_dx",
+ "channel": "",
+ "views": "25,365",
+ "uploadDate": "12 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/game-40.jpg",
+ "category": "game",
+ "type": "short"
+ },
+ {
+ "id": 41,
+ "title": "Arch Linux VS Debian in 1 Min #linux #arch #debian",
+ "channel": "",
+ "views": "3,565",
+ "uploadDate": "11 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/tech-41.jpg",
+ "category": "tech",
+ "type": "short"
+ },
+ {
+ "id": 42,
+ "title": "#linux #homelab #opensource #tech #debian",
+ "channel": "",
+ "views": "7,925",
+ "uploadDate": "10 days ago",
+ "duration": "",
+ "thumbnail": "img/cover/tech-42.jpg",
+ "category": "tech",
+ "type": "short"
+ },
+ {
+ "id": 43,
+ "title": "The one key keyboard #tech",
+ "channel": "",
+ "views": "4,571",
+ "uploadDate": "1 month ago",
+ "duration": "",
+ "thumbnail": "img/cover/tech-43.jpg",
+ "category": "tech",
+ "type": "short"
+ },
];
let currentCategory = 'All';
@@ -288,31 +508,18 @@ const shortsGrid = document.querySelector('.shorts-grid');
const categoryBtns = document.querySelectorAll('.category-btn');
const subscriptionsList = document.querySelector('.subscriptions-list');
-// 初始化
async function init() {
- // 加载视频数据
await loadVideos();
-
- // 渲染视频
renderVideos();
-
- // 渲染 Shorts
renderShorts();
-
- // 渲染订阅内容
renderSubscriptions();
-
- // 绑定事件
bindEvents();
}
-// 加载视频数据
async function loadVideos() {
- // 数据已在全局变量中定义,直接返回
- return Promise.resolve();
+ return Promise.resolve(); // Already defined in global scope
}
-// 渲染视频
function renderVideos() {
const filteredVideos = filterVideosByCategory(currentCategory);
@@ -326,7 +533,6 @@ function renderVideos() {
});
}
-// 渲染 Shorts
function renderShorts() {
const filteredVideos = filterVideosByCategory(currentCategory);
@@ -340,23 +546,18 @@ function renderShorts() {
});
}
-// 根据分类过滤视频
function filterVideosByCategory(category) {
- if (category === '全部') {
+ if (category === 'All') {
return videos;
}
- // 简单的分类映射
const categoryMap = {
'Music': ['music'],
'Game': ['game'],
- 'Live': ['live'],
- 'Album': ['album'],
- 'Animation': ['animation'],
+ 'Technology': ['tech'],
'Art': ['art'],
'Recently': videos.filter(v => v.uploadDate.includes('days ago')),
- 'Watched': [],
- 'New': videos
+ 'Watched': []
};
if (categoryMap[category]) {
@@ -370,7 +571,6 @@ function filterVideosByCategory(category) {
return videos;
}
-// 创建视频卡片
function createVideoCard(video) {
const card = document.createElement('div');
card.className = 'video-card';
@@ -436,7 +636,6 @@ function createVideoCard(video) {
`;
- // 绑定菜单事件
const menuToggle = card.querySelector('.menu-toggle');
const menuDropdown = card.querySelector('.menu-dropdown');
@@ -445,15 +644,13 @@ function createVideoCard(video) {
menuDropdown.classList.toggle('show');
});
- // 点击其他地方关闭菜单
- document.addEventListener('click', () => {
+ document.addEventListener('click', () => { // Close the menu when clicking outside
menuDropdown.classList.remove('show');
});
return card;
}
-// 创建 Shorts 卡片
function createShortsCard(video) {
const card = document.createElement('div');
card.className = 'shorts-card';
@@ -474,8 +671,7 @@ function createShortsCard(video) {
return card;
}
-// 渲染订阅内容
-function renderSubscriptions() {
+function renderSubscriptions() { // Render the subscriptions list
const subscriptions = [
{ name: '花譜 -KAF-', avatar: 'img/avatar/kaf.png' },
{ name: 'ryo (supercell)', avatar: 'img/avatar/ryo.jpg' },
@@ -504,9 +700,7 @@ function renderSubscriptions() {
subscriptionsList.appendChild(item);
});
}
-
-// 执行搜索
-function performSearch(query) {
+function performSearch(query) { // Perform the search and render the results
if (!query.trim()) {
searchResults.style.display = 'none';
return;
@@ -520,7 +714,7 @@ function performSearch(query) {
renderSearchResults(results, query);
}
-// 渲染搜索结果
+// Render the search results
function renderSearchResults(results, query) {
searchResultsContent.innerHTML = '';
@@ -534,7 +728,7 @@ function renderSearchResults(results, query) {
const item = document.createElement('div');
item.className = 'search-result-item';
- // 高亮关键词
+ // Highlight the search keywords in the title and channel name
const highlightedTitle = video.title.replace(new RegExp(`(${query})`, 'gi'), '$1');
const highlightedChannel = video.channel.replace(new RegExp(`(${query})`, 'gi'), '$1');
@@ -555,9 +749,9 @@ function renderSearchResults(results, query) {
searchResults.style.display = 'block';
}
-// 绑定事件
-function bindEvents() {
- // 搜索事件
+// Bind events to the DOM elements
+function bindEvents() { // Bind events to the DOM elements
+ // Search event
searchInput.addEventListener('input', (e) => {
performSearch(e.target.value);
});
@@ -566,38 +760,40 @@ function bindEvents() {
performSearch(searchInput.value);
});
- // 点击其他地方关闭搜索结果
+ // Close the search results when clicking outside
document.addEventListener('click', (e) => {
if (!e.target.closest('.search-container') && !e.target.closest('.search-results')) {
searchResults.style.display = 'none';
}
});
- // 分类按钮事件
+ // Category buttons event
categoryBtns.forEach(btn => {
btn.addEventListener('click', () => {
- // 移除所有活动状态
+ // Remove all active states
categoryBtns.forEach(b => b.classList.remove('active'));
- // 添加当前活动状态
+ // Add current active state
btn.classList.add('active');
- // 更新当前分类
+ // Update current category
currentCategory = btn.textContent;
- // 重新渲染视频
+ // Re-render videos and shorts
renderVideos();
renderShorts();
});
});
- // 侧边栏导航按钮事件
+ // Sidebar navigation buttons event
const navBtns = document.querySelectorAll('.nav-btn');
navBtns.forEach(btn => {
btn.addEventListener('click', () => {
+ // Remove all active states
navBtns.forEach(b => b.classList.remove('active'));
+ // Add current active state
btn.classList.add('active');
});
});
- // 订阅板块展开/收起
+ // Subscription section expand/collapse event
const subscriptionTitle = document.querySelector('.nav-section-title');
subscriptionTitle.addEventListener('click', () => {
const subscriptionsList = document.querySelector('.subscriptions-list');
@@ -613,5 +809,5 @@ function bindEvents() {
});
}
-// 页面加载完成后初始化
+// Page load event: initialize the application
window.addEventListener('DOMContentLoaded', init);
\ No newline at end of file