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 @@
-
-
-
-
-
{{ msg }}
-
- You’ve successfully created a project with
- Vite +
- Vue 3 .
-
-
-
-
-
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 @@
-
-
-
-
-
-
-
- Documentation
-
- Vue’s
- official documentation
- provides you with all information you need to get started.
-
-
-
-
-
-
- Tooling
-
- This project is served and bundled with
- Vite . The
- recommended IDE setup is
- VSCode
- +
- Vue - Official . If you need to test your components and web pages, check out
- Vitest
- and
- Cypress
- /
- Playwright .
-
-
-
- More instructions are available in
- README.md .
-
-
-
-
-
-
- Ecosystem
-
- Get official tools and libraries for your project:
- Pinia ,
- Vue Router ,
- Vue Test Utils , and
- Vue Dev Tools . If
- you need more resources, we suggest paying
- Awesome Vue
- a visit.
-
-
-
-
-
-
- Community
-
- Got stuck? Ask your question on
- Vue Land
- (our official Discord server), or
- StackOverflow . You should also follow the official
- @vuejs.org
- Bluesky account or the
- @vuejs
- X account for latest news in the Vue world.
-
-
-
-
-
-
- Support Vue
-
- As an independent project, Vue relies on community backing for its sustainability. You can help
- us by
- becoming a sponsor .
-
-
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 @@
+
+
+
+
+
+
{{ item.title }}
+
{{ formatDate(item.releasedAt) }}
+
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
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) }}
-
-
-
-
-
- {{ loadingMore ? '加载中...' : '加载更多' }}
-
-
-
+