华域联盟 hta MyHTML Player release v1.1

MyHTML Player release v1.1

把下面的代码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.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 onload="init();"> <!-- 歌曲列表 --> <div id=musicList ondragstart="musicList_dragStart();"> <div id=musicListTitle>All Music</div> <div id=musicListContent></div> <hr> 分页: <div id=musicListNav></div> <hr> <marquee scrolldelay=50 scrollamount=1> Tips: 把歌曲拖入播放列表 &nbsp;&nbsp;&nbsp;&nbsp; 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();" onkeydown="playList_keyDown();" ondblclick="playList_dblClick();"> </select> </td> </tr> </table> <body> </html>

[Ctrl+A 全选 注:
引入外部Js需再刷新一下页面才能执行]

本文由 华域联盟 原创撰写:华域联盟 » MyHTML Player release v1.1

转载请保留出处和原文链接:https://www.cnhackhy.com/13964.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部