-
-
+
-
+
@@ -214,27 +230,37 @@ export default defineComponent({
+ :style="{
+ backgroundImage: `url(${`${userInfo.face}`.replace(
+ 'http:',
+ '',
+ )})`,
+ }"
+ />
-
-
+
+
-
+ />
+
@@ -243,11 +269,8 @@ export default defineComponent({
@mouseenter="showNotificationsDropDown = true"
@mouseleave="showNotificationsDropDown = false"
>
-
- {{ unReadmessageCount > 999 ? '999+' : unReadmessageCount }}
+
+ {{ unReadMessageCount > 999 ? '999+' : unReadMessageCount }}
-
-
+
-
+ />
+
@@ -272,10 +295,7 @@ export default defineComponent({
@mouseenter="showMomentsDropDown = true"
@mouseleave="showMomentsDropDown = false"
>
-
+
{{ newMomentsCount > 999 ? '999+' : newMomentsCount }}
-
-
-
-
+
+
+
-
+
@@ -343,20 +367,19 @@ export default defineComponent({
p="xl:auto
- {{ $t('topbar.upload') }}
+ {{
+ $t('topbar.upload')
+ }}
-
-
+
-
+ />
+
@@ -451,7 +474,7 @@ export default defineComponent({
@apply duration-300;
&.hover {
- @apply transform scale-230 translate-y-4;
+ @apply transform scale-230 "!translate-y-30px";
}
}
diff --git a/src/components/Topbar/notify.ts b/src/components/Topbar/notify.ts
index f9be49e2..4afc45e3 100644
--- a/src/components/Topbar/notify.ts
+++ b/src/components/Topbar/notify.ts
@@ -1,5 +1,5 @@
-import { MomentType } from '~/types'
-import { getUserID, getCookie, setCookie } from '~/utils'
+import { MomentType } from './types'
+import { getCookie, getUserID, setCookie } from '~/utils'
/** Update the time interval of topbar notifications and moments counts */
export const updateInterval = 1000 * 60 * 5 // Updated every 5 minutes
diff --git a/src/components/Topbar/types.ts b/src/components/Topbar/types.ts
new file mode 100644
index 00000000..4ac9821d
--- /dev/null
+++ b/src/components/Topbar/types.ts
@@ -0,0 +1,104 @@
+export interface UserInfo {
+ face: string // avatar
+ level_info: {
+ current_level: number
+ current_min: number
+ current_exp: number
+ next_exp: string
+ }
+ mid: number
+ money: number // 硬幣
+ uname: string // username
+ wallet: {
+ mid: number
+ bcoin_balance: number // b幣
+ }
+}
+
+/**
+ * Number of follower, following and published posts by user
+ */
+export interface UserStat {
+ dynamic_count: number
+ follower: number
+ following: number
+}
+
+// https://github.com/SocialSisterYi/bilibili-API-collect/blob/63da4454309e2599269125e24a6940b1feecedef/message/msg.md#%E6%9C%AA%E8%AF%BB%E6%B6%88%E6%81%AF%E6%95%B0
+export interface UnReadMessage {
+ at: number
+ chat: number
+ like: number
+ reply: number
+ sys_msg: number
+ up: number
+}
+
+export interface UnReadDm {
+ // https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread?build=0&mobi_app=web&unread_type=0
+ unfollow_unread: number
+ follow_unread: number
+ unfollow_push_msg: number
+ dustbin_push_msg: number
+ dustbin_unread: number
+ biz_msg_unfollow_unread: number
+ biz_msg_follow_unread: number
+}
+
+export enum MomentType {
+ Video = 8,
+ Article = 64,
+ Bangumi = 512,
+ PGC = 4097,
+ Movie = 4098,
+ TvShow = 4099,
+ ChineseAnime = 4100,
+ Documentary = 4101,
+}
+
+export interface MomentItem {
+ type?: MomentType
+ id: number
+ uid: number
+ name: string
+ face: string
+ aid?: number
+ bvid?: string
+ episode_id?: number
+ url: string
+ ctime?: number
+ title: string
+ cover: string
+ dynamic_id_str?: string
+ isNew: boolean
+}
+
+// https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/history&toview/history.md#%E8%8E%B7%E5%8F%96%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%E5%88%97%E8%A1%A8_web%E7%AB%AF
+export enum HistoryType {
+ Archive = 'archive', // archive:稿件
+ PGC = 'pgc', // pgc:剧集 (番剧 / 影视)
+ Live = 'live', // live:直播
+ ArticleList = 'article-list', // article-list:文集
+ Article = 'article', // article:文章
+}
+
+export interface HistoryItem {
+ title: string
+ cover: string
+ covers?: Array
+ history: {
+ business: HistoryType
+ epid?: number
+ bvid?: string
+ part?: string
+ oid: number
+ }
+ author_name: string
+ author_face: string
+ author_mid: string
+ view_at: number
+ progress: number
+ duration: number
+ kid: number
+ live_status: 0 | 1 // 0:未开播 1:已开播
+}
diff --git a/src/contentScripts/views/App.vue b/src/contentScripts/views/App.vue
index c7ce7c03..44e4eba2 100644
--- a/src/contentScripts/views/App.vue
+++ b/src/contentScripts/views/App.vue
@@ -1,9 +1,40 @@
+
+
-
-
-
+
+
+
-
+
-
+
-
-
diff --git a/src/contentScripts/views/Home/index.vue b/src/contentScripts/views/Home/Home.vue
similarity index 100%
rename from src/contentScripts/views/Home/index.vue
rename to src/contentScripts/views/Home/Home.vue
diff --git a/src/contentScripts/views/Home/RecommendContent.vue b/src/contentScripts/views/Home/RecommendContent.vue
index 7ed6fb57..82d57996 100644
--- a/src/contentScripts/views/Home/RecommendContent.vue
+++ b/src/contentScripts/views/Home/RecommendContent.vue
@@ -1,7 +1,7 @@
-
+
{{ $t('home.video_removed') }}
@@ -177,16 +200,28 @@ export default defineComponent({
class="overflow-hidden w-full relative rounded-$bew-radius z-1"
style="aspect-ratio: 16/9"
>
-
![]()
+
-
+
-
+
{{ $t('home.not_interested_in') }}
@@ -247,13 +285,17 @@ export default defineComponent({
hover:bg="$bew-fill-2"
transition="all duration-300"
rounded="$bew-radius"
- @click.stop="submitDislike(index,
- reason.reason_id,
- video.goto,
- video.param,
- video.mid,
- video.tid,
- video.tag.tag_id)"
+ @click.stop="
+ submitDislike(
+ index,
+ reason.reason_id,
+ video.goto,
+ video.param,
+ video.mid,
+ video.tid,
+ video.tag.tag_id,
+ )
+ "
>
{{ reason.reason_name }}
@@ -265,13 +307,19 @@ export default defineComponent({
{{ video.name }}
- {{ numFormatter(video.play) }}{{ language === LanguageType.English
- ? ` ${$t('common.view', video.play)}`
- : $t('common.view', video.play) }}
+ {{ numFormatter(video.play)
+ }}{{
+ language === LanguageType.English
+ ? ` ${$t('common.view', video.play)}`
+ : $t('common.view', video.play)
+ }}
•
- {{ calcTimeSince(new Date(video.ctime * 1000)) }}{{ language === LanguageType.English
- ? ` ${$t('common.ago')}`
- : $t('common.ago') }}
+ {{ calcTimeSince(new Date(video.ctime * 1000))
+ }}{{
+ language === LanguageType.English
+ ? ` ${$t('common.ago')}`
+ : $t('common.ago')
+ }}
@@ -292,7 +340,7 @@ export default defineComponent({
justify="center"
>