一起来打造个正版音乐下载器(一)

    好久没做C#的项目了....昨天下载了VS2010不过电脑跑起来很卡又卸载了....好了言归正传..

    今天突然想做一个在线音乐播放器...但是想想自己又没有音乐资源,本来决定用百度的..但是想想谷歌的都是有授权的.....但是谷歌却下载的时候却又会跳转到巨鲸网,想来想去干脆就直接用巨鲸网的数据吧!而且里面的音乐还是正版的,O(∩_∩)O~

     

    这是我早上刚写出来的,写的有点简陋但是基本上可以用来下载歌曲了.....未来再添加个播放器就能在线播放歌曲了。。。。

演示文件:https://files.cnblogs.com/cracker/iMusic.rar(非源代码)

---------------------------------------------

现在来说说做这个软件需要了解的东西吧....

1、首先你要懂得获取网页指定地方的内容(称为网页采集)

2、你还需要了解怎么C#怎么制作下载器

3、当然就是分析你要的内容如何获取了...

------------

掌握了上面3个条件,要做一个音乐下载器就不难了。。。

第一点和第二点、你需要了解WebClient,第三点你只需要会看懂HTML就没问题了!

先说第二点吧,其实下载文件只需要实例化一个WebClient然后myWebClient.DownloadFile(下载URL,下载到的路径);

便可以实现了...具体代码参考

1 WebClient myWebClient = new WebClient();
2 myWebClient.DownloadFile("http://images.cnblogs.com/logo_small.gif", "c:\\logo_small.gif");

当然上面这种方法是没有返回值的,就是没办法实现进度条的....要实现进度条需要使用DownloadFileAsync方法然后绑定DownloadProgressChanged事件既可。具体代码

复制代码
代码
WebClient myWebClient = new WebClient();
Uri uri
= new Uri(remoteUri);
//绑定下载事件,以便于显示当前进度
myWebClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(OnDownloadProgressChanged);
//绑定下载完成事件,以便于计算总进度
myWebClient.DownloadFileCompleted += new AsyncCompletedEventHandler(OnDownloadFileCompleted);

// 下载保存文件到程序运行目录下
myWebClient.DownloadFileAsync(uri, Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Temp", fileName));
复制代码

具体的 OnDownloadProgressChanged和OnDownloadFileCompleted事件代码如下

 

复制代码
代码
private void OnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{

//this.SetProcessBar(e.ProgressPercentage, (int)((nDownloadedTotal + e.BytesReceived) * 100 / total));

progressBar1.Value
= e.ProgressPercentage;
label1.Text
= "已下载" + e.BytesReceived + "字节/总计" + e.TotalBytesToReceive + "字节";//一个label框,用来显示当前下载的数据
}

private void OnDownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{

if (MessageBox.Show("下载完成,是否打开文件", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// 打开文件
Process myProcess = new Process();

myProcess.StartInfo.FileName
= Application.StartupPath + "\\temp\\" + fileName;
myProcess.StartInfo.Verb
= "Open";
myProcess.StartInfo.CreateNoWindow
= true;
myProcess.Start();
}
progressBar1.Value
= 0;
}
复制代码

 

博客园刚才一直断断续续不能访问...先这样吧...下回再介绍其他2点....介绍完后就会发源代码了...

 

 

posted on   豆浆咖啡  阅读(2996)  评论(33编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
< 2010年4月 >
28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 1
2 3 4 5 6 7 8

统计

点击右上角即可分享
微信分享提示