window.onload = function(){ createlist(); setInterval(checkplay, 3000); } // 搜索音乐 function getsongs(){ document.getElementById("reslist").innerHTML = ""; var search = document.getElementById("search-song"); var reslist = document.getElementById("reslist"); var urls = `http://150.158.7.169:3000/search?keywords=${search.value}` var xhr = new XMLHttpRequest(); xhr.open("GET", urls); xhr.send(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ //console.log(xhr.responseText); var obj = JSON.parse(xhr.responseText); //console.log(obj.result.songs); console.log(obj); var list = obj.result.songs; //for(i = 0; i < obj.result.songs.length; i++){ for(var i = 0; i < list.length; i++){ artiststr = getArtist(list[i]); console.log({"songid":list[i].id, "songname":list[i].name, "artist":artiststr}); if(list[i].fee == 0 || list[i].fee == 8){ reslist.innerHTML += `
  • ${list[i].name} - ${getArtist(list[i])}`+ `
  • `; }else{ reslist.innerHTML += `
  • [不支持播放]${list[i].name} - ${getArtist(list[i])}
  • ` } } }else{ //alert(xhr.statusText); } } document.getElementById("keyword").innerHTML = search.value; } // 获取艺术家 function getArtist(obj){ var artiststr = ""; var artistd = obj.artists; for(var i = 0; i < artistd.length; i++){ if(i != artistd.length - 1){ artiststr += artistd[i].name + "/"; }else{ artiststr += artistd[i].name; } } return artiststr; } // 播放音乐 function playmusic(playid, songname, artist){ document.getElementById("nowplay").innerHTML = `${songname} - ${artist}` url = `https://music.163.com/song/media/outer/url?id=${playid}.mp3`; document.getElementById("Player").setAttribute('src',url); // 选中后自动播放 document.getElementById("Player").play(); // 插入到历史记录 inserthistory(playid, songname, artist); } // 队列 -- Writtrn By Copilot & Web function Queue(){ this.items = []; Queue.prototype.nqueue = (element) => { this.items.push(element); } Queue.prototype.dequeue = () => { return this.items.shift(); } Queue.prototype.front = () => { return this.items[0]; } Queue.prototype.isEmpty = () => { return this.items.length == 0; } Queue.prototype.clear = () => { this.items = []; } Queue.prototype.size = () => { return this.items.length; } Queue.prototype.toString = () => { var str = ""; for(var i = 0; i < this.items.length; i++){ str += this.items[i] + " "; } return str; } } // 创建播放列表 function createlist(){ // 构造队列 list = new Queue(); } // 添加到播放列表 function addlist(songid, songname, artist){ list.nqueue({"songid":songid, "songname":songname, "artist":artist}); console.log(`${songname} - ${artist} 已被加入播放列表`); } // 播放下一首 function playnext(){ if(list.isEmpty()){ console.log("音乐列表已经播放完毕了哦,快加入新的音乐吧~"); alert("音乐列表已经播放完毕了哦,快加入新的音乐吧~"); return; } var next = list.dequeue(); playmusic(next.songid, next.songname, next.artist); } // 检测是否播放完毕 function checkplay(){ // 为了防止播放列表结束以后一直调用playnext产生过多的alart,所以需要检测播放列表是否为空 if(!list.isEmpty()){ if(document.getElementById("Player").ended){ // 播放完毕后自动播放下一首 playnext(); } }else{ //clearInterval(checkplay); } } // 播放列表 function playthelist(){ if(list.isEmpty()){ console.log("音乐列表没有歌曲哦,快加入新的音乐吧~"); alert("音乐列表没有歌曲哦,快加入新的音乐吧~"); return; } var next = list.dequeue(); playmusic(next.songid, next.songname, next.artist); } // 获取播放列表 function getplaylist(){ //var playlist = document.getElementById("playlist"); //playlist.innerHTML = ""; var reslist = document.getElementById("reslist"); reslist.innerHTML = ""; for(var i = 0; i < list.size(); i++){ reslist.innerHTML += `
  • ${list.items[i].songname} - ${list.items[i].artist}
  • `; //console.log(`${list.items[i].songname} - ${list.items[i].artist}`); } document.getElementById('keyword').innerHTML = "当前播放列表"; } /* // -- Writtrn By Copilot function RemoveItemFromList(songid){ for(var i = 0; i < list.size(); i++){ if(list.items[i].songid == songid){ list.items.splice(i, 1); break; } } getplaylist(); } */ // 删除指定序号的音乐 -- Writtrn By Copilot function RemoveItemFromListByID(uid){ list.items.splice(uid, 1); getplaylist(); } // 插入音乐到历史记录 -- Writtrn By Copilot function inserthistory(songid, songname, artist){ // 从本地获取历史记录 var historyList = JSON.parse(localStorage.getItem("historyList")); // 判断是否有历史记录 if(historyList == null){ historyList = []; // 创建一个空数组 } var flag = false; // 标记是否已经存在 // 判断是否已经存在 for(var i = 0; i < historyList.length; i++){ // 如果已经存在,则更新播放时间 if(historyList[i].songid == songid){ flag = true; break; } } // 如果不存在,则插入 if(!flag){ // historyList.push({"songid":songid, "songname":songname, "artist":artist, "playtime":new Date().getTime()}); historyList.push({"songid":songid, "songname":songname, "artist":artist}); } // 存储到本地 localStorage.setItem("historyList", JSON.stringify(historyList)); } // 获取历史记录 -- Writtrn By Copilot function gethistory(){ var historyList = JSON.parse(localStorage.getItem("historyList")); if(historyList == null){ historyList = []; } var reslist = document.getElementById("reslist"); reslist.innerHTML = ""; for(var i = 0; i < historyList.length; i++){ reslist.innerHTML += `
  • ${historyList[i].songname} - ${historyList[i].artist}` + `
  • `; } document.getElementById('keyword').innerHTML = "历史记录"; } // 清空历史记录 -- Writtrn By Copilot function removehistory(){ localStorage.removeItem("historyList"); gethistory(); } // 当点击清空列表的时候进行一次确认,如果确认之后再进行删除操作。 function ClearList(){ var Choose = confirm("确定清空歌单吗?(此操作不可逆!)") if(Choose == true){ removehistory(); console.log("The History List Has been cleared."); return true; }else{ console.log("List Clear Canceled!"); return false; } } // 添加所有歌曲到播放列表 function addAllHistorytoPlayList(){ var historyList = JSON.parse(localStorage.getItem("historyList")); if(historyList == null){ historyList = []; } var reslist = document.getElementById("reslist"); reslist.innerHTML = ""; for(var i = 0; i < historyList.length; i++){ addlist(historyList[i].songid, historyList[i].songname, historyList[i].artist); console.log(`${historyList[i].songname} - ${historyList[i].artist} is add to list.`); } alert("已把历史记录插入到了播放列表"); // Planning to Code... } // 清空播放列表 function ClearthePlaylist(){ if(!list.isEmpty()){ list.clear(); console.log("List Cleared!"); }else{ console.log("List is empty, not need to clear.") } } // 推送到云播放列表 function PushToCloud(){ // Cloud Prepareing... } // 拉取云播放列表 function PullToCloud(){ // Cloud Prepareing... }