My HTML Player - By Hutia sysmenu="yes" windowstate="normal" maximizeButton="no" minimizeButton="yes" applicationName="MyHTMLPlayer" version="1.1" innerBorder="no" caption="yes" showintaskbar="yes" border="thin" />
//****全局变量定义区************ taskState="loadList"; url=""; taskURLs=new Array(); taskNames=new Array(); pageSize=10; pageNo=0; currentTask=pageNo*pageSize; maxTask=currentTask+pageSize; windowWidth=740; windowHeight=400;
//****初始化组件*************** try{ var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ document.write("
加载失败,组件被禁止 "); }
try{ top.moveTo((screen.availWidth-windowWidth)/2,(screen.availHeight-windowHeight)/2); top.resizeTo(windowWidth,windowHeight); }catch(e){}
//****过程函数区*************** //---初始化------- function init(){ MediaPlayer1.AutoRewind=false; MediaPlayer1.AutoStart=true; MediaPlayer1.SendPlayStateChangeEvents=true; MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus); initLoadMusic(); }
//####关于baidu音乐获取的代码###### //---初始化下载----- function initLoadMusic(){ currentTask=pageNo*pageSize-1; maxTask=currentTask+pageSize; musicListContent.innerHTML=""; processBar.style.display=""; loadBaiduMusic(); }
//---开始从baidu下载音乐----- function loadBaiduMusic(){ //如果状态是loadMusic那么从url列表取下载地址 if(taskState=="loadMusic"){ currentTask++; if(currentTask>maxTask||currentTask>taskURLs.length-1){ //下载完成 try{clearTimeout(vbTimer);}catch(e){} processBar.style.display="none"; createNavigate(); return(false); } if(currentTask>taskURLs.length-1){ currentTask--; setTimeout(loadBaiduMusic,1000); return(false); } url=taskURLs[currentTask]; } xmlHttp.open("GET",url,true); xmlHttp.send(); xmlHttp.onreadystatechange=checkXMLHttpState; checkXMLHttpState(); }
//----处理下载----- function checkXMLHttpState(){ if (xmlHttp.readyState==4){ if (xmlHttp.status==200){ if(taskState=="loadList"){ taskState="loadMusic"; //分析下载内容生成歌曲地址列表 analyBaiduList(); currentTask=-1; }else{ //获得mp3的真实地址 analyBaiduMusic(); } } loadBaiduMusic(); } }
//----分析下载内容生成歌曲地址列表---- function analyBaiduList(){ var strHTML=b2s(xmlHttp.responseBody); var iStart=strHTML.search(/ var iEnd=strHTML.toLowerCase().indexOf("<\/script",iStart+5); strHTML=strHTML.substring(iStart,iEnd); var fff=document.createElement("Iframe"); fff.id="tempFrame"; fff.style.display="none"; document.body.insertBefore(fff); theWin=eval("tempFrame"); theWin.document.open(); theWin.document.clear(); theWin.document.write(strHTML); theWin.document.close(); for(var i=0;i if(theWin.document.links[i].href.match(/mp3.baidu.com\/m\?tn=baidump3\&ct=/i)&&theWin.document.links[i].parentNode.firstChild==theWin.document.links[i]){ //将url存入taskURLs,歌曲名称存入taskNames taskURLs[taskURLs.length]=theWin.document.links[i].href.replace(/lm=-1/,"lm=0"); taskNames[taskNames.length]=theWin.document.links[i].innerText; } } fff.outerHTML=""; }
//----获得mp3的真实地址,添加到music list-----
function analyBaiduMusic(){
var strHTML=b2s(xmlHttp.responseBody);
var strTxt=taskNames[currentTask];
//匹配URL的正则
var aryURL=strHTML.match(/ http:\/\/[^ ]+ /gi);
if(!aryURL){return(false);}
var theC=document.createElement("DIV");
theC.className="item";
musicListContent.insertBefore(theC);
//获取10个地址以免链接失效
for(var i=0;i<10&&i
//每个item的容器 var theD=document.createElement("DIV"); theD.onmouseover=musicList_mouseover; theD.onmouseout=musicList_mouseout; //link元素 var theLink=document.createElement("A"); var strURL=aryURL[i].substring(2,aryURL[i].length-2); theLink.href=strURL; theLink.title=strURL; theLink.innerText=(currentTask+1)+"."+strTxt; if(i>0){theLink.innerText+="."+(i+1);} theLink.onclick=musicList_item_click; theD.insertBefore(theLink); //添加到列表按钮 theButton=document.createElement("Span"); theButton.className="add2ListBtn"; theButton.innerText="1"; theButton.title="添加到列表"; theButton.onclick=musicList_add2ListBtn_click; theButton.onmouseover=musicList_item_mouseover; theButton.onmouseout=musicList_item_mouseout; theD.insertBefore(theButton); //上卷按钮 theButton=document.createElement("Span"); theButton.className="add2ListBtn"; theButton.innerText="3"; theButton.title="上卷"; theButton.onclick=musicList_scrollUpBtn_click; theButton.onmouseover=musicList_item_mouseover; theButton.onmouseout=musicList_item_mouseout; theD.insertBefore(theButton); //下卷按钮 theButton=document.createElement("Span"); theButton.className="add2ListBtn"; theButton.innerText="4"; theButton.title="下卷"; theButton.onclick=musicList_scrollDownBtn_click; theButton.onmouseover=musicList_item_mouseover; theButton.onmouseout=musicList_item_mouseout; theD.insertBefore(theButton); //打开新窗口按钮 theButton=document.createElement("Span"); theButton.className="add2ListBtn"; theButton.innerText="2"; theButton.title="打开新窗口"; theButton.onclick=musicList_newWinBtn_click; theButton.onmouseover=musicList_item_mouseover; theButton.onmouseout=musicList_item_mouseout; theD.insertBefore(theButton); theC.insertBefore(theD); } }
//####关于播放器播放音乐的代码######
//----检查播放器状态-------
function checkPlayStatus(oldState,newState){
try{
if(MediaPlayer1.PlayState==0){
MediaPlayer1.detachEvent("PlayStateChange",checkPlayStatus);
MediaPlayer1.stop();
if(playList.options.selectedIndex
playList.options[playList.options.selectedIndex+1].selected=true; }else{ playList.options[0].selected=true; } MediaPlayer1.fileName=playList.value; MediaPlayer1.play(); setTimeout('MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);',5000); } }catch(e){} }
//**********Event Function Area*************** //----------Play List Event Start------------- function playList_dragOver(){ event.returnValue=false; }
function playList_dragEnter(){ event.returnValue=false; event.dataTransfer.dropEffect='link'; }
function playList_drop(){ strTxt=unescape(event.dataTransfer.getData('Text').split(":")[0]).replace(/\[\+\]/,"");; strURL=unescape(event.dataTransfer.getData('Text').split(":")[1]).replace(/\[\+\]/,"");; playList.options[playList.options.length]=new Option(strTxt,strURL); }
function playList_keyDown(){ if(event.keyCode==46){ try{ playList.options[playList.options.selectedIndex].outerHTML=""; }catch(e){} return(false); } if(event.keyCode==13){ playList_dblClick(); return(false); } }
function playList_dblClick(){ MediaPlayer1.detachEvent("PlayStateChange",checkPlayStatus); MediaPlayer1.fileName=playList.value; MediaPlayer1.play(); setTimeout('MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);',1000); }
//----------Music List Event Start------------- function musicList_dragStart(){ if(event.srcElement.tagName=='A'){ event.dataTransfer.setData('Text',escape(event.srcElement.innerText)+":"+escape(event.srcElement.href)); }else{ return(false); } }
function musicList_mouseover(){ this.style.backgroundColor="#D5EFD5"; }
function musicList_mouseout(){ this.style.backgroundColor=""; }
function musicList_item_mouseover(){ this.style.color="gold"; }
function musicList_item_mouseout(){ this.style.color=""; }
function musicList_item_click(){ strTxt=event.srcElement.innerText; strURL=event.srcElement.href; playList.innerHTML=""; playList.options[0]=new Option(strTxt,strURL); playList.options[0].selected=true; event.returnValue=false; playList_dblClick(); return(false); }
function musicList_add2ListBtn_click(){ strTxt=event.srcElement.parentNode.firstChild.innerText.replace(/\[\+\]/,""); strURL=event.srcElement.parentNode.firstChild.href; playList.options[playList.options.length]=new Option(strTxt,strURL); return(false); }
function musicList_scrollUpBtn_click(){ this.parentNode.parentNode.scrollTop-=20; }
function musicList_scrollDownBtn_click(){ this.parentNode.parentNode.scrollTop+=20; }
function musicList_newWinBtn_click(){ open(this.parentNode.firstChild.href); }
function musicList_nav_click(){ pageNo=this.pageID; musicListNav.disabled=true; this.style.color="#FF0000"; for(var i=0;i musicListNav.all.tags("span")[i].onclick=null; } initLoadMusic(); } //**********Private Functions Lib*************** function b2s(b){ var adodbStream=new ActiveXObject("ADODB.Stream"); adodbStream.Type=1;//1=adTypeBinary adodbStream.Open(); adodbStream.write(b); adodbStream.position=0; adodbStream.Type=2; adodbStream.charset="gb2312"; //adodbStream.charset="_autodetect_all"; var re=adodbStream.readText(); adodbStream=null; return(re); }
function createNavigate(){ musicListNav.innerHTML=""; musicListNav.disabled=false; var theMax=taskURLs.length; var theC=document.createElement("span"); musicListNav.insertBefore(theC); theMin=pageNo-4>0?pageNo-4:0; thePageCount=parseInt(theMax/pageSize)+(theMax%pageSize==0?0:1); theMax=pageNo+5 theButton=document.createElement("span"); theButton.className="add2ListBtn"; theButton.innerText="7"; theButton.pageID=0; theButton.onmouseover=musicList_item_mouseover; theButton.onmouseout=musicList_item_mouseout; theButton.onclick=musicList_nav_click; theC.insertBefore(theButton); for(var j=theMin;j theButton=document.createElement("span"); theButton.className="add2ListBtn2"; theButton.innerText=j+1; theButton.pageID=j; if(j!=pageNo){ theButton.onmouseover=musicList_item_mouseover; theButton.onmouseout=musicList_item_mouseout; theButton.onclick=musicList_nav_click; }else{ theButton.style.color="Blue"; } theC.insertBefore(theButton); } theButton=document.createElement("span"); theButton.className="add2ListBtn"; theButton.innerText="8"; theButton.pageID=thePageCount-1; theButton.onmouseover=musicList_item_mouseover; theButton.onmouseout=musicList_item_mouseout; theButton.onclick=musicList_nav_click; theC.insertBefore(theButton); }
All Music
分页:
Tips: 把歌曲拖入播放列表 Tips: 无法播放时点击左右箭头更换音乐地址
Play List:
ondrop="playList_drop();" onkeydown="playList_keyDown();" ondblclick="playList_dblClick();">