feat: 调整Aplayer引入方式为脚本链接,支持通过metingJS获取音乐平台歌单

This commit is contained in:
ykxkykx
2023-01-02 04:00:59 +08:00
parent 0d0fb07eef
commit 936e882ac2
6 changed files with 31 additions and 13 deletions

1
.gitignore vendored
View File

@@ -36,6 +36,7 @@ yarn-error.log*
# dev # dev
/data.json /data.json
/yarn.lock /yarn.lock
/pnpm-lock.yaml
.idea .idea
.vscode .vscode

View File

@@ -69,7 +69,8 @@ const BLOG = {
// 音乐播放插件 // 音乐播放插件
MUSIC_PLAYER: process.env.NEXT_PUBLIC_MUSIC_PLAYER || true, // 是否使用音乐播放插件 MUSIC_PLAYER: process.env.NEXT_PUBLIC_MUSIC_PLAYER || true, // 是否使用音乐播放插件
MUSIC_PLAYER_VISIBLE: process.env.NEXT_PUBLIC_MUSIC_PLAYER_VISIBLE || true, // 是否在左下角显示播放和切换 MUSIC_PLAYER_VISIBLE: process.env.NEXT_PUBLIC_MUSIC_PLAYER_VISIBLE || true, // 是否在左下角显示播放和切换
MUSIC_PLAYER_AUTO_PLAY: process.env.NEXT_PUBLIC_MUSIC_PLAYER_AUTO_PLAY || true, // 是否自动播放(移动设备不支持自动播放) MUSIC_PLAYER_AUTO_PLAY: process.env.NEXT_PUBLIC_MUSIC_PLAYER_AUTO_PLAY || true, // 是否自动播放,不过时常不生效(移动设备不支持自动播放)
MUSIC_PLAYER_SHOW_LRC: process.env.NEXT_PUBLIC_MUSIC_PLAYER_SHOW_LRC || false, // 是否展示歌词(前提是有配置歌词路径,对 meting 无效)
MUSIC_PLAYER_ORDER: 'list', // 默认播放方式,顺序 list随机 random MUSIC_PLAYER_ORDER: 'list', // 默认播放方式,顺序 list随机 random
MUSIC_PLAYER_AUDIO_LIST: [ // 除了以下配置外,还可配置歌词,具体配置项看此文档 https://aplayer.js.org/#/zh-Hans/ MUSIC_PLAYER_AUDIO_LIST: [ // 除了以下配置外,还可配置歌词,具体配置项看此文档 https://aplayer.js.org/#/zh-Hans/
{ {
@@ -85,6 +86,9 @@ const BLOG = {
cover: 'https://p1.music.126.net/kn6ugISTonvqJh3LHLaPtQ==/599233837187278.jpg' cover: 'https://p1.music.126.net/kn6ugISTonvqJh3LHLaPtQ==/599233837187278.jpg'
} }
], ],
MUSIC_PLAYER_METING: process.env.NEXT_PUBLIC_MUSIC_PLAYER_METING || false, // 是否要开启 MetingJS从平台获取歌单。会覆盖自定义的 MUSIC_PLAYER_AUDIO_LIST更多配置信息https://github.com/metowolf/MetingJS
MUSIC_PLAYER_METING_SERVER: process.env.NEXT_PUBLIC_MUSIC_PLAYER_METING_SERVER || 'netease', // 音乐平台,[netease, tencent, kugou, xiami, baidu]
MUSIC_PLAYER_METING_ID: process.env.NEXT_PUBLIC_MUSIC_PLAYER_METING_ID || '60198', // 对应歌单的 id
// ----> 评论互动 可同时开启多个支持 WALINE VALINE GISCUS CUSDIS UTTERRANCES GITALK // ----> 评论互动 可同时开启多个支持 WALINE VALINE GISCUS CUSDIS UTTERRANCES GITALK

View File

@@ -101,6 +101,10 @@ const CommonScript = () => {
}} }}
/> />
</>)} </>)}
{/* 引入音乐播放 */}
<script async src="https://cdnjs.cloudflare.com/ajax/libs/aplayer/1.10.1/APlayer.min.js" />
<script async src="https://cdnjs.cloudflare.com/ajax/libs/meting/2.0.1/Meting.min.js" />
</>) </>)
} }

