feat: integrate bilibili-bangumi-component (#352)

This commit is contained in:
翊小久 2024-02-17 22:19:59 +08:00 committed by GitHub
parent eb4df405f6
commit 3ccabfb9e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 155 additions and 61 deletions

View File

@ -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({

View File

@ -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|

View File

@ -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,
}
})
}

View File

@ -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>

View File

@ -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')
})
},
}))

View File

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

View File

@ -15,6 +15,6 @@
"valaxy": "latest"
},
"dependencies": {
"bangumi-api": "^0.0.1"
"bilibili-bangumi-component": "^0.1.2"
}
}

View File

@ -1,3 +0,0 @@
import { getBangumiDataFromBangumiApi } from '../node/utils'
getBangumiDataFromBangumiApi()

View File

@ -1,8 +0,0 @@
export interface BangumiOptions {
/**
* @url https://bgm.tv/
* Bangumi uid
* Bangumi `CHOBITS_UID` id
*/
uid: number
}

View File

@ -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
}

View File

@ -0,0 +1,11 @@
import { defineValaxyConfig } from 'valaxy'
export default defineValaxyConfig({
vue: {
isCustomElement: [
(tag) => {
return tag === 'bilibili-bangumi'
},
],
},
})

View File

@ -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'}