利用flash的URLRequest向百度发送关健字,再利用正则表达式提取mp3结果列表.再对结果列表再次请求,获取mp3的真实地址.
下面是具体的类
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.net.URLVariables;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.xml.*;
import flash.events.IOErrorEvent;
public class Mp3Search extends MovieClip {
private var xmlTextField:TextField = new TextField();
//dansion.com dansion@163.com,;
private var loader:URLLoader;
private var sub:Number;
public var Mp3List:Array;
public function Mp3Search() {
Mp3List=new Array();
Mp3_search.trackAsMenu=true;
Mp3_search.addEventListener(MouseEvent.CLICK,search);
}
private function search(event:Event):void {
var variables:URLVariables=new URLVariables("f=ms&tn=baidump3&ct=134217728&lf=&rn=&lm=0");
variables.word=input.text;
var request:URLRequest = new URLRequest();
request.url="http://mp3.baidu.com/m";
request.data=variables;
loader = new URLLoader();
try {
loader.load(request);
} catch (error:SecurityError) {
trace("A SecurityError has occurred.");
}
loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
loader.addEventListener(ProgressEvent.PROGRESS,loaderProgress);
trace("btn is donw: "+input.text);
}
private function loaderCompleteHandler(event:Event):void {
progress_txt.text="加载完成";
//var mp3Exp:RegExp=/http://([w-]+.)+[w-]+([w- ./?$,[]%&;:,+=u4e00-u9fa5]*)?216/g;
//var mp3Exp:RegExp=/http://[^box][0-9]([w-]+.)+[w-]+([w- ./?$,[]%&;:,+=u4e00-u9fa5]*)?216/g;
var mp3Exp:RegExp=/http://220.181.38.82([w- ./?$,[]%&;:,+=u4e00-u9fa5]*)?216/g;
var mp3_array:Array=new Array();
mp3_array=loader.data.match(mp3Exp);
//trace(loader.data.match(mp3Exp));
/*for (var i=0; i<mp3_array.length; i++) {
//trace("输出: "+mp3_array[i]+" 结束");
var chineseExp:RegExp=/[u4e00-u9fa5]+/;
//trace(mp3_array[i].match(chineseExp));
Mp3Name.push(mp3_array[i].match(chineseExp));
}*/
trace("——————–");
formatURL(mp3_array);
}
private function formatURL(array:Array) {
for (var i=0; i<array.length; i++) {
SubLoad(array[i],i);
//sub=i;
}
}
private function SubLoad(url:String,num:Number) {
var chineseExp:RegExp=/[u4e00-u9fa5]+/;
//trace(mp3_array[i].match(chineseExp));
//trace(url);
//var mp3name:String=new String();
var mp3name:String=String(url.match(chineseExp));
var subrequest:URLRequest = new URLRequest();
subrequest.url=url;
60; var sub_loader:URLLoader;
sub_loader = new URLLoader();
try {
sub_loader.load(subrequest);
} catch (error:SecurityError) {
trace("A SecurityError has occurred.");
}
sub_loader.addEventListener(Event.COMPLETE,SubLoaderComplete);
//sub_loader.addEventListener(ProgressEvent.PROGRESS,loaderProgress);
function SubLoaderComplete() {
progress_txt.text="开始分析第"+mp3name+"搜索结果";
var SubMp3Exp:RegExp=/http://([w-]+.)+[w-]+([w- ./?%&=u4e00-u9fa5]*)?.mp3/g;
trace(mp3name+" :: "+sub_loader.data.match(SubMp3Exp)[0]);
}
}
private function loaderProgress(event:ProgressEvent):void {
progress_txt.text=String(event.bytesLoaded)+"/"+String(event.bytesTotal);
}
private function errorHandler(event:IOErrorEvent):void {
trace("IOErrorEvent 出错");
}
}
}
其中主要是两个正则表达式写法.
新建一个MC链接Mp3Search类,MC里有一个文本输入框(名:input),一个表示按扭的MC(Mp3_search),加载提示动态文本框(progress_txt).
转载请注明出处!
点这里下载