# 解决 Hexo+Shoka 背景音乐无法播放的问题 - 技术分享 - 服务 - Linux | Hito = Hito 的公告栏 = 天下事有难易乎？为之，则难者亦易矣
Keywords: 博客,Hexo,Shoka,背景音乐

今天突然发现博客的音乐无法播放了。经过一顿查找，发现是因为 https://api.i-meto.com/meting/api 调用出错了。shoka 主题应该是通过这个网站提取音乐地址、图片等信息。通过断点发现网易播放列表还是能正常获取的，只是列表中的具体音乐、图片无法获取了。于是自己用获取的列表信息组装出正确的 url 问题基本解决。只针对网易播放列表，图片只能使用一张固定的。

解决方法如下：

到 themes\shoka\source\js_app 目录下打开 player.js 文件，在最底部 init (config) 下加入 vendorJs ('fancybox');，然后找到 56 行用下面的代码替换即可。

    fetch: function(source) {

          var list = []

          return new Promise(function(resolve, reject) {

            source.forEach(function(raw) {

              var meta = utils.parse(raw)

              if(meta[0]) {

                var skey = JSON.stringify(meta)

                var playlist = store.get(skey)

                if(playlist) {

    			  // 自己修改 - start

    			  var audioInfos = JSON.parse(playlist);

    			  var neteaseStartUrl = "https://music.163.com/song/media/outer/url?id=";

    			  if (meta[0] == "netease" && audioInfos && audioInfos.length>0 && !audioInfos[0].url.startsWith(neteaseStartUrl)) {// 如果是网易音乐就自己构建 url

    				  jQuery.ajax({

    					  url: audioInfos[0].url,

    					  type: 'get',

    					  async: false,

    					  timeout: 5000,

    					  complete : function(XMLHttpRequest, status){

    						  if (XMLHttpRequest.status != 200) {

    							  audioInfos.forEach(function(audioInfo) {

    								  var id = audioInfo.url.substring(audioInfo.url.indexOf("id=")+3, audioInfo.url.indexOf("&auth="));

    								  audioInfo.url = neteaseStartUrl + id;

    								  audioInfo.pic = "https://p3.music.126.net/Vji3PQJAZ2C7gS_6X51NFQ==/109951164723650033.jpg?param=200y200";

    							  })

    						  }

    						  list.push.apply(list, audioInfos);

    						  resolve(list);

    					  }

    				  });

    			  } else {

    				  list.push.apply(list, audioInfos);

    				  resolve(list);

    			  }

    			  // 自己修改 - end

                } else {

                  fetch('https://api.i-meto.com/meting/api?server='+meta[0]+'&type='+meta[1]+'&id='+meta[2]+'&r='+ Math.random())

                    .then(function(response) {

                      return response.json()

                    }).then(function(json) {

                      store.set(skey, JSON.stringify(json))

                      list.push.apply(list, json);

                      resolve(list);

                    }).catch(function(ex) {})

                }

              } else {

                list.push(raw);

                resolve(list);

              }

            })

          })

        }

博客 Hexo Shoka 背景音乐