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,歌曲名称存入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 全部选择 提示:你可先修改部分代码,再按运行]

时间: 2024-10-23 03:03:53

MyHTML Player release v1.1的相关文章

MyHTML Player release v1.1_hta

把下面的代码copy到本地,另存为hta文件使用 特点:自动获取baidu歌曲top500并link 使用ajax技术,自动分页 注意:代码中使用了ADODB.Stream对象,可能被杀毒软件判断为恶意. My HTML Player - By Hutia All Music 分页: Tips: 把歌曲拖入播放列表      Tips: 无法播放时点击左右箭头更换音乐地址 Processing... Play List:

wince 利用MSXML 3.0 读写xml文件

Simple XML Parsing on WinCE 4.2 Using C++ and MSXML 3.0 This article will show you how to parse XML files on WinCE using MSXML 3.0, a XML parser from Microsoft. Okay, there are many articles around showing you how to parse XML, but not that many for

XML学习起步

xml 学习 XML 的最佳途经是从简单的开发入手,大胆实践,循序渐进.XML 的妙处只有在开发过程中才能深入体会,离开了开发是学不好 XML 的.因此学习 XML 首先应该建立一个 XML 的开发环境.我给大家介绍一下怎样建立一个基于 Java 的 XML 开发环境.因为我现在没办法用到 Linux,所以所有的例子都是在 Windows 上做的.但是这里介绍的所有的软件在 Linux 和 Windows 上都是可以用的,用法也大同小异.而且除了 Sun 的 JRE 以外都是 open sour

如何建立一个 XML 的开发环境(2)

xml <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  reloadable="true" > </Context> 其中的 path-to-your-work-directory 是你的开发目录.将 Tomcat 的 webapps/xsl-examples 目录下的内容原封不动的拷到你的开发目录,以这个程序为参考开始写你自己的

Struts1.1 介绍

前一段时间好象有人问关于Struts的事情,本人留意了一下.请有兴趣的同志不防研究研究.(1)1. 介绍 1.1 Model-View-Controller (MVC) 设计模式 FIXME - 需要一个对该模式一般性的介绍.(译注:可以参考机械工业出版社的<设计模式>.) 1.2 将MVC概念映射到Struts组件中 Struts 的体系结构实现了Model-View-Controller设计模式的概念,它将这些概念映射到web应用程序的组件和概念中. 这一体系结构中每个主要的组件都将在下面

JSP页面中的自定义标签

js|页面 JSP页面中的自定义标签 JSP页面中的自定义标签 Stephanie Bodoff 用于调用Javaean组件中的操作和执行请求分派的标准JSP标签简化了JSP页面的开发和维护.JSP技术还提供了在自定义标签中封装其他动态功能的机制,这种自定标签是JSP语言的扩展.自定义标签通常是以标签库的形式出现的,它定义了一组相关的自定义标签,并包含实现这些标签的对象. 可以由自定义标签执行的任务包括对隐式对象的操作.处理表单.访问数据库和其他企业级服务,如电子邮件和目录.以及执行流程控制.J

jakarta-ant的使用(java编译工具)

编译 一:介绍: ant 是jakarta的一个编译工具,如果你了解linux/Unix下的makefile你就很容易 理解ant的用途了.ant最适合你使用UltraEdit(EditPlus)写java程序,然后你使用ant去编译,同时javadoc ,生成一个jar,war,实现文件的copy都可以在build.xml通过不同的tager去实现,还是很方便的一个东东强烈推荐是使用.二:下载 你可以从下面的地址下载到ant,目前版本:1.41 http://jakarta.apache.or

jakarta-log4j的使用(java调试工具)

一:介绍log4j是jakarta的一个项目主要是为了调试使用的,为了不让是在程序中写很多System.out.println();我个人觉得是一个不错的工具,程序调试好以后你可以关掉log4j.二:下载你可以从下面的地址下载到ant,目前版本:1.13 http://jakarta.apache.org/builds/jakarta-log4j/release/v1.1.3/ 三:安装 log4j不需要安装,你只需要把log4j.jar,log4j-core.jar放在classpath中你就

SOAP净化有线协议(三):用脚本语言编写服务

脚本 你是一个渴望永远站在技术最前沿的Java开发者吗?软件产业风云变幻,你渴望把握Web的未来,更重要的是,如何把自己数年的Java经验发挥到极致.要寻找这些问题的答案,你不必走得太远,答案就在于SOAP. SOAP(简单对象访问协议)是一种利用XML编码数据的有线协议,它为Java的平台无关性.可移植性带来了更高层次的协同操作能力.在这个关于SOAP的系列文章的第二篇中,我介绍了Apache SOAP.作为SOAP规范的实现之一,Apache SOAP简化了SOAP应用的构造.我们曾经用Ap