hexo音视频播放插件
背景
期望给hexo添加音频,所以添加了插件hexo-tag-aplayer,与此类似的是一个视频插件,两个项目的地址:
hexo-tag-aplayer:https://github.com/MoePlayer/hexo-tag-aplayer/
hexo-tag-dplayer:https://github.com/MoePlayer/hexo-tag-dplayer
其实完全可以在md文件中直接添加html代码即可,无需安装插件,不过由于也是一次尝试,索性就记录记录
搭建方案1
安装插件
1
2npm install --save hexo-tag-aplayer
npm install --save hexo-tag-dplayer修改主题的配置文件:butterfly.yml开启butterfly主题的aplayerInject
1
2
3
4# 修改的是该主题的配置文件为butterfly.yml
aplayerInject:
enable: true
per_page: true将aplayer对应的代码添加到配置文件中:
1
2
3
4# require 代表着這些參數是必須要使用的,其它的參數則可以根據自己需要配置。
# 配置全局吸底,data-fixed 和 data-mini 也必須配置,配置為 true。
# 如果使用 Pjax,則在 class 裏需添加 no-destroy,這樣防止切換頁面時 Aplayer 被銷毀。
<div class="aplayer no-destroy" data-id="000PeZCQ1i4XVs" data-server="tencent" data-type="artist" data-fixed="true" data-mini="true" data-listFolded="false" data-order="random" data-preload="none" data-autoplay="true" muted></div>参数解释:
option default description data-id require song id / playlist id / album id / search keyword data-server require music platform: netease, tencent, kugou, xiami, baidu data-type require song, playlist, album, search, artist data-fixed FALSE enable fixed mode data-mini FALSE enable mini mode data-autoplay FALSE audio autoplay data-theme #2980b9 main color data-loop all player loop play, values: ‘all’, ‘one’, ‘none’ data-order list player play order, values: ‘list’, ‘random’ data-preload auto values: ‘none’, ‘metadata’, ‘auto’ data-volume 0.7 default volume, notice that player will remember user setting, default volume will not work after user set volume themselves data-mutex TRUE prevent to play multiple player at the same time, pause other players when this player start play data-lrctype 0 lyric type data-listfolded FALSE indicate whether list should folded at first data-listmaxheight 340px list max height data-storagename metingjs localStorage key that store player setting 将aplayer代码插入到主题配置文件(butterly.yml)文件中
1
2
3
4inject:
head:
bottom:
- <div class="aplayer no-destroy" data-id="000PeZCQ1i4XVs" data-server="tencent" data-type="playlist" data-fixed="true" data-mini="true" data-listFolded="false" data-order="random" data-preload="none" data-autoplay="true" muted></div>配置切换页面时,音乐不会中断:将主题配置文件(butterfly.yml)中的pjax设置为true
1
pjax: true
当上述配置结束后,会导致文章详情页的目录收放按钮被遮挡,此时需要调整目录的收放按钮
1
2
3
4
5
6
7# 修改主题文件(butterfly.yml)的inject配置项,
inject:
head:
# 将其配置到音乐播放的右侧
- '<style type="text/css">#toggle-sidebar {bottom: 80px}</style>'
# 或者将其配置到音乐播放的上面
# - '<style type="text/css">#toggle-sidebar {left: 100px}</style>'
搭建方案2
在方案1的基础上,如果觉得【第3步】配置的html代码在后期的时候修改不便,则可以对其进行修改,修改方案如下:
修改主题模板文件(\themes\butterfly\layout\includes\head\aplayer.pug)文件
1
2
3
4
5
6
7link(rel='stylesheet' href=url_for(theme.CDN.aplayer_css))
script(src=url_for(theme.CDN.aplayer_js))
script(src=url_for(theme.CDN.meting_js))
// 添加读取aplayer配置文件内容
if theme.aplayer && theme.aplayer.enable
.aplayer(data-id=theme.aplayer.id data-server=theme.aplayer.server data-type=theme.aplayer.type data-fixed=theme.aplayer.fixed data-mini=theme.aplayer.mini data-listFolded=theme.aplayer.listFolded data-order=theme.aplayer.order data-preload=theme.aplayer.preload)修改主题配置文件(butterfly.yml),添加配置项
1
2
3
4
5
6
7
8
9
10# 修改aplayer中播放的歌单
aplayer:
enable: true # 使用启用该aplayer
id: 5065294585 # 对应音乐平台播放专辑的ID值,一般为对应链接最后的ID值
server: netease
type: playlist # 请设置为playlist,具体我也不清楚
fixed: 'true'
order: random
preload: none
listFolded: 'false'
博文中插入
添加单曲,则直接在md文件中添加如下内容
1
2
3
4
5
6
7
8
9
10
11
12# title : 曲目标题
# author: 曲目作者
# url: 音乐文件 URL 地址
# picture_url: (可选) 音乐对应的图片地址
# narrow: (可选)播放器袖珍风格
# autoplay: (可选) 自动播放,移动端浏览器暂时不支持此功能
# width:xxx: (可选) 播放器宽度 (默认: 100%)
# lrc:xxx: (可选)歌词文件 URL 地址
{% aplayer title author url [picture_url, narrow, autoplay, width:xxx, lrc:xxx] %}
# 当开启 Hexo 的 文章资源文件夹 功能时,可以将图片、音乐文件、歌词文件放入与文章对应的资源文件夹中,然后直接引用:
{% aplayer "Caffeine" "Jeff Williams" "caffeine.mp3" "picture.jpg" "lrc:caffeine.txt" %}添加播放列表,填写内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27{% aplayerlist %}
{
"narrow": false, // (可选)播放器袖珍风格
"autoplay": true, // (可选) 自动播放,移动端浏览器暂时不支持此功能
"mode": "random", // (可选)曲目循环类型,有 'random'(随机播放), 'single' (单曲播放), 'circulation' (循环播放), 'order' (列表播放), 默认:'circulation'
"showlrc": 3, // (可选)歌词显示配置项,可选项有:1,2,3
"mutex": true, // (可选)该选项开启时,如果同页面有其他 aplayer 播放,该播放器会暂停
"theme": "#e6d0b2", // (可选)播放器风格色彩设置,默认:#b7daff
"preload": "metadata", // (可选)音乐文件预载入模式,可选项: 'none' 'metadata' 'auto', 默认: 'auto'
"listmaxheight": "513px", // (可选) 该播放列表的最大长度
"music": [
{
"title": "CoCo",
"author": "Jeff Williams",
"url": "caffeine.mp3",
"pic": "caffeine.jpeg",
"lrc": "caffeine.txt"
},
{
"title": "アイロニ",
"author": "鹿乃",
"url": "irony.mp3",
"pic": "irony.jpg"
}
]
}
{% endaplayerlist %}
备注
全文摘录:https://demo.jerryc.me/posts/507c070f/,感谢文章作者呕心沥血之作。