From 139e1a2135bd93da6d7f503b40a72b2dfd7c72db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E4=B8=8A=E8=B4=B5=E7=8C=AA?= <290425385@qq.com> Date: Wed, 11 Mar 2026 07:45:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=83=E5=8D=81=E4=BA=8C=E5=AE=B6=E6=88=BF?= =?UTF-8?q?=E5=AE=A2-=E8=A7=82=E7=9C=8B=E5=B9=B3=E5=8F=B0v1.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/components/HelloWorld.vue | 41 -- src/components/TheWelcome.vue | 95 ----- src/components/WelcomeItem.vue | 87 ---- src/components/icons/IconCommunity.vue | 7 - src/components/icons/IconDocumentation.vue | 7 - src/components/icons/IconEcosystem.vue | 7 - src/components/icons/IconSupport.vue | 7 - src/components/icons/IconTooling.vue | 19 - src/components/qishier/QishierEpisodeList.vue | 125 ++++++ src/components/qishier/QishierVideoPlayer.vue | 164 ++++++++ src/utils/playHistory.ts | 36 ++ src/views/QishierPlayer.vue | 370 ++++++------------ vite.config.ts | 4 +- 14 files changed, 454 insertions(+), 517 deletions(-) delete mode 100644 src/components/HelloWorld.vue delete mode 100644 src/components/TheWelcome.vue delete mode 100644 src/components/WelcomeItem.vue delete mode 100644 src/components/icons/IconCommunity.vue delete mode 100644 src/components/icons/IconDocumentation.vue delete mode 100644 src/components/icons/IconEcosystem.vue delete mode 100644 src/components/icons/IconSupport.vue delete mode 100644 src/components/icons/IconTooling.vue create mode 100644 src/components/qishier/QishierEpisodeList.vue create mode 100644 src/components/qishier/QishierVideoPlayer.vue create mode 100644 src/utils/playHistory.ts diff --git a/package.json b/package.json index d1538bf..80024bd 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,11 @@ "type-check": "vue-tsc --build" }, "dependencies": { + "artplayer": "^5.3.0", "axios": "^1.13.6", "cors": "^2.8.6", "express": "^5.2.1", "hls.js": "^1.6.15", - "plyr": "^3.8.4", "vue": "^3.5.29" }, "devDependencies": { diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue deleted file mode 100644 index a2eabd1..0000000 --- a/src/components/HelloWorld.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/src/components/TheWelcome.vue b/src/components/TheWelcome.vue deleted file mode 100644 index 8b731d9..0000000 --- a/src/components/TheWelcome.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - diff --git a/src/components/WelcomeItem.vue b/src/components/WelcomeItem.vue deleted file mode 100644 index 6d7086a..0000000 --- a/src/components/WelcomeItem.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue deleted file mode 100644 index 2dc8b05..0000000 --- a/src/components/icons/IconCommunity.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue deleted file mode 100644 index 6d4791c..0000000 --- a/src/components/icons/IconDocumentation.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue deleted file mode 100644 index c3a4f07..0000000 --- a/src/components/icons/IconEcosystem.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue deleted file mode 100644 index 7452834..0000000 --- a/src/components/icons/IconSupport.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue deleted file mode 100644 index 660598d..0000000 --- a/src/components/icons/IconTooling.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/src/components/qishier/QishierEpisodeList.vue b/src/components/qishier/QishierEpisodeList.vue new file mode 100644 index 0000000..ea1f6e1 --- /dev/null +++ b/src/components/qishier/QishierEpisodeList.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/components/qishier/QishierVideoPlayer.vue b/src/components/qishier/QishierVideoPlayer.vue new file mode 100644 index 0000000..77c4e45 --- /dev/null +++ b/src/components/qishier/QishierVideoPlayer.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/utils/playHistory.ts b/src/utils/playHistory.ts new file mode 100644 index 0000000..9ec0c2d --- /dev/null +++ b/src/utils/playHistory.ts @@ -0,0 +1,36 @@ +export function setCookie(name: string, value: string, days = 30) { + const expires = new Date() + expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000) + document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires.toUTCString()}; path=/` +} + +export function getCookie(name: string): string | null { + const nameEQ = `${name}=` + const cookies = document.cookie.split(';') + for (let cookie of cookies) { + cookie = cookie.trim() + if (cookie.indexOf(nameEQ) === 0) { + return decodeURIComponent(cookie.substring(nameEQ.length)) + } + } + return null +} + +export function saveCurrentEpisodeId(id: string) { + setCookie('qishier_current_episode_id', id, 30) +} + +export function getCurrentEpisodeId() { + return getCookie('qishier_current_episode_id') +} + +export function saveEpisodeProgress(id: string, seconds: number) { + setCookie(`qishier_progress_${id}`, String(Math.floor(seconds)), 30) +} + +export function getEpisodeProgress(id: string): number { + const value = getCookie(`qishier_progress_${id}`) + if (!value) return 0 + const num = Number(value) + return Number.isNaN(num) ? 0 : num +} diff --git a/src/views/QishierPlayer.vue b/src/views/QishierPlayer.vue index a22c052..b5372d2 100644 --- a/src/views/QishierPlayer.vue +++ b/src/views/QishierPlayer.vue @@ -15,9 +15,34 @@ +
+ + + + + + + +
+
- +

{{ currentEpisode.title }}

@@ -32,39 +57,24 @@
-
-
- -
-
{{ item.title }}
-
{{ formatDate(item.releasedAt) }}
-
-
- -
- -
-
+