把下面的代码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,歌曲名称存入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<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.attac