571 字
3 分钟
为你的Fuwari博客添加音乐播放器!

CAUTION您应该在浏览下面的内容前备份您的博客文件夹,以防止您的重要数据丢失
正式开始
WPwebplayer方案
偶然发现2x.nz上的一个音乐播放器WPwebplayer,感觉挺好看的,于是把它放进了博客里。
修改博客根目录下的src/layouts/Layout.astro
Ctrl+F
搜索</head>
,定位之后在</head>
上一行粘贴如下代码:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/wpwebplayer@1.1.5/min-css.css"><script src="https://cdn.jsdelivr.net/npm/wpwebplayer@1.1.5/min-js.js"></script>
这样你就引入了WPwebplayer的样式和js,我们继续修改,Ctrl+F
定位到</body>
,在</body>
上一行写粘贴如下代码:
<wp-music-player src="" title="" artist="" cover="" autoplay="true" loop="true" volume="0.1" fixed="true" mini="true" theme="#ff6b6b"></wp-music-player>
参数说明:
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
src | string | 无 | 音频文件地址(必须) |
title | string | 无 | 音乐标题 |
artist | string | 无 | 作者 |
cover | string | 无 | 封面图片URL |
autoplay | true / false | false | 是否自动播放 |
loop | true / false | true | 是否循环播放 |
volume | number (0~1) | 1.0 | 初始音量(0~1) |
fixed | true / false | true | 是否固定样式 |
mini | true / false | true | 是否迷你模式 |
theme | string (色值) | #00c3ff | 主题颜色 |
往里填你的自定义参数就行了,然后pnpm run dev
查看你的成果:
唯一的缺点就是不支持多首歌,不过挺好看的
Aplayer方案
上一个方案不支持多首歌或者网易云歌单,这个方案使用Aplayer实现在侧边栏显示歌曲播放卡片
这个方案是在ikamusume7.org上看到的,感谢大佬
在博客根目录下的src\components\widget文件夹中创建APlayer.svelte文件
在你的博客目录\src\components\widget
文件夹下创建文件APlayer.svelte
<div class="meting" id="meting"> <!-- require APlayer --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css"> <script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script> <!-- require MetingJS --> <script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script> <meting-js server="netease" type="playlist" id="你的网易云歌单ID" order="random" list-folded="true"> </meting-js></div>
创建Music.astro文件
然后在同目录下创建文件Music.astro
---import WidgetLayout from './WidgetLayout.astro'import APlayer from './APlayer.svelte'
const COLLAPSED_HEIGHT = '7.5rem'
interface Props { class?: string style?: string}const className = Astro.props.classconst style = Astro.props.style
const isCollapsed = false---<WidgetLayout name="音乐" id="music" isCollapsed={isCollapsed} collapsedHeight={COLLAPSED_HEIGHT} class={className} style={style}> <div class="flex flex-col gap-1"> <APlayer client:only="svelte"/> </div></WidgetLayout>
修改src\components\widget\SideBar.astro文件
---import type { MarkdownHeading } from "astro";import Categories from "./Categories.astro";import Profile from "./Profile.astro";import Tag from "./Tags.astro";import Music from './Music.astro'interface Props { class?: string; headings?: MarkdownHeading[];}
const className = Astro.props.class;---<div id="sidebar" class:list={[className, "w-full"]}> <div class="flex flex-col w-full gap-4 mb-4"> <Profile></Profile> </div> <div id="sidebar-sticky" class="transition-all duration-700 flex flex-col w-full gap-4 top-4 sticky top-4"> <Categories class="onload-animation" style="animation-delay: 150ms"></Categories> <Tag class="onload-animation" style="animation-delay: 200ms"></Tag> div id="music" class="flex flex-col w-full gap-4"> <Music></Music> </div> </div></div>
完毕,pnpm run dev
查看你的成果