把下面的代码copy到本地,另存为hta文件使用
特点:自动获取baidu歌曲top500并link
使用ajax技术,自动分页
注意:代码中使用了ADODB.Stream对象,可能被杀毒软件判断为恶意。
运行代码框
<html><head><title>My HTML Player - By Hutia</title><hta:application id="app1" singleinstance="yes" contextmenu="yes" sysmenu="yes" windowstate="normal" maximizeButton="no" minimizeButton="yes" applicationName="MyHTMLPlayer" version="1.1" innerBorder="no" caption="yes" showintaskbar="yes" border="thin" /><meta http-equiv="content-type" content="text/html; charset="gb2312"><style>body {overflow:auto;font-size:12px;cursor:default;padding:3px;margin:0px;border-width:0px;}#f1 {display:none;}#table01 {font-size:12px;background-Color:black;color:white;text-align:center;float:left;height:300px;}#table01 td{vertical-align:top;}#MediaPlayer1 {width:300px;height:300px;}#playListTitle {background-Color:#001122;color:white;font-size:12px;font-weight:bold;width:100%;height:16px;padding:2px;}#playList {width:150px;height:280;margin:0px;font-size:12px;background-Color:black;color:white;}#musicList {width:260px;border:buttonface 4px groove;height:200px;float:right;}#musicListTitle {font-size:13px;width:100%;height:20px;background-Color:#C5FFC5;padding:3px;font-weight:bold;}#musicListContent {height:200px;}#musicList .item {width:100%;height:20px;line-height:12px;padding:0px;margin:0px;overflow-y:hidden;}#musicList .item a {color:#773;text-decoration:none;width:180px;height:20px;line-height:12px;padding-top:5px;padding-left:10px;margin:0px;position:relative;overflow:hidden;text-overflow:ellipsis;}#musicListNav {height:18px;}#processBar {position:absolute;width:99%;height:30px;border:buttonface 2px inset;z-Index:99;background-Color:#FFF;bottom:5px;left:5px;padding:5px;}.add2ListBtn {width:18px;line-height:14px;text-align:center;cursor:hand;font-size:14px;font-family:Webdings;}.add2ListBtn2 {width:18px;line-height:14px;text-align:center;cursor:hand;font-size:14px;}</style><script>//****全局变量定义区************taskState="loadList";url="http://list.mp3.baidu.com/topso/mp3topsong.html";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("<h3>加载失败,组件被禁止</h3>");}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(/<body/i);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<theWin.document.links.length;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,歌曲名称存入taskNamestaskURLs[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<aryURL.length;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.length-1){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++){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<thePageCount?pageNo+5:thePageCount;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<theMax;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);}</script><body ><!-- 歌曲列表 --><div id=musicList ondragstart="musicList_dragStart();"><div id=musicListTitle>All Music</div><div id=musicListContent></div><hr>分页:<br><div id=musicListNav></div><hr><marquee scrolldelay=50 scrollamount=1>Tips: 把歌曲拖入播放列表 Tips: 无法播放时点击左右箭头更换音乐地址</marquee></div><!-- 状态栏 --><div id=processBar style="display:none;">Processing...</div><!-- 播放器 --><table id=table01><tr><td><object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject"><param name="AudioStream" value="-1"><param name="AutoSize" value="-1"><!--是否自动调整播放大小--><param name="AutoStart" value="0"><!--是否自动播放--><param name="AnimationAtStart" value="-1"><param name="AllowScan" value="-1"><param name="AllowChangeDisplaySize" value="-1"><param name="AutoRewind" value="0"><param name="Balance" value="0"><!--左右声道平衡,最左-9640,最右9640--><param name="BaseURL" value><param name="BufferingTime" value="15"><!--缓冲时间--><param name="CaptioningID" value><param name="ClickToPlay" value="-1"><param name="CursorType" value="0"><param name="CurrentPosition" value="0"><!--当前播放进度 -1 表示不变,0表示开头 单位是秒,比如10表示从第10秒处开始播放,值必须是-1.0或大于等于0--><param name="CurrentMarker" value="0"><param name="DefaultFrame" value><param name="DisplayBackColor" value="0"><param name="DisplayForeColor" value="16777215"><param name="DisplayMode" value="0"><param name="DisplaySize" value="0"><!--视频1-50%, 0-100%, 2-200%,3-全屏 其它的值作0处理,小数则采用四舍五入然后按前的处理--><param name="Enabled" value="-1"><param name="EnableContextMenu" value="-1"><!-是否用右键弹出菜单控制--><param name="EnablePositionControls" value="-1"><param name="EnableFullScreenControls" value="-1"><param name="EnableTracker" value="-1"><!--是否允许拉动播放进度条到任意地方播放--><param name="Filename" value="" valuetype="ref"><param name="InvokeURLs" value="-1"><param name="Language" value="-1"><param name="Mute" value="0"><!--是否静音--><param name="PlayCount" value="10"><!--重复播放次数,0为始终重复--><param name="PreviewMode" value="-1"><param name="Rate" value="1"><!--播放速度1.0-2.0倍的速度播放--><param name="SAMILang" value><param name="SAMIStyle" value><param name="SAMIFileName" value><!--选择同时播放(伴音)的歌曲--><param name="SelectionStart" value="-1"><param name="SelectionEnd" value="-1"><param name="SendOpenStateChangeEvents" value="-1"><param name="SendWarningEvents" value="-1"><param name="SendErrorEvents" value="-1"><param name="SendKeyboardEvents" value="0"><param name="SendMouseClickEvents" value="0"><param name="SendMouseMoveEvents" value="0"><param name="SendPlayStateChangeEvents" value="-1"><param name="ShowCaptioning" value="0"><!--是否显示字幕,为一块黑色,下面会有一大块黑色,一般不显示--><param name="ShowControls" value="-1"><!--是否显示控制,比如播放,停止,暂停--><param name="ShowAudioControls" value="-1"><!--是否显示音量控制--><param name="ShowDisplay" value="0"><!--显示节目信息,比如版权等--><param name="ShowGotoBar" value="0"><!--一条框,在下面,有往下箭头--><param name="ShowPositionControls" value="-1"><!--是否显示往前往后及列表,如果显示一般也都是灰色不可控制--><param name="ShowStatusBar" value="-1"><!--当前播放信息,显示是否正在播放,及总播放时间和当前播放到的时间--><param name="ShowTracker" value="-1"><!--是否显示当前播放跟踪条,即当前的播放进度条--><param name="TransparentAtStart" value="-1"><param name="VideoBorderWidth" value="0"><!--显示部的宽部,如果小于视频宽,则最小为视频宽,或者加大到指定值,并自动加大高度.此改变只改变四周的黑框大小,不改变视频大小--><param name="VideoBorderColor" value="0"><!--显示黑色框的颜色, 为RGB值,比如ffff00为黄色--><param name="VideoBorder3D" value="0"><param name="Volume" value="0"><!--音量大小,负值表示是当前音量的减值,值自动会取绝对值,最大为0,最小为-9640,最大0--><param name="WindowlessVideo" value="0"><!--如果是0可以允许全屏,否则只能在窗口中查看--></object></td><td><div id=playListTitle>Play List:</div><select id=playList size=2 ondragover="playList_dragOver();" ondragenter="playList_dragEnter();" ondrop="playList_drop();" ondblclick="playList_dblClick();"></select></td></tr></table><body></html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]