mirror of https://github.com/YunYouJun/valaxy
feat: integrate bilibili-bangumi-component (#352)
This commit is contained in:
parent
eb4df405f6
commit
3ccabfb9e3
|
@ -77,7 +77,9 @@ export default defineValaxyConfig<ThemeConfig>({
|
|||
indexName: 'valaxy',
|
||||
}),
|
||||
addonBangumi({
|
||||
uid: 378106,
|
||||
api: 'https://yi_xiao_jiu-bangumi.web.val.run',
|
||||
bilibiliUid: '1579790',
|
||||
bgmEnabled: false,
|
||||
}),
|
||||
addonComponents(),
|
||||
addonWaline({
|
||||
|
|
|
@ -1,7 +1,51 @@
|
|||
# valaxy-addon-bangumi
|
||||
|
||||
- [[功能建议] 追番列表](https://github.com/YunYouJun/valaxy/issues/296)
|
||||
关联 issue [[功能建议] 追番列表](https://github.com/YunYouJun/valaxy/issues/296)
|
||||
|
||||
## Ref
|
||||
依赖 [bilibili-bangumi-component](https://github.com/yixiaojiu/bilibili-bangumi-component),需要部署后端服务,可参考 [bilibili-bangumi 使用](https://github.com/yixiaojiu/bilibili-bangumi-component?tab=readme-ov-file#%E4%BD%BF%E7%94%A8)进行搭建
|
||||
|
||||
- [hexo-bilibili-bangumi](https://github.com/HCLonely/hexo-bilibili-bangumi)
|
||||
## 如何集成
|
||||
|
||||
```bash
|
||||
npm i valaxy-addon-bangumi
|
||||
```
|
||||
|
||||
`valaxy-addon-bangumi` 暴露了 `ValaxyBangumi` 组件
|
||||
|
||||
使用示例:
|
||||
|
||||
```ts
|
||||
// valaxy.config.ts
|
||||
import { defineConfig } from 'valaxy'
|
||||
import { addonBangumi } from 'valaxy-addon-bangumi'
|
||||
|
||||
export default defineConfig({
|
||||
addons: [
|
||||
addonBangumi({
|
||||
api: 'https://yi_xiao_jiu-bangumi.web.val.run',
|
||||
bilibiliUid: '1579790',
|
||||
bgmEnabled: false,
|
||||
}),
|
||||
]
|
||||
})
|
||||
```
|
||||
|
||||
```md
|
||||
---
|
||||
title: Bangumi 追番列表
|
||||
keywords: Bangumi
|
||||
description: Bangumi 追番列表
|
||||
---
|
||||
|
||||
<ValaxyBangumi />
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
| 字段 | 描述 | 默认值 |
|
||||
|:--------------:|:----------------------------------------:|:------:|
|
||||
| api | 后端 api 地址 | - |
|
||||
| bilibili-uid | Bilibili 的 uid,在后端中引入 uid 的 env 后可以不设置 | - |
|
||||
| bgm-uid | Bangumi 的 uid,在后端中引入 uid 的 env 后可以不设置 | - |
|
||||
| bilibili-enabled | 是否展示 Bilibili 平台 | true |
|
||||
| bgm-enabled | 是否展示 Bangumi 平台 | true|
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
import { computed } from 'vue'
|
||||
import type { ValaxyAddon } from 'valaxy'
|
||||
import { useRuntimeConfig } from 'valaxy'
|
||||
import type { BangumiOptions } from '../types'
|
||||
|
||||
/**
|
||||
* get addon config
|
||||
*/
|
||||
export function useAddonBangumi() {
|
||||
const runtimeConfig = useRuntimeConfig()
|
||||
return computed<BangumiOptions>(() => {
|
||||
const options = (runtimeConfig.value.addons['valaxy-addon-bangumi'] as ValaxyAddon<BangumiOptions>).options
|
||||
if (!options) {
|
||||
console.warn('`valaxy-addon-bangumi` options not found')
|
||||
return { api: '' }
|
||||
}
|
||||
|
||||
return {
|
||||
...options,
|
||||
bilibiliEnabled: options.bilibiliEnabled ?? true,
|
||||
bgmEnabled: options.bgmEnabled ?? true,
|
||||
}
|
||||
})
|
||||
}
|
|
@ -1,5 +1,28 @@
|
|||
<script setup lang="ts">
|
||||
/**
|
||||
* The ESM module will be mistakenly identified as CJS. Importing like this:
|
||||
* import { defineCustomElements } from "bilibili-bangumi-component/loader";
|
||||
*
|
||||
* reference https://github.com/YunYouJun/valaxy/pull/346
|
||||
*/
|
||||
// eslint-disable-next-line ts/ban-ts-comment
|
||||
// @ts-expect-error
|
||||
import { defineCustomElements } from 'bilibili-bangumi-component/dist/cjs/loader.cjs'
|
||||
import { useAddonBangumi } from '../client'
|
||||
|
||||
defineCustomElements()
|
||||
|
||||
const bangumiOptions = useAddonBangumi()
|
||||
|
||||
const { api, bgmEnabled, bgmUid, bilibiliEnabled, bilibiliUid } = bangumiOptions.value
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
Bangumi
|
||||
</div>
|
||||
<bilibili-bangumi
|
||||
:api="api"
|
||||
:bgm-enabled="bgmEnabled"
|
||||
:bgm-uid="bgmUid"
|
||||
:bilibili-enabled="bilibiliEnabled"
|
||||
:bilibili-uid="bilibiliUid"
|
||||
/>
|
||||
</template>
|
||||
|
|
|
@ -1,17 +1,9 @@
|
|||
import { defineValaxyAddon } from 'valaxy'
|
||||
import consola from 'consola'
|
||||
import pkg from '../package.json'
|
||||
|
||||
import type { BangumiOptions } from '../types'
|
||||
|
||||
export const addonBangumi = defineValaxyAddon<BangumiOptions>(options => ({
|
||||
name: pkg.name,
|
||||
enable: true,
|
||||
options,
|
||||
|
||||
setup(valaxy) {
|
||||
valaxy.hook('build:before', () => {
|
||||
consola.info('[valaxy-addon-bangumi] build:before')
|
||||
})
|
||||
},
|
||||
}))
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
import { createBangumiApi } from 'bangumi-api'
|
||||
import consola from 'consola'
|
||||
import pkg from '../package.json'
|
||||
|
||||
const bangumiApi = createBangumiApi()
|
||||
bangumiApi.axios.defaults.headers.common['User-Agent'] = `YunYouJun/girid + (${pkg.repository.url})`
|
||||
|
||||
export async function getBangumiDataFromBangumiApi() {
|
||||
const data = await bangumiApi.subjects({
|
||||
subject_id: 1,
|
||||
}).get()
|
||||
consola.log(data)
|
||||
}
|
|
@ -15,6 +15,6 @@
|
|||
"valaxy": "latest"
|
||||
},
|
||||
"dependencies": {
|
||||
"bangumi-api": "^0.0.1"
|
||||
"bilibili-bangumi-component": "^0.1.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
import { getBangumiDataFromBangumiApi } from '../node/utils'
|
||||
|
||||
getBangumiDataFromBangumiApi()
|
|
@ -1,8 +0,0 @@
|
|||
export interface BangumiOptions {
|
||||
/**
|
||||
* @url https://bgm.tv/
|
||||
* Bangumi uid
|
||||
* 登录 Bangumi 后打开控制台,输入 `CHOBITS_UID` 回车,下面会输出 id
|
||||
*/
|
||||
uid: number
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
export interface BangumiOptions {
|
||||
/**
|
||||
* 后端 api 地址
|
||||
*/
|
||||
api: string
|
||||
|
||||
/**
|
||||
* Bilibili 的 uid,在后端中引入 uid 的 env 后可以不设置
|
||||
*/
|
||||
bilibiliUid?: string
|
||||
|
||||
/**
|
||||
* Bangumi 的 uid,在后端中引入 uid 的 env 后可以不设置
|
||||
*/
|
||||
bgmUid?: string
|
||||
|
||||
/**
|
||||
* 是否展示 Bilibili 平台
|
||||
* @default true
|
||||
*/
|
||||
bilibiliEnabled?: boolean
|
||||
|
||||
/**
|
||||
* 是否展示 Bangumi 平台
|
||||
* @default true
|
||||
*/
|
||||
bgmEnabled?: boolean
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
import { defineValaxyConfig } from 'valaxy'
|
||||
|
||||
export default defineValaxyConfig({
|
||||
vue: {
|
||||
isCustomElement: [
|
||||
(tag) => {
|
||||
return tag === 'bilibili-bangumi'
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
|
@ -559,9 +559,9 @@ importers:
|
|||
|
||||
packages/valaxy-addon-bangumi:
|
||||
dependencies:
|
||||
bangumi-api:
|
||||
specifier: ^0.0.1
|
||||
version: 0.0.1
|
||||
bilibili-bangumi-component:
|
||||
specifier: ^0.1.2
|
||||
version: 0.1.2
|
||||
valaxy:
|
||||
specifier: latest
|
||||
version: link:../valaxy
|
||||
|
@ -2339,6 +2339,12 @@ packages:
|
|||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||
dev: true
|
||||
|
||||
/@stencil/core@4.12.2:
|
||||
resolution: {integrity: sha512-WEMpoqwMV4hY/ab2z9NxRhSeZwuKEugjyn6Vd+qA9xqZh6VNUL27QbP8vCa7IeqD4Zql4JBtKu3lVuBHutWE6w==}
|
||||
engines: {node: '>=16.0.0', npm: '>=7.10.0'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/@stylistic/eslint-plugin-js@1.5.4(eslint@8.56.0):
|
||||
resolution: {integrity: sha512-3ctWb3NvJNV1MsrZN91cYp2EGInLPSoZKphXIbIRx/zjZxKwLDr9z4LMOWtqjq14li/OgqUUcMq5pj8fgbLoTw==}
|
||||
engines: {node: ^16.0.0 || >=18.0.0}
|
||||
|
@ -4024,16 +4030,6 @@ packages:
|
|||
resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==}
|
||||
dev: true
|
||||
|
||||
/axios@1.6.5:
|
||||
resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==}
|
||||
dependencies:
|
||||
follow-redirects: 1.15.5
|
||||
form-data: 4.0.0
|
||||
proxy-from-env: 1.1.0
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
dev: false
|
||||
|
||||
/axios@1.6.7:
|
||||
resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==}
|
||||
dependencies:
|
||||
|
@ -4051,14 +4047,6 @@ packages:
|
|||
resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
|
||||
dev: true
|
||||
|
||||
/bangumi-api@0.0.1:
|
||||
resolution: {integrity: sha512-P9mZvNdhoF/IQZcoInfHfMNaCGb8LbeCQmoQeyoC7LTYHvjoaRWmtG8wn1jhwhAIkFhbzfhIdS+yhDQ5uGMFNQ==}
|
||||
dependencies:
|
||||
axios: 1.6.5
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
dev: false
|
||||
|
||||
/base64-js@1.5.1:
|
||||
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
||||
dev: true
|
||||
|
@ -4075,6 +4063,12 @@ packages:
|
|||
require-from-string: 2.0.2
|
||||
dev: false
|
||||
|
||||
/bilibili-bangumi-component@0.1.2:
|
||||
resolution: {integrity: sha512-v4i3041d3PWvt6X2HMAuCaU3oPI8WKiuxRM8EcRwelOXTQtRcHDn3fxeg7gQP1JoraRFMdwTJqr191erIqyV9w==}
|
||||
dependencies:
|
||||
'@stencil/core': 4.12.2
|
||||
dev: false
|
||||
|
||||
/binary-extensions@2.2.0:
|
||||
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
|
||||
engines: {node: '>=8'}
|
||||
|
|
Loading…
Reference in New Issue