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) }}
-
-
- -
- -
-
+