无损音乐下载器 Delphi版
无损音乐下载器 Delphi版
先上图
完整版源码下载地址:
http://download.csdn.net/detail/guoxuepeng123/9376720
searchMusic.pas 搜索界面
unit searchMusic;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection,IdTCPClient, IdHTTP, StdCtrls,msxml,ExtCtrls,IdURI,Httpapp,UrlMon,ShellAPI,sLabel, xmldom, XMLIntf, msxmldom, XMLDoc,StrUtils;typeTsearchForm = class(TForm)edt1: TEdit;lbl2: TLabel;lv1: TListView;slb1: TsLabel;xmldcmnt1: TXMLDocument;btn1: TButton;btn2: TButton;btn3: TButton;btn4: TButton;btn5: TButton;btn6: TButton;btn7: TButton;btn8: TButton;slb2: TsLabel;lbl1: TLabel;procedure lv1DblClick(Sender: TObject);procedure btn1Click(Sender: TObject);procedure FormClose(Sender: TObject; var Action: TCloseAction);procedure btn2Click(Sender: TObject);procedure btn3Click(Sender: TObject);procedure phbMusicList();procedure btn4Click(Sender: TObject);procedure btn5Click(Sender: TObject);procedure btn6Click(Sender: TObject);procedure btn7Click(Sender: TObject);procedure btn8Click(Sender: TObject);private{ Private declarations }public{ Public declarations } HttpReq: IXMLHttpRequest;end;varsearchForm: TsearchForm;phbType:string;implementationuses superobject,download,Constant;
{$R *.dfm}//文件下载
function DownloadFile(Source, Dest: string): Boolean;
begin try Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0; except Result := False; end; end; procedure TsearchForm.lv1DblClick(Sender: TObject);
varsongid:string;
begintrysongid:=lv1.Items.Item[lv1.Selected.Index].Caption;Constant.download_songid:=songid;if dlForm<>nil thendlForm.hide;application.CreateForm(TdlForm, dlForm);dlForm.Show;exceptShowMessage('请选择要下载的歌曲!');end;
end;
function ReversePos(SubStr, S: String): Integer;
vari : Integer;
begini := Pos(SubStr, ReverseString(S));if i > 0 then i := Length(S) - i - Length(SubStr) + 2;Result := i;
end;procedure TsearchForm.btn1Click(Sender: TObject);
vari,count,EndPos,len: Integer;url,content,musicName,p,m,path,param: string;WItem:TListItem;jo: ISuperObject;songList:TSuperArray;
beginif edt1.Text<>'' thenbeginlv1.Clear;slb2.Caption:='';musicName:=HTTPEncode(UTF8Encode(edt1.Text));HttpReq:=CoXMLHTTPRequest.Create;url := 'http://sug.music.baidu.com/info/suggestion?word='+musicName+'&format=json&version=2&from=0';HttpReq.open('get', Url, False, EmptyParam, EmptyParam);HttpReq.send(EmptyParam);//开始搜索content := HttpReq.responseText;jo := SO(content);songList := jo['data'].o['song'].AsArray; if songList.Length=0 thenbeginShowMessage('未找到歌曲【'+edt1.Text+'】');lv1.Clear;end;if songList.Length>0 thenbeginfor i := 0 to songList.Length-1 dobegin WItem:=lv1.Items.Add;WItem.Caption:=songList[i].O['songid'].AsString;WItem.SubItems.Add(songList[i].O['songname'].AsString);WItem.SubItems.Add(songList[i].O['artistname'].AsString);end;end;endelsebeginShowMessage('请输入歌曲名称!');end;
end;procedure TsearchForm.FormClose(Sender: TObject; var Action: TCloseAction);
beginif dlForm<>nil thendlForm.Hide;
end;procedure TsearchForm.phbMusicList();vari,count,EndPos,len: Integer;url,content,musicName,p,m,path,param: string;WItem:TListItem;jo: ISuperObject;songList:TSuperArray;
beginlv1.Clear;musicName:=HTTPEncode(UTF8Encode(edt1.Text));HttpReq:=CoXMLHTTPRequest.Create;url := 'http://tingapi.ting.baidu.com/v1/restserver/ting?size=100&type='+phbType+'&format=json&method=baidu.ting.billboard.billList';HttpReq.open('get', Url, False, EmptyParam, EmptyParam);HttpReq.send(EmptyParam);//开始搜索content := HttpReq.responseText;jo := SO(content);slb2.Caption:= '更新时间:'+jo['billboard'].o['update_date'].AsString;songList := jo['song_list'].AsArray;if songList.Length=0 thenbeginShowMessage('未找到歌曲【'+edt1.Text+'】');lv1.Clear;end;if songList.Length>0 thenbeginfor i := 0 to songList.Length-1 dobeginWItem:=lv1.Items.Add;WItem.Caption:=songList[i].O['song_id'].AsString;WItem.SubItems.Add(songList[i].O['title'].AsString);WItem.SubItems.Add(songList[i].O['artist_name'].AsString);end;end;
end;
procedure TsearchForm.btn2Click(Sender: TObject);
beginphbType:='1';searchForm.phbMusicList();
end;procedure TsearchForm.btn3Click(Sender: TObject);
beginphbType:='2';searchForm.phbMusicList();
end;
procedure TsearchForm.btn4Click(Sender: TObject);
beginphbType:='21';searchForm.phbMusicList();
end;procedure TsearchForm.btn5Click(Sender: TObject);
beginphbType:='22';searchForm.phbMusicList();
end;procedure TsearchForm.btn6Click(Sender: TObject);
beginphbType:='23';searchForm.phbMusicList();
end;procedure TsearchForm.btn7Click(Sender: TObject);
beginphbType:='24';searchForm.phbMusicList();
end;procedure TsearchForm.btn8Click(Sender: TObject);
beginphbType:='25';searchForm.phbMusicList();
end;end.
download.pas 下载界面
unit download;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection,IdTCPClient, IdHTTP, StdCtrls,msxml,ExtCtrls,IdURI,Httpapp,UrlMon,ShellAPI,sLabel, xmldom, XMLIntf, msxmldom, XMLDoc,StrUtils, sEdit, sGroupBox,sButton, acImage,Jpeg;typeTdlForm = class(TForm)slb1: TsLabel;slb3: TsLabel;grp1: TsGroupBox;edt1: TsEdit;btn1: TsButton;grp2: TsGroupBox;edt2: TsEdit;btn2: TsButton;grp3: TsGroupBox;btn3: TsButton;btn4: TsButton;btn5: TsButton;img1: TsImage;idhtp1: TIdHTTP;slb2: TsLabel;btn6: TsButton;procedure FormCreate(Sender: TObject);procedure btn1Click(Sender: TObject);procedure btn2Click(Sender: TObject);procedure getMusicInfo();procedure btn3Click(Sender: TObject);procedure btn4Click(Sender: TObject);procedure btn5Click(Sender: TObject);procedure btn6Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;vardlForm: TdlForm;musicPath,lyPath:string;HttpReq: IXMLHttpRequest;rate:string;musicType:string;
implementationuses Constant,superobject;
{$R *.dfm}//文件下载
function DownloadFile(Source, Dest: string): Boolean;
begin tryResult := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0; except Result := False;end; end;
function change_length(songlength: integer): string;//将单位为秒的时间长度转化
var //为00:00:00的时间格式的字符串
s:string; //定义S为字符串变量
hours,minutes,seconds:integer;//定义hours,minutes,seconds为整形变量
beginsonglength:=songlength div 1000;seconds:= songlength mod 60;songlength:=songlength div 60;minutes:=songlength mod 60;hours:=songlength div 60;if strlen(pchar(inttostr(hours)))=1 then //若小时数为个位数s:='0'+inttostr(hours) //则在前面补0,即0X形式elses:=inttostr(hours); //不然,为xx形式s:=s+':';if strlen(pchar(inttostr(minutes)))=1 thens:=s+'0'+inttostr(minutes)elses:=s+inttostr(minutes);s:=s+':';if strlen(pchar(inttostr(seconds)))=1 thens:=s+'0'+inttostr(seconds)elses:=s+inttostr(seconds);change_length:=s;
end;
procedure TdlForm.getMusicInfo();
vari,count,EndPos,size: Integer;url,content,sizeStr,p,m,path,param,songid,downloadurl,timeStr: string;jo: ISuperObject;songList:TSuperArray;imagestream:TMemoryStream;jpg:TJpegImage;
beginsongid:=Constant.download_songid; HttpReq:=CoXMLHTTPRequest.Create;url := 'http://music.baidu.com/data/music/fmlink?songIds='+songid+'&rate='+rate+'&format=json&type='+musicType;HttpReq.open('get', Url, False, EmptyParam, EmptyParam);HttpReq.send(EmptyParam);//开始搜索content := HttpReq.responseText;jo := SO(content);if jo['errorCode'].AsString='22000' thenbeginsongList := jo['data'].o['songList'].AsArray;if songList.Length=0 thenbeginShowMessage('未找下载链接!');end;if songList.Length>0 thenbeginfor i := 0 to songList.Length-1 dobeginslb1.Caption:=songList[i].O['songName'].AsString;if songList[i].O['size'].AsString<>'' thenbegin size:= strtoint(songList[i].O['size'].AsString);sizeStr:=formatfloat('0.00',size*100/(1024*1024)/100);endelsebeginsizeStr:='0';end;timeStr:='0';if songList[i].O['time'].AsString<>'' thenbegintimeStr:=change_length(strtoint(songList[i].O['time'].AsString)*1000);end;slb2.Caption:=' 时长:'+timeStr;slb3.Caption:=songList[i].O['artistName'].AsString+' '+sizeStr+'MB / '+songList[i].O['format'].AsString+' / '+songList[i].O['rate'].AsString+'kbps';m:=songList[i].O['songName'].AsString+'-'+songList[i].O['artistName'].AsString+'.'+songList[i].O['format'].AsString;path:=songList[i].O['songName'].AsString+'-'+songList[i].O['artistName'].AsString+'.lrc';musicPath:=ExtractFilePath(Application.Exename)+'Songs\'+m;lyPath:=ExtractFilePath(Application.Exename)+'Lyrics\'+path;edt1.Text:= songList[i].O['songLink'].AsString;edt2.Text:= 'http://music.baidu.com'+songList[i].O['lrcLink'].AsString;btn1.Enabled:=true;btn2.Enabled:=true;if songList[i].O['songLink'].AsString='' thenbeginedt1.Text:= '未找到歌曲下载链接,请尝试其他音质。';btn1.Enabled:=false;end;if songList[i].O['lrcLink'].AsString='' thenbeginedt2.Text:= '未找到歌词下载链接,请尝试其他音质。';btn2.Enabled:=false;end; //显示歌曲图片if songList[i].O['songPicBig'].AsString<>'' thenbeginimagestream := TMemoryStream.Create();jpg:=TJpegImage.Create;idhtp1.Get(songList[i].O['songPicBig'].AsString,imagestream);imagestream.Position:=0;jpg.LoadFromStream(imagestream);img1.Picture.Assign(jpg);end;end;end;endelsebeginShowMessage('下载失败!');end;
end;
procedure TdlForm.FormCreate(Sender: TObject);
beginrate:='320';musicType:='flac';dlForm.getMusicInfo();
end;procedure TdlForm.btn1Click(Sender: TObject);
beginShellExecute(Handle, 'open', 'IExplore.exe', PAnsiChar(edt1.Text), nil, SW_SHOWNORMAL);
end;procedure TdlForm.btn2Click(Sender: TObject);
beginShellExecute(Handle, 'open', 'IExplore.exe', PAnsiChar(edt2.Text), nil, SW_SHOWNORMAL);
end;procedure TdlForm.btn3Click(Sender: TObject);
beginrate:='128'; musicType:='mp3';dlForm.getMusicInfo();
end;procedure TdlForm.btn4Click(Sender: TObject);
beginrate:='192'; musicType:='mp3';dlForm.getMusicInfo();
end;procedure TdlForm.btn5Click(Sender: TObject);
beginrate:='320';musicType:='mp3';dlForm.getMusicInfo();
end;procedure TdlForm.btn6Click(Sender: TObject);
begin rate:='320';musicType:='flac';dlForm.getMusicInfo();
end;end.
调用插件superobject.pas、superxmlparser.pas
无损音乐下载器 Delphi版相关推荐
- [工具]再更新音乐下载软件,MP3音乐无损音乐下载器
昨天发的音乐下载软件我没有多做几次测试,导致误导大家了,昨天分享的那个只能听音乐不能下载,知道后我又赶紧为大家找了一款(一个网站),不知道什么情况链接不能发自动回复里,我也不敢直接放文章里,大家回复转 ...
- MusicTools下载 v3.4.0 全网免费无损音乐下载器
下载地址:点我 随着音乐版权越来越受到重视,我们在线听歌的限制也越来越大.在一个音乐平台上,我们无法听到所有歌手的作品,因为该平台可能没有某个歌手的版权.而且,由于很多内容都需要付费,我们也无法随心所 ...
- [工具]更新音乐下载软件工具音乐下载网站,MP3音乐无损音乐下载器
微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天推荐几个音乐下载的网站,想当年音乐随便下,这几年因为版权神马问题下个歌都费尽,今天 ...
- [工具]更新音乐下载网站,MP3音乐无损音乐下载器
分享两个音乐下载网站,都是今天测试过可以正常使用的.这种网站不知道会存在多久,老样子不放文章里,回复关键字 1.疯狂音乐搜索(直接下载) 这是一个音乐聚集平台,支持国内大部分音乐平台. 我们可以通过音 ...
- 无损音乐下载器 MusicTools单文件免安装-v1.9.3.1
MusicTools,无损音乐下载神器. 本文资源下载:MusicTools
- [Android工具]更新音乐下载软件,MP3音乐无损音乐下载器
更新音乐下载软件,前两次发的安卓软件又不能用了,虽然是正常情况,之前也早有心里准备,但一发现不能用还是十分不爽的!没办法,盼望着哪天能把他们服务器里所有音乐都下载下来... 不能让大家没得用,我又找了 ...
- [Android工具]安卓音乐下载软件,无损音乐FLAC音乐下载器
功能:免费好用的无损音乐下载器. 音乐格式:APE.FLAC和MP3 下载:后台发送"FLAC"获取下载地址 不需要注册登录直接进入搜索界面: 点击输入框右侧的放大镜开始搜索: 下 ...
- [PC工具]音乐下载软件,MP3音乐下载器
绿色软件,简单粗暴. 我搜索了几个歌名,好像没有APE.FLAC无损格式,都是MP3的音乐. 1搜索,2试听,3下载 ▼ 下载连接 ▼ 关注公众号[DLGG创客DIY] 后台发送"MP3&q ...
- android 取色器_音乐剪辑器手机版下载-音乐剪辑器app下载v9.10.15 安卓免费版
音乐剪辑器app是非常棒的剪辑软件,大家可以使用它对各种彩铃铃声,原版音乐进行剪辑编辑处理,功能强大完全免费,而且操作非常简单,有需要的朋友赶快下载试试吧! 音乐剪辑器手机版介绍 有时候想把多首歌曲合 ...
- 【趣味编程】第1期。用python做简易版音乐下载器
目录 前言 爬虫部分 完整代码 前言 那废话不多说,先了解准备工作. 1.先下载python,可以搜索python官网,到官网里面下载 2.下载外置模块 第一种方法,按win+R,输入cmd,然后输入 ...
最新文章
- 大数据在统计中的应用初探
- oracle prvg 1901,12c 打补丁analyze时报错
- Mongodb在使用过程中有什么问题
- python获取键盘输入能不能不按回车键_Github获8300星!用Python开发的一个命令行的网易云音乐...
- android页面布局更改,使用setContentView的方式更换布局文件从而更换界面
- 【GO】golang 的new 和 make
- 支付宝一键清除首页各种广告
- python爬虫哪个选择器好用_Python爬虫学习8-css选择器使用
- java程序设计之学生选课管理系统_课内资源 - 基于JAVA面向对象的学生选课管理系统...
- 关于C语言的字符常量和符号常量
- bzoj3332: 旧试题
- word如何在任意页开始添加页码
- 智能语音识别--方案实现--具体过程
- JAVA、android常用时间处理方法及类似微信微博发表时间显示
- cmt obm odm 代工模式oem_OEM、ODM、OBM、OPM概念,作用与区别
- Struts2检测工具
- 【ORM】TypeORM 与 Prisma 的详细对比
- 钒酸钠的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- python英文词频统计-Python实现统计英文文章词频的方法分析
- 键盘 部分 按键 ~ 需要长按才能打出来