View File

@@ -1,5 +1,4 @@
import React from 'react' import React from 'react'
import Aplayer from 'aplayer'
import BLOG from '@/blog.config' import BLOG from '@/blog.config'
const Player = () => { const Player = () => {
@@ -7,10 +6,11 @@ const Player = () => {
const ref = React.useRef(null) const ref = React.useRef(null)
React.useEffect(() => { React.useEffect(() => {
if (BLOG.MUSIC_PLAYER) { if (BLOG.MUSIC_PLAYER && !BLOG.MUSIC_PLAYER_METING) {
setPlayer(new Aplayer({ setPlayer(new window.APlayer({
container: ref.current, container: ref.current,
fixed: true, fixed: true,
showlrc: BLOG.MUSIC_PLAYER_SHOW_LRC,
order: BLOG.MUSIC_PLAYER_ORDER, order: BLOG.MUSIC_PLAYER_ORDER,
autoplay: BLOG.MUSIC_PLAYER_AUTO_PLAY, autoplay: BLOG.MUSIC_PLAYER_AUTO_PLAY,
audio: BLOG.MUSIC_PLAYER_AUDIO_LIST audio: BLOG.MUSIC_PLAYER_AUDIO_LIST
@@ -22,11 +22,24 @@ const Player = () => {
}, []) }, [])
return ( return (
<div <div className={BLOG.MUSIC_PLAYER_VISIBLE ? 'visible' : 'invisible'}>
ref={ref} <link
data-player={player} rel="stylesheet"
className={BLOG.MUSIC_PLAYER_VISIBLE ? 'visible' : 'invisible'} type="text/css"
/> href="https://cdnjs.cloudflare.com/ajax/libs/aplayer/1.10.1/APlayer.min.css"
/>
{BLOG.MUSIC_PLAYER && BLOG.MUSIC_PLAYER_METING
? <meting-js
fixed
type="playlist"
order={BLOG.MUSIC_PLAYER_ORDER}
autoplay={BLOG.MUSIC_PLAYER_AUTO_PLAY}
server={BLOG.MUSIC_PLAYER_METING_SERVER}
id={BLOG.MUSIC_PLAYER_METING_ID}
/>
: <div ref={ref} data-player={player} />
}
</div>
) )
} }

View File

@@ -29,7 +29,6 @@
"animate.css": "^4.1.1", "animate.css": "^4.1.1",
"animejs": "^3.2.1", "animejs": "^3.2.1",
"aos": "^3.0.0-beta.6", "aos": "^3.0.0-beta.6",
"aplayer": "1.10.1",
"axios": ">=0.21.1", "axios": ">=0.21.1",
"copy-to-clipboard": "^3.3.1", "copy-to-clipboard": "^3.3.1",
"eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-hooks": "^4.6.0",

View File

@@ -19,9 +19,6 @@ import '@fontsource/noto-serif-sc'
// local fontawesome 6.2.1 @see https://www.npmjs.com/package/@fortawesome/fontawesome-free // local fontawesome 6.2.1 @see https://www.npmjs.com/package/@fortawesome/fontawesome-free
import '@fortawesome/fontawesome-free/css/all.min.css' import '@fortawesome/fontawesome-free/css/all.min.css'
// Aplayer.js 的样式
import 'aplayer/dist/APlayer.min.css'
// import '@/styles/prism-mac-style.css' // code 左上角显示mac的红黄绿图标 // import '@/styles/prism-mac-style.css' // code 左上角显示mac的红黄绿图标
import { GlobalContextProvider } from '@/lib/global' import { GlobalContextProvider } from '@/lib/global'