快速业务通道

用flash实现基于搜索引擎的搜索 - 本地直接从百度获取LRC歌词

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-08

由于安全性的原因,请下载到本地使用:

地址(目标另存为) :
www.flashk.org/mp3player/tools/lrcSearch.swf

代码:
System.useCodepage = true; myLoadVars = new LoadVars(); function lrcSearch(keyword) { musicName = keyWord.slice(0, keyWord.indexOf(" ")); myLoadVars.load("http://www.baidu.com/s?wd="+"[ti:"+keyWord); myLoadVars.onData = getLink; pageIndex = 1; } function getLink(src) { nextPageLink = "http://www.baidu.com/"+src.slice(src.lastIndexOf("href=", src.indexOf("下一页"))+5, src.lastIndexOf("><", src.indexOf("下一页"))); linkData = src.split("快照"); for (var i = 0; i linkData[i] = linkData[i].slice(0, linkData[i].lastIndexOf(" linkData[i] = linkData[i].slice(linkData[i].lastIndexOf("href=")+6); linkData[i] = linkData[i].slice(0, linkData[i].indexOf("\"")); } linkIndex = 1; openLRCPage(linkData[0]); } function openLRCPage(url) { myLoadVars.load(url); myLoadVars.onData = getLRC; } function getLRC(src) { HTMLData = src.slice(src.lastIndexOf("[ti:"+musicName)); findEndTag(); htmlData = htmlData.split(" ").join("\n"); htmlData = htmlData.split(" ").join("\n"); lrcData = htmlData.split(String.fromCharCode(10)).join(""); tx_lrc.text = lrcData; } function findEndTag() { var lastIndex = htmlData.lastIndexOf("]"); if (htmlData.slice(lastIndex-3, lastIndex-2) == "." && htmlData.slice(lastIndex-6, lastIndex-5) == ":") { var tmpBR = htmlData.slice(lastIndex); htmlData = htmlData.slice(0, lastIndex+tmpBR.indexOf(" htmlData = htmlData.slice(0, htmlData.indexOf(" } else { htmlData = htmlData.slice(0, lastIndex); if (loopStart == undefined) { loopCount = 1; } else { delete loopStart; } if (loopCount<254) { loopStart = true; loopCount++; findEndTag(); } } } function error() { if (nextPageLink != undefined) { if (linkIndex>linkData.length-2) { myLoadVars = new LoadVars(); myLoadVars.load(nextPageLink); myLoadVars.onData = getLink; pageIndex++; linkIndex = 1; delete nextPageLink; } else { linkIndex++; openLRCPage(linkData[linkIndex-1]); } } }


我们先来看第一句:
System.useCodepage = true;
这句主要的作用是让最后的结果不会变成乱码,默认情况下Flash是按照UTF格式来解析所有加载的数据的,这在加载中文数据的时候会有些问题,只有数据在用UTF-8编码格式的时候才能被正确识别。因为很多页面(基本上现在90%的页面)并不是用UTF-8来保存的,所以要加上这句。这样才不会乱码。更详细的说明请参见flash帮助关于System.useCodepage的详细说明。反正在大部份情况下,如果你遇到乱码的问题都可以用这个来解决,使用 System.useCodepage = true 或者 System.useCodepage = false 来切换。

第二句:
myLoadVars = new LoadVars();
这是用来装载所有加载的数据的,等会加载的网页的数据(html源文件)都装在这里。基本上,要进行数据传输(例如和服务器程序交换变量数据或者从服务器上加载文件)的进候都要用到 LoadVars()、XML的数据传输/加载方法或者XMLSocket 。LoadVars() 是最基础的方法。

function lrcSearch(keyWord) {
musicName = keyWord.slice(0, keyWord.indexOf(" "));
myLoadVars.load("http://www.baidu.com/s?wd="+"[ti:"+keyWord);
myLoadVars.onData = getLink;
pageIndex = 1;
}

这里定义了

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号