本文实现了一种网易云音乐随机听歌的组件
网易云音乐一直提供外链播放器,这为博客系统的搭建带来了新组件。
然而,官方的插件只能播放一首音乐,而如果我们想要实现随机听音乐的效果,就只能靠自己魔改代码了。
先来分析一下网易云音乐的外链播放器组件。我们在网易云音乐网页版中,选取一首歌曲,在歌曲页面中点击“生成外链播放器” ,可以得到一串外链播放器的代码,如下所示(以一首《卡农》为例):
1 <iframe frameborder ="no" border ="0" marginwidth ="0" marginheight ="0" width =330 height =86 src ="https://music.163.com/outchain/player?type=2&id=29414800&auto=0&height=66" > </iframe >
这段代码嵌入到网页中,则会是下面的效果:
这个组件实现了音乐播放功能,但是只能循环播放一首音乐。我们想播放多首音乐,怎么办?
先来分析上面这段代码吧。可以看到,这段代码定义了一个iframe
框架,其中border/width/height
等属性是对框架长宽和边框等的设置,而能让我们听歌的关键在于最后的那一段src
链接。
那么我们看一下这个链接:https://music.163.com/outchain/player?type=2&id=29414800&auto=0&height=66
链接通过GET传参,定义了四个参数,分别是type/id/auto/height
。研究了一下发现,id是音乐的标识符,auto定义了是否允许自动播放(0为不允许,1为允许),height定义了播放器高度。那么如果我们想播放多首音乐,只要改变id的参数就行了。
下面上代码,一共分三块。
第一块是HTML,这里定义了一个iframe框架和一个按钮,包在一个div里面。
1 2 3 4 5 6 <div id ='MusicPlayer' style ="width:100%;height:100%;" > <div id ='mp-content' style ="width:100%;height:auto;" > </div > <button id ='mp-shuffle-btn' onclick ='shuffle("1");' > 切歌</button > </div >
第二块是JavaScript代码,实现了随机切歌的功能
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 <script> var lastIndex = -1 ;var mList=['1492283139' ,'1392438000' ,'1910966474' ,'5197160' ,'1645112' ,'5284529' ,'757757' ,'28219176' ,'29097535' ,'5188837' ,'478507889' ,'1439409941' ,'569214126' ,'27946926' ,'1645140' ] function shuffle (auto ){var mlen = mList.length ; var index = Math .floor (Math .random ()*100000 %mlen); if (index==lastIndex){ if (index+1 <mlen) index += 1 ; else index = 0 ; } lastIndex = index; var mID = mList[index];var mXML = '<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=100% height=92 paddingwidth="0" src="https://music.163.com/outchain/player?type=2&id={{id}}&auto={{auto}}&height=66"></iframe>' ; mXML = mXML.replace ('{{id}}' ,mID); mXML = mXML.replace ('{{auto}}' ,auto); document .getElementById ('mp-content' ).innerHTML = mXML; } shuffle ('0' ); </script>
第三段是css样式表,可以帮我们把组件弄得好看一点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <style> #mp-shuffle-btn { width :84px ; height : 42px ; float : right; margin : 0px 0 0 0 ; border : 0px ; padding : 0 0px 0 0px ; background-color : #046c99 ; color : #fff ; font-size : 16px ; font-weight : bold; box-shadow : 0px 0px 4px rgba (127 ,127 ,198 ,0.5 ); cursor : pointer; } #mp-shuffle-btn :hover {background-color : #0587bf ;} #mp-shuffle-btn :active {background-color : #0587bf ;}</style>
使用时把这三段代码放在一起,粘贴到网页内既可。
实际使用效果:
(PS:另一个小组件,随机句子切换,可以查看我朋友Eamon的博客文章 )
(PPS:我发现如果把iframe里面的URL修改一下,把type设置为0,id设置为歌单id,height加高100px,变成 https://music.163.com/outchain/player?type=0&id=774883428&auto=0&height=166
这个样子,则可以播放歌单里面的音乐,还能选歌,感觉好神奇😂)
旧评论系统备份:
1 2 3 WarrenZhang(2022-09-08 19:56:49): 评论区放个链接:https://music.163.com/outchain/player?type=0&id=2444388851&auto=0&height=166 这个歌单是我自己的,不过网易云音乐的外链好像只能展示前十首音乐qwq