使用.net里的WebClient自动下载baidu的mp3

发现blog是很费资源的东西,也是一个督促自己学习的东西。今天想写又不知道写什么好,另外自己研究的一些代码也没完成,所以还真不知道写什么好。想起昨天自己还使用的baidump3下载程序,就放出来给大家吧,我没经过优化,也没用多线程下载,更没判断文件大小,就是把baidu top500一口气下载下来,下完在听好不好听,不好听就删除。

基本上就使用了webclient + 正则  ,比较简单,具体大家可以看看,然后自己修改了。运行的话,需要一个RichTextBox 控件和按钮,大家自己拉咯。d:/new目录自己建吧,程序没判断,毕竟就自己用的一个小工具,没那么多讲究了,有服务器的还是运行到服务器吧,比较快。原来测试过10M的带宽,3-4个小时可以把500首歌拉完。

代码如下

 

WebClient webdown  =   new  WebClient();
            
string  url  =   " http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2 " ;


            
string  tmp  =  webdown.DownloadString(url);
            
//  RTBInfo.Text = tmp;

            
string  scanStr  =   @" (?<urlstr>http://mp3.baidu.com/m[?]tn=baidump3&ct=(d+)(S+))(s*)(S+)>(?<songName>S+)< " ; // &(W<urlstr>+) target=_blank>(W<songName>+)</a>";
            Regex regScan  =   new  Regex(scanStr, RegexOptions.IgnoreCase  |  RegexOptions.Compiled);
            MatchCollection matchCol_F 
=  regScan.Matches(tmp);
            MatchCollection matchCol;
            MatchCollection matchCol_S;
           
            
foreach  (Match mat  in  matchCol_F)
            
{

                
string songName = mat.Groups["songName"].ToString();
                
string songUrl = mat.Groups["urlstr"].ToString();
                songUrl 
= songUrl.Remove(songUrl.Length - 11);

                
if (songName == ")")
                
{
                    
continue;
                }

                
                RTBInfo.AppendText(
"下载歌曲:" + songName + " ");

                
try
                
{
                    tmp 
= webdown.DownloadString(songUrl);
                }

                
catch
                
{
                    
continue;
                }

          
//  http://220.181.38.82/m?ct=134217728&tn=baidusg,牛仔很忙  &word=mp3,http://jayhome.pengpeng.com/down/mp3/Y2Jja6OfrLKSm6Wpo5WBmap6oqGaZHqmMQ$$.mp3,,[%C5%A3%D7%D0%BA%DC%C3%A6+%D6%DC%BD%DC%C2%D7]&si=%C5%A3%D7%D0%BA%DC%C3%A6;;%D6%DC%BD%DC%C2%D7;;218633;;218633&lm=16777216
                scanStr = @"(?<urlstr>http://(S+)(d+)(D+)" + songName + @"(s*)(D+)mp3(S+)&lm=(d+))";
                regScan 
= new Regex(scanStr, RegexOptions.IgnoreCase | RegexOptions.Compiled);
                matchCol 
= regScan.Matches(tmp);
                
if (matchCol.Count > 0)
                    songUrl 
= matchCol[0].Groups["urlstr"].ToString();
                
else
                    
continue;

                
//RTBInfo.AppendText("下载地址2:" + songUrl + " ");
                try
                
{
                    tmp 
= webdown.DownloadString(songUrl);
                }

                
catch
                
{
                    
continue;
                }

                scanStr 
= @"(?<urlstr>http://(S+)mp3)";
                regScan 
= new Regex(scanStr, RegexOptions.IgnoreCase | RegexOptions.Compiled);
                matchCol_S 
= regScan.Matches(tmp);

                
foreach (Match mat_S in matchCol_S)
                
{
                    songUrl 
= mat_S.Groups["urlstr"].ToString();


                    
// RTBInfo.AppendText("下载地址3:" + songUrl + " ");
                    RTBInfo.AppendText("下载中....");
                    
try
                    
{
                         
if (File.Exists("d:/new/" + songName + ".mp3")) break;
                        webdown.DownloadFile(songUrl, 
"d:/new/" + songName + ".mp3");
                    }

                    
catch(Exception ex)
                    
{
                        RTBInfo.AppendText(
"下载失败 ");
                        
continue;
                    }

                    RTBInfo.AppendText(
"下载成功 ");
                    
break;
                }

            }

            RTBInfo.AppendText(
" 下载结束 " );
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值