苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 12063|回复: 10
打印 上一主题 下一主题

[功能帮助类] c# 在线搜索音乐及下载API

[复制链接]
跳转到指定楼层
楼主
发表于 2014-5-9 18:16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MusicSearch.zip (1.86 KB, 下载次数: 78)

调用这个类可以搜索音乐,里面还附带下载音乐的方法,,简单的实现,代码优化的不好,正则不行,

[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Net;
using System.Text;
using System.Threading;
namespace MusicAPI
{
    /// <summary>
    /// 音乐搜索API
    /// </summary>
    ///作者:QQ944095635 
    ///类型:音乐搜索

   public class MusicSearch
   {
       #region 实体类
       /// <summary>
       /// 搜搜音乐实体类
       /// </summary>
       public class SouSouMusic 
       {
           /// <summary>
           /// 歌曲名字
           /// </summary>
          public string name { get; set; }
           /// <summary>
           /// 歌曲mp3路径
           /// </summary>
          public List<string> mp3path { get; set; }
           /// <summary>
           /// 歌曲wma路径
           /// </summary>
          public List<string> wmapath { get; set; }
           /// <summary>
           /// 歌曲作者
           /// </summary>
          public string by { get; set; }
       }
       #endregion

       #region 音乐搜索接口
       /// <summary>
       /// 搜搜接口
       /// </summary>
       /// <param name="KeyWord">关键字</param>
       /// <param name="page">i=1,返回20条数据,i=2,返回40条</param>
       /// 正则学的不好。Substring处理的数据,可以自行修改
       public static List<SouSouMusic> SouSouSearch(string KeyWord,int pageindex) 
       {
           List<SouSouMusic> list = new List<SouSouMusic>();

           for (int id = 1; id <= pageindex; id++)
           {
               #region 数据处理
               try
               {
                   string strAPI = "http://cgi.music.soso.com/fcgi-bin/m.q?w=";
                   strAPI = strAPI + UrlEncode(KeyWord);//关键字编码转换
                   strAPI = strAPI + "&p=" + id;
                   Uri url = new Uri(strAPI);
                   WebClient MyWebClient = new WebClient();
                   string Web = MyWebClient.DownloadString(url);
                   while (Web.IndexOf("<td class=\"data\">") >= 0)
                   {
                       string Web1 = Web.Substring(Web.IndexOf("<td class=\"data\">") + 17, Web.Length - 18 - Web.IndexOf("<td class=\"data\">"));
                       //当前歌曲所以信息
                       string Web2 = Web1.Substring(0, Web1.IndexOf("</td>"));
                       Web = Web1;
                       int i = Web2.IndexOf("@@");
                       //音乐名字
                       string MusicName = Web2.Substring(Web2.IndexOf("@@") + 2, Web2.Length - Web2.IndexOf("@@") - 5);
                       MusicName = MusicName.Substring(0, MusicName.IndexOf("@@"));
                       //作者名字
                       string use = Web2.Substring(Web2.IndexOf("@@") + 2, Web2.Length - Web2.IndexOf("@@") - 3);
                       use = use.Substring(use.IndexOf("@@") + 2, use.Length - use.IndexOf("@@") - 3);
                       use = use.Substring(use.IndexOf("@@") + 2, use.Length - use.IndexOf("@@") - 3);
                       use = use.Substring(0, use.IndexOf("@@"));
                       //歌曲连接 分为MP3 和 WMA 
                       List<string> mp3path = new List<string>();
                       List<string> wmapath = new List<string>();
                       try
                       {
                           while (Web2.IndexOf("@@FI") >= 0)
                           {
                               string path = Web2.Substring(Web2.IndexOf("@@FI") + 4, Web2.Length - Web2.IndexOf("@@FI") - 4);
                               Web2 = path;
                               path = path.Substring(0, path.IndexOf(".wma") + 4);
                               wmapath.Add(path);
                           }
                           while (Web2.IndexOf("SI") >= 0)
                           {
                              string path = Web2.Substring(Web2.IndexOf("SI") + 2, Web2.Length - Web2.IndexOf("SI") - 2);
                              Web2 = path;
                              path = path.Substring(0, path.IndexOf(".mp3") + 4);
                              mp3path.Add(path);
                           }
                       }
                       catch (Exception)
                       {
                          
                       }
                       //int s = Web2.IndexOf("@@FI");
                       // int d = Web2.IndexOf(".wma");
                       SouSouMusic so = new SouSouMusic();
                       so.name = MusicName.Replace("@", "");
                       so.by = use.Replace("@", "");
                       so.mp3path = mp3path;
                       so.wmapath = wmapath;
                       list.Add(so);
                   }
               }
               catch (WebException)
               {

               }
               #endregion
           }
           return list;

         
       }
       #endregion

       #region 字符编码转化
       /// <summary>
       /// //字符编码转化
       /// </summary>
       /// <param name="str"></param>
       /// <returns></returns>
       public static string UrlEncode(string str)
       {
           StringBuilder sb = new StringBuilder();
           byte[] byStr = System.Text.Encoding.Default.GetBytes(str);
           for (int i = 0; i < byStr.Length; i++)
           {
               sb.Append(@"%" + Convert.ToString(byStr[i], 16));
           } return (sb.ToString());
       }
        #endregion

       #region 音乐下载
       /// <summary>
       /// 下载音乐
       /// </summary>
       /// <param name="DownUrl"></param>
       /// <param name="SavePath"></param>
       /// <returns></returns>
       public static bool DownMusic(string DownUrl,string SavePath)
       {
          
           try
           {
               Thread th = new Thread(new ParameterizedThreadStart(Down));
               DownFileInfo d = new DownFileInfo(DownUrl,SavePath);
               th.IsBackground = true;
               th.Start(d);
           }
           catch (Exception)
           {
               return false;
           }

           return true;
       }
       /// <summary>
       /// 线程
       /// </summary>
       private static void Down(object obj)
       {
           DownFileInfo d = (DownFileInfo)obj;
           WebClient wb = new WebClient();
           wb.DownloadFile(d.DownUrl, d.SavePath);
       }
       /// <summary>
       /// 下载文件属性类
       /// </summary>
       public class DownFileInfo : Object
       {
           public DownFileInfo(string DownUrl, string SavePath) 
           {
               this.SavePath = SavePath;
               this.DownUrl = DownUrl;
           }
         public  string SavePath { get; set; }
         public  string DownUrl { get; set; }
       }

       #endregion
   }
}



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
发表于 2014-5-10 14:27:01 | 只看该作者
不下载,但也要支持LZ!
板凳
发表于 2014-5-10 15:58:41 | 只看该作者
不下载,但也要支持LZ
地板
 楼主| 发表于 2014-5-10 17:12:57 | 只看该作者
cload 发表于 2014-5-10 14:27
不下载,但也要支持LZ!

非常感谢你帮了我的大忙,真的太感谢你啦!
5
发表于 2014-5-11 13:06:33 | 只看该作者
感谢LZ分享。学习了!
6
发表于 2014-6-10 13:09:29 | 只看该作者
这个真有用么
7
发表于 2014-6-14 09:15:41 | 只看该作者
呵呵,支持一下
8
发表于 2014-6-24 22:58:57 来自移动端 | 只看该作者
谢谢分享
回复

使用道具 举报

9
发表于 2014-6-28 23:07:03 | 只看该作者
强烈支持楼主ing……
10
 楼主| 发表于 2015-5-7 20:39:53 | 只看该作者
http://www.dmskin.com
C# winform界面库
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2025-1-23 12:57

© 2014-2021

快速回复 返回顶部 返回列表