From 4dfe6e2b1aa6aad4aaf5589425bb8ad5903c9438 Mon Sep 17 00:00:00 2001 From: Hakadao Date: Mon, 8 May 2023 01:59:36 +0800 Subject: [PATCH] feat: watch later page --- src/background/messageListeners/watchLater.ts | 8 + src/contentScripts/views/App.vue | 13 +- .../views/WatchLater/WatchLater.vue | 281 ++++++++++++++++++ src/contentScripts/views/WatchLater/types.ts | 44 +++ src/enums/appEnums.ts | 1 + 5 files changed, 346 insertions(+), 1 deletion(-) create mode 100644 src/contentScripts/views/WatchLater/WatchLater.vue create mode 100644 src/contentScripts/views/WatchLater/types.ts diff --git a/src/background/messageListeners/watchLater.ts b/src/background/messageListeners/watchLater.ts index 959d66c3..40c4d2f3 100644 --- a/src/background/messageListeners/watchLater.ts +++ b/src/background/messageListeners/watchLater.ts @@ -31,6 +31,14 @@ export const setupWatchLaterMsgLstnr = () => { .then(data => data) .catch(error => console.error(error)) } + // https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/history&toview/toview.md#%E8%8E%B7%E5%8F%96%E7%A8%8D%E5%90%8E%E5%86%8D%E7%9C%8B%E8%A7%86%E9%A2%91%E5%88%97%E8%A1%A8 + else if (message.contentScriptQuery === 'getAllWatchLaterList') { + const url = 'https://api.bilibili.com/x/v2/history/toview' + return fetch(url) + .then(response => response.json()) + .then(data => data) + .catch(error => console.error(error)) + } }) }) } diff --git a/src/contentScripts/views/App.vue b/src/contentScripts/views/App.vue index 2a25819c..921e8e48 100644 --- a/src/contentScripts/views/App.vue +++ b/src/contentScripts/views/App.vue @@ -7,6 +7,7 @@ import Home from './Home/Home.vue' import Search from './Search/Search.vue' import Anime from './Anime/Anime.vue' import History from './History/History.vue' +import WatchLater from './WatchLater/WatchLater.vue' import Favorites from './Favorites/Favorites.vue' import Video from './Video/Video.vue' import { accessKey, activatedPage, settings } from '~/logic' @@ -29,7 +30,7 @@ const isDark = useDark({ }, }) const toggleDark = useToggle(isDark) -const pages = { Home, Search, Anime, History, Favorites, Video } +const pages = { Home, Search, Anime, History, WatchLater, Favorites, Video } const isVideoPage = ref(false) const mainApp = ref() @@ -205,6 +206,16 @@ function setAppAppearance() { + +
+ +
+
+ + + + +
+ +
+ + +
+ {{ calcCurrentTime(item.duration) }} +
+
+ + +
+
+

+ {{ item.title }} +

+
+ + {{ item.owner.name }} +
+

+ {{ + useDateFormat(item.pubdate * 1000, 'YYYY-MM-DD HH:mm:ss') + .value + }} +

+
+ + +
+
+
+
+ + + + + + + + + + + + + + diff --git a/src/contentScripts/views/WatchLater/types.ts b/src/contentScripts/views/WatchLater/types.ts new file mode 100644 index 00000000..b1c0db3e --- /dev/null +++ b/src/contentScripts/views/WatchLater/types.ts @@ -0,0 +1,44 @@ +export interface WatchLaterModel { + aid: number + videos: number + tid: number + tname: string + copyright: number + pic: string + title: string + pubdate: number + ctime: number + desc: string + state: number + duration: number + mission_id: number + rights: {} + owner: { + mid: number + name: string + face: string + } + stat: { + aid: number + view: number + danmaku: number + reply: number + favorite: number + coin: number + share: number + now_rank: number + his_rank: number + like: number + dislike: number + } + short_link_v2: string + first_frame: string + count: number + cid: number + progress: number + add_at: number + bvid: string + uri: string + viewed: boolean + enable_vt: number +} diff --git a/src/enums/appEnums.ts b/src/enums/appEnums.ts index 42a22677..4d3ca429 100644 --- a/src/enums/appEnums.ts +++ b/src/enums/appEnums.ts @@ -11,4 +11,5 @@ export enum AppPage { Anime = 'Anime', History = 'History', Favorites = 'Favorites', + WatchLater = 'WatchLater', }