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

时间:2024-02-19 21:40:46

    好久没做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点....介绍完后就会发源代码了...