Esempio n. 1
0
        private static List <SongResult> SearchCollect(string id)
        {
            var url  = "http://api.songlist.ttpod.com/songlists/" + id;
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                return(null);
            }
            var json = JObject.Parse(html);

            if (string.IsNullOrEmpty(json["songs"]?.ToString()) || json["songs"].ToString() == "null")
            {
                return(null);
            }
            try
            {
                var datas = json["songs"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 2
0
        private static List <SongResult> SearchArtist(string id, int page, int size)
        {
            var url = "http://api.dongting.com/song/singer/" + id +
                      "/songs?app=ttpod&from=android&api_version=1.0&size=" + size + "&page=" + page + "&user_id=0&tid=0";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                if (json["totalCount"].ToString() == "0")
                {
                    return(null);
                }
                var datas = json["data"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 3
0
        private static List <SongResult> SearchArtist(string id, int page, int size)
        {
            var str = "singermid=" + id;

            if (Regex.IsMatch(id, @"^\d+$"))
            {
                str = "singerid=" + id;
            }
            var url =
                "http://i.y.qq.com/v8/fcg-bin/fcg_v8_singer_track_cp.fcg?order=listen&begin=" + (page - 1) * size +
                "&num=" + size + "&" + str + "&g_tk=5381&uin=0&format=jsonp&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5page&needNewCode=1&from=h5";
            var html = CommonHelper.GetHtmlContent(url).Replace("callback(", "").TrimEnd(')');

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                if (json["message"].ToString() != "succ")
                {
                    return(null);
                }
                var datas = json["data"]["list"];
                return(GetListByJson(datas, true));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 4
0
        public static List <SongResult> Search(string key, int page, int size)
        {
            var url = "http://search.kuwo.cn/r.s?client=kt&all=" + key + "&pn=" + (page - 1) + "&rn="
                      + size + "&ft=music&plat=pc&cluster=1&result=json&rformat=json&ver=mbox&show_copyright_off=1&vipver=MUSIC_8.1.2.0_W4&encoding=utf8";
            //var url = $"http://search2013.kuwo.cn/r.s?all={key}&ft=music&client=kt&cluster=0&pn={page-1}&rn={size}&rformat=json&encoding=utf8";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                if (json["TOTAL"].ToString() == "0")
                {
                    return(null);
                }
                var datas = json["abslist"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 5
0
        private static List <SongResult> SearchAlbum(string id)
        {
            var text = "{\"id\":\"" + id + "\"}";
            var html = GetEncHtml("http://music.163.com/weapi/v1/album/" + id + "?csrf_token=", text);

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                var ar   = json["album"]["artist"]["name"].ToString();
                var pic  = json["album"]["picUrl"].ToString();
                var cmp  = json["album"]["company"].ToString();
                var year =
                    CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["album"]["publishTime"].ToString()) / 1000)
                    .ToString("yyyy-MM-dd");
                var datas = json["songs"];
                var list  = GetListByJson(datas);
                foreach (var s in list)
                {
                    s.AlbumArtist = ar;
                    s.PicUrl      = pic;
                    s.Company     = cmp;
                    s.Year        = year;
                }
                return(list);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 6
0
 private static SongResult SearchSong(string id)
 {
     try
     {
         var str = "songmid=" + id;
         if (Regex.IsMatch(id, @"^\d+$"))
         {
             str = "songid=" + id;
         }
         var url  = "http://c.y.qq.com/v8/playsong.html?" + str;
         var html = CommonHelper.GetHtmlContent(url, 2);
         if (string.IsNullOrEmpty(html))
         {
             return(null);
         }
         var j    = JObject.Parse(Regex.Match(html, @"(?<=var song = )({[\s\S]+?})(?=,\s*totalTime)").Value);
         var list = SearchAlbum(j["albummid"].ToString());
         return(list?.Songs.SingleOrDefault(t => t.SongId == j["songid"].ToString()));
     }
     catch (Exception ex)
     {
         CommonHelper.AddLog(ex);
         return(null);
     }
 }
Esempio n. 7
0
        private static List <SongResult> SearchArtist(string id, int page, int size)
        {
            //http://search2013.kuwo.cn/r.s?stype=artist2music&artistid=947&pn=0&rn=30
            var url = "http://search.kuwo.cn/r.s?ft=music&itemset=newkw&newsearch=1&cluster=0&rn=" + size + "&pn=" +
                      (page - 1) + "&primitive=0&rformat=json&encoding=UTF8&artist=" + id;

            if (Regex.IsMatch(id, @"^\d+$"))
            {
                url = "http://search.kuwo.cn/r.s?ft=music&itemset=newkw&newsearch=1&cluster=0&rn=" + size + "&pn=" +
                      (page - 1) + "&primitive=0&rformat=json&encoding=UTF8&artistid=" + id;
            }
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                if (json["TOTAL"].ToString() == "0")
                {
                    return(null);
                }
                var datas = json["abslist"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 8
0
        private SongResult SearchSong(string id)
        {
            var html = CommonHelper.GetHtmlContent("http://m.kugou.com/app/i/getSongInfo.php?hash=" + id + "&album_id=&cmd=playInfo");

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                var key  = json["fileName"].ToString();
                var list = SongSearch(key, 1, 30);
                if (list == null)
                {
                    return(null);
                }
                var song = list.Songs.SingleOrDefault(t => t.SongId == id);
                return(song ?? list.Songs[0]);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                return(null);
            }
        }
Esempio n. 9
0
 private static List <SongResult> SearchArtist(string id, int page, int size)
 {
     try
     {
         var url =
             "http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.artist.getSongList&format=json&order=2&tinguid=" +
             id + "&offset=" + (page - 1) * size + "&limits=" + size;
         var html = CommonHelper.GetHtmlContent(url);
         if (string.IsNullOrEmpty(html))
         {
             return(null);
         }
         var json = JObject.Parse(html);
         if (json["error_code"].ToString() != "22000")
         {
             return(null);
         }
         var datas = json["songlist"];
         return(GetListByJson(datas));
     }
     catch (Exception ex)
     {
         CommonHelper.AddLog(ex.ToString());
         return(null);
     }
 }
Esempio n. 10
0
        private static List <SongResult> SearchArtist(string id, int page, int size)
        {
            var url = "http://ioscdn.kugou.com/api/v3/singer/song?singerid=" + id + "&page=" + page + "&pagesize=" +
                      size + "&sorttype=2&plat=2&version=7910";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                if (json["data"]["total"].ToString() == "0")
                {
                    return(null);
                }
                var datas = json["data"]["info"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 11
0
        private static List <SongResult> SearchCollect(string id)
        {
            var url  = "http://i.y.qq.com/qzone-music/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&json=1&utf8=1&onlysong=0&nosign=1&disstid=" + id + "&g_tk=5381&loginUin=0&hostUin=0&format=jsonp&inCharset=GB2312&outCharset=utf-8&notice=0&platform=yqq&jsonpCallback=jsonCallback&needNewCode=0";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                return(null);
            }
            var json = JObject.Parse(html.Replace("jsonCallback(", "").TrimEnd(')'));

            if (json["cdlist"] == null)
            {
                return(null);
            }
            try
            {
                var datas = json["cdlist"].First["songlist"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 12
0
        public static List <SongResult> Search(string key, int page, int size)
        {
            //https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&remoteplace=sizer.yqq.song_next&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%8D%93%E4%BE%9D%E5%A9%B7-%E5%A6%82%E6%A2%A6%E5%88%9D%E9%86%92&g_tk=1220316356&loginUin=584586119&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0
            //var url = "http://soso.music.qq.com/fcgi-bin/search_cp?aggr=0&catZhida=0&lossless=1&sem=1&w=" + key + "&n=" + size + "&t=0&p=" + page + "&remoteplace=sizer.yqqlist.song&g_tk=5381&loginUin=0&hostUin=0&format=jsonp&inCharset=GB2312&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0";
            var url =
                $"https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&remoteplace=sizer.yqq.song_next&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p={page}&n={size}&w={key}&g_tk=1220316356&loginUin=584586119&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html.Replace("callback(", "").TrimEnd(')'));
                if (json["data"]["song"]["totalnum"].ToString() == "0")
                {
                    return(null);
                }
                var datas = json["data"]["song"]["list"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 13
0
 public static List <SongResult> SearchSong(string key, int page, int size)
 {
     try
     {
         var url =
             "http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.search.merge&format=json&query=" +
             key + "&page_no=" + page + "&page_size=" + size + "&type=0&data_source=0&use_cluster=1";
         var html = CommonHelper.GetHtmlContent(url);
         if (string.IsNullOrEmpty(html))
         {
             return(null);
         }
         var json = JObject.Parse(html);
         if (json["error_code"].ToString() != "22000")
         {
             return(null);
         }
         if (json["result"]["song_info"] == null)
         {
             return(null);
         }
         var datas = json["result"]["song_info"]["song_list"];
         return(GetListByJson(datas));
     }
     catch (Exception ex)
     {
         CommonHelper.AddLog(ex.ToString());
         return(null);
     }
 }
Esempio n. 14
0
        //private static string _kgToken;
        //private static string _kgUsrId;
        //private static DateTime _lastUpdateTime = DateTime.MinValue;


        //{"username":"******","clienttime":1490882950,"clientver":8708,"p":"75BDD13CE1222A190B4EA964B24CB7A1C2BD52EC4AC46997B50F6D30CF9C6D1EED8EC7288A8C857F5343B0C423224D53E2616C5DF62446B108D697BA223226743AC5570DF6DBFFC541BC88A56D3F084B6D3624A79EFD582223E2511B263CE4B15E8E9D2BB95E69D8B51774FC6AB9F79CF42A23A8C371C86D75C1AED1A5588FF5","appid":1005,"uuid":"194411aa79054c328f5341a2f7179a20","mid":"169617645177286751451596349075271490597","key":"59f222f0b028bd80b790266ad1ac196a"}

        //private const string UsrData = "{\"username\":\"XXXXXX\",\"clienttime\":1490882950,\"clientver\":8708,\"p\":\"75BDD13CE1222A190B4EA964B24CB7A1C2BD52EC4AC46997B50F6D30CF9C6D1EED8EC7288A8C857F5343B0C423224D53E2616C5DF62446B108D697BA223226743AC5570DF6DBFFC541BC88A56D3F084B6D3624A79EFD582223E2511B263CE4B15E8E9D2BB95E69D8B51774FC6AB9F79CF42A23A8C371C86D75C1AED1A5588FF5\",\"appid\":1005,\"uuid\":\"194411aa79054c328f5341a2f7179a20\",\"mid\":\"169617645177286751451596349075271490597\",\"key\":\"59f222f0b028bd80b790266ad1ac196a\"}";

        //private static void UpdateToken()
        //{
        //    if (!string.IsNullOrEmpty(_kgToken) && (DateTime.Now - _lastUpdateTime <= new TimeSpan(1, 0, 0, 0))) return;
        //    var html = CommonHelper.PostData("http://login.user.kugou.com/v2/login_by_pwd",
        //        new Dictionary<string, string> { { "JSON", UsrData } }, 1);
        //    if (string.IsNullOrEmpty(html))
        //    {
        //        return;
        //    }
        //    _lastUpdateTime = DateTime.Now;
        //    _kgToken = JObject.Parse(html)["data"]["token"].ToString();
        //    _kgUsrId = JObject.Parse(html)["data"]["userid"].ToString();
        //    //var token = Login();
        //    //if (string.IsNullOrEmpty(token))
        //    //{
        //    //    return;
        //    //}
        //    //_lastUpdateTime = DateTime.Now;
        //    //_kgToken = token;
        //}

        //private static string Login()
        //{
        //    var username = "******";
        //    var password = "******";
        //    string text = "1234567890";
        //    string value = username + password + text + "wp001";
        //    string text2 = CommonHelper.Md5(value);
        //    string text3 = string.Concat(new string[]
        //    {
        //    "username="******"&password="******"&plat=10&version=1000&imei=",
        //    text,
        //    "&key=",
        //    text2
        //    });

        //    byte[] bytes2 = Encoding.UTF8.GetBytes(text3);
        //    PKCS5Padding pKCS5Padding = new PKCS5Padding();
        //    byte[] input = pKCS5Padding.Pad(8, bytes2);
        //    DesCipher desCipher = new DesCipher(new byte[] { 79, 46, 13, 17, 28, 39, 7, 3 }, new CbcCipherMode(new byte[] { 26, 59, 48, 68, 35, 24, 11, 99 }), new PKCS5Padding());
        //    byte[] buff = desCipher.Encrypt(input);
        //    string text4 = ByteToString(buff);
        //    var html = CommonHelper.PostData("http://wpservice.kugou.com/new/app/i/user.php", new Dictionary<string, string> {
        //        { "cmd","404"},{ "crypt",text4} });
        //    if (string.IsNullOrEmpty(html))
        //    {
        //        return "";
        //    }
        //    return Regex.Match(html, @"(?<=sign"":"")[^""]+").Value;
        //}

        //private static string ByteToString(byte[] buff)
        //{
        //    string text = "";
        //    for (int i = 0; i < buff.Length; i++)
        //    {
        //        text += buff[i].ToString("X2");
        //    }
        //    return text;
        //}

        public static List <SongResult> Search(string key, int page, int size)
        {
            var url  = "http://ioscdn.kugou.com/api/v3/search/song?keyword=" + key + "&page=" + page + "&pagesize=" + size + "&showtype=10&plat=2&version=7910&tag=1&correct=1&privilege=1&sver=5";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                if (!string.IsNullOrEmpty(json["error"].ToString()) || json["data"]["total"].ToString() == "0")
                {
                    return(null);
                }
                var datas = json["data"]["info"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 15
0
        private static List <SongResult> SearchCollect(string id, int page)
        {
            var url  = "http://m.kugou.com/plist/list/?specialid=" + id + "&page=" + page + "&plat=2&json=true";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                return(null);
            }
            var json = JObject.Parse(html);

            if (json["list"]["list"]["total"].ToString() == "0")
            {
                return(null);
            }
            try
            {
                var datas = json["list"]["list"]["info"];
                return(GetListByJson(datas));
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 16
0
        private static AlbumResult SearchAlbum(string id)
        {
            var result = new AlbumResult
            {
                ErrorCode = 200,
                ErrorMsg  = "OK",
                AlbumLink = "http://h.dongting.com/yule/app/music_album.html?id=" + id,
                Songs     = new List <SongResult>()
            };
            var url  = "http://api.dongting.com/song/album/" + id;
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html))
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取专辑信息失败";
                return(result);
            }
            try
            {
                var json = JObject.Parse(html);
                if (string.IsNullOrEmpty(json["data"]?.ToString()) || json["data"].ToString() == "null")
                {
                    result.ErrorCode = 404;
                    result.ErrorMsg  = "请检查专辑ID是否正确";
                    return(result);
                }
                result.AlbumType = json["data"]["typeName"].ToString();
                result.AlbumInfo = json["data"]["description"].ToString();

                var datas = json["data"]["songList"];
                var year  = json["data"]["publishDate"].ToString();
                var cmp   = json["data"]["companyName"].ToString();
                var lug   = json["data"]["lang"].ToString();
                var ar    = json["data"]["singerName"].ToString();
                var pic   = json["data"]["picUrl"].ToString();
                var alias = json["data"]["alias"].ToString();
                var songs = json["data"]["songs"].Select(jToken => jToken.ToString()).ToList();
                result.Songs = GetListByJson(datas);
                foreach (var r in result.Songs)
                {
                    r.TrackNum     = (songs.IndexOf(r.SongId) + 1).ToString();
                    r.Year         = year;
                    r.Company      = cmp;
                    r.Language     = lug;
                    r.AlbumArtist  = ar;
                    r.PicUrl       = pic;
                    r.AlbumSubName = alias;
                }
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "专辑解析失败";
                return(result);
            }
        }
Esempio n. 17
0
        private static ArtistResult SearchArtist(string id, int page, int size)
        {
            //http://api.dongting.com/song/singer/1766358

            var url = "http://api.dongting.com/song/singer/" + id +
                      "/songs?app=ttpod&from=android&api_version=1.0&size=" + size + "&page=" + page + "&user_id=0&tid=0";
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new ArtistResult
            {
                ErrorCode  = 200,
                ErrorMsg   = "OK",
                ArtistLink = "",
                Page       = page,
                Songs      = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取源代码失败";
                return(result);
            }
            try
            {
                var json = JObject.Parse(html);
                if (json["totalCount"].ToString() == "0")
                {
                    result.ErrorCode = 404;
                    result.ErrorMsg  = "请检查艺术家ID是否正确";
                    return(null);
                }
                var datas = json["data"];
                result.Songs = GetListByJson(datas);
                try
                {
                    html = CommonHelper.GetHtmlContent("http://api.dongting.com/song/singer/" + id);
                    json = JObject.Parse(html);
                    result.ArtistInfo = json["data"]["brief"].ToString();
                    result.ArtistLogo = json["data"]["picUrl"].ToString();
                    result.TransName  = json["data"]["alias"].First?.ToString();
                    result.AlbumSize  = json["data"]["albumsCount"].Value <int>();
                    result.SongSize   = json["data"]["songsCount"].Value <int>();
                }
                catch (Exception ex)
                {
                    CommonHelper.AddLog(ex);
                }
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌曲时发生错误";
                return(result);
            }
        }
Esempio n. 18
0
 private static List <SongResult> SearchAlbum(string id)
 {
     try
     {
         var url =
             "http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.album.getAlbumInfo&format=json&album_id=" + id;
         var html = CommonHelper.GetHtmlContent(url);
         if (string.IsNullOrEmpty(html))
         {
             return(null);
         }
         if (html.Contains("error_code"))
         {
             return(null);
         }
         var    json     = JObject.Parse(html);
         var    datas    = json["songlist"];
         var    year     = json["albumInfo"]["publishtime"].ToString();
         var    cmp      = json["albumInfo"]["publishcompany"].ToString();
         var    lug      = json["albumInfo"]["language"].ToString();
         var    ar       = json["albumInfo"]["author"].ToString();
         var    smallPic = json["albumInfo"]["pic_small"].ToString();
         string pic;
         if (!string.IsNullOrEmpty(json["albumInfo"]["pic_s1000"].ToString()))
         {
             pic = json["albumInfo"]["pic_s1000"].ToString();
         }
         else if (!string.IsNullOrEmpty(json["albumInfo"]["pic_s500"].ToString()))
         {
             pic = json["albumInfo"]["pic_s500"].ToString();
         }
         else
         {
             pic = json["albumInfo"]["pic_radio"].ToString();
         }
         var list  = GetListByJson(datas);
         var index = 0;
         foreach (var r in list)
         {
             index++;
             r.TrackNum    = index;
             r.Year        = year;
             r.Company     = cmp;
             r.Language    = lug;
             r.AlbumArtist = ar;
             r.PicUrl      = pic;
             r.SmallPic    = smallPic;
         }
         return(list);
     }
     catch (Exception ex)
     {
         CommonHelper.AddLog(ex.ToString());
         return(null);
     }
 }
Esempio n. 19
0
        private static AlbumResult SearchAlbum(string id)
        {
            var result = new AlbumResult
            {
                ErrorCode = 200,
                ErrorMsg  = "OK",
                AlbumLink = "",
                Songs     = new List <SongResult>()
            };
            var url  = "http://search.kuwo.cn/r.s?stype=albuminfo&albumid=" + id + "&client=kt&plat=pc&cluster=1&ver=mbox&show_copyright_off=1&vipver=MUSIC_8.1.2.0_W4&encoding=utf8";
            var html = CommonHelper.GetHtmlContent(url, 0, null, false);

            if (string.IsNullOrEmpty(html) || html == "{}")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取专辑信息失败";
                return(result);
            }
            try
            {
                var json = JObject.Parse(html);
                var al   = json["name"].ToString();
                var ar   = json["artist"].ToString();
                var lu   = json["lang"].ToString();
                var pic  = "http://img3.kuwo.cn/star/albumcover/" + json["pic"].ToString().Replace("120/", "500/");
                var year = json["pub"].ToString();
                var cmp  = json["company"].ToString();
                result.Songs     = GetSongsByToken(json["musiclist"]);
                result.AlbumInfo = json["info"].ToString();

                for (var i = 0; i < result.Songs.Count; i++)
                {
                    result.Songs[i].AlbumId     = id;
                    result.Songs[i].AlbumName   = al;
                    result.Songs[i].AlbumArtist = ar;
                    result.Songs[i].Language    = lu;
                    result.Songs[i].PicUrl      = pic;
                    result.Songs[i].TrackNum    = (i + 1).ToString();
                    result.Songs[i].Year        = year;
                    result.Songs[i].Company     = cmp;
                }
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "专辑解析失败";
                return(result);
            }
        }
Esempio n. 20
0
        private static CollectResult SearchCollect(string id)
        {
            var url    = "http://i.y.qq.com/qzone-music/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&json=1&utf8=1&onlysong=0&nosign=1&disstid=" + id + "&g_tk=5381&loginUin=0&hostUin=0&format=jsonp&inCharset=GB2312&outCharset=utf-8&notice=0&platform=yqq&jsonpCallback=jsonCallback&needNewCode=0";
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://y.qq.com/#type=taoge&id=" + id,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html.Replace("jsonCallback(", "").TrimEnd(')'));

            if (json["cdlist"] == null)
            {
                result.ErrorCode = 404;
                result.ErrorMsg  = "请检查歌单ID是否正确";
                return(result);
            }
            try
            {
                var datas = json["cdlist"].First["songlist"];
                result.Songs        = GetListByJson(datas);
                result.CollectName  = json["cdlist"].First["dissname"].ToString();
                result.CollectLogo  = json["cdlist"].First["logo"].ToString();
                result.CollectMaker = json["cdlist"].First["nick"].ToString();
                result.CollectInfo  = json["cdlist"].First["desc"].ToString();
                var tags = json["cdlist"].First["tags"].Aggregate("", (current, t) => current + (t["name"].ToString() + ";"));
                result.Tags     = tags.Trim(';');
                result.SongSize = json["cdlist"].First["cur_song_num"].Value <int>();
                result.Date     =
                    CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["cdlist"].First["ctime"].ToString()))
                    .ToString("yyyy-MM-dd");
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Esempio n. 21
0
        private static CollectResult SearchCollect(string id)
        {
            var url    = "http://api.songlist.ttpod.com/songlists/" + id;
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://h.dongting.com/yule/app/music_songlist.html?id=" + id,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html);

            if (string.IsNullOrEmpty(json["songs"]?.ToString()) || json["songs"].ToString() == "null")
            {
                result.ErrorCode = 404;
                result.ErrorMsg  = "请检查歌单ID是否正确";
                return(result);
            }
            try
            {
                var datas = json["songs"];
                result.Songs        = GetListByJson(datas);
                result.CollectName  = json["title"].ToString();
                result.CollectLogo  = json["image"]["pic"].ToString();
                result.CollectMaker = json["owner"]["nick_name"].ToString();
                result.CollectInfo  = json["desc"].ToString();
                var tags = json["tags"].Aggregate("", (current, t) => current + (t["tag_name"].ToString() + ";"));
                result.Tags     = tags.Trim(';');
                result.SongSize = json["song_count"].Value <int>();
                result.Date     =
                    CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["created_time"].ToString()) / 1000)
                    .ToString("yyyy-MM-dd");
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Esempio n. 22
0
        private static List <SongResult> SearchAlbum(string id)
        {
            var url  = "http://ioscdn.kugou.com/api/v3/album/song?albumid=" + id + "&page=1&pagesize=-1&plat=2&version=7910";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                if (json["data"]["total"].ToString() == "0")
                {
                    return(null);
                }
                var datas = json["data"]["info"];
                var list  = GetListByJson(datas);

                html = CommonHelper.GetHtmlContent("http://ioscdn.kugou.com/api/v3/album/info?albumid=" + id + "&version=7910");
                if (string.IsNullOrEmpty(html))
                {
                    return(list);
                }
                json = JObject.Parse(html);

                var time       = json["data"]["publishtime"].ToString().Substring(0, 10);
                var al         = json["data"]["albumname"].ToString();
                var singerId   = json["data"]["singerid"].ToString();
                var singerName = json["data"]["singername"].ToString();
                var pic        = json["data"]["imgurl"].ToString().Replace("{size}", "480");
                var smallPic   = json["data"]["imgurl"].ToString().Replace("{size}", "120");
                for (var i = 0; i < list.Count; i++)
                {
                    list[i].ArtistId    = singerId;
                    list[i].ArtistName  = singerName;
                    list[i].AlbumName   = al;
                    list[i].AlbumArtist = singerName;
                    list[i].TrackNum    = i + 1;
                    list[i].Year        = time;
                    list[i].SmallPic    = smallPic;
                    list[i].PicUrl      = pic;
                }
                return(list);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 23
0
        private static AlbumResult SearchAlbum(string id)
        {
            var result = new AlbumResult
            {
                ErrorCode = 200,
                ErrorMsg  = "OK",
                AlbumLink = "http://www.xiami.com/album/" + id,
                Songs     = new List <SongResult>()
            };
            var list = GetResultsByIds(id, 1);

            if (list == null || list.Count <= 0)
            {
                result.Songs = GetLostAlbum(id);
            }
            else
            {
                result.Songs = list;
            }
            var url  = "http://www.xiami.com/app/xiating/album?spm=0.0.0.0.L6k2wP&id=" + id + "&uid=0";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html))
            {
                return(result);
            }
            try
            {
                var match = Regex.Match(html,
                                        @"(?<=h1 title="")([^""]+)(?:""[\s\S]+?p class="")([^""]*)(?:""[\s\S]+detail_songer"">)([^<]+)(?:</a>[\s\S]+?<em>)([^<]+)(?:</em>[\s\S]+?<em>)([^<]+)(?:</em>[\s\S]+?<em>)([^<]+)(?:</em>[\s\S]+?<em>)([^<]+)(?:</em>)");
                if (match.Length <= 0)
                {
                    return(result);
                }
                foreach (var s in result.Songs)
                {
                    s.AlbumSubName = match.Groups[2].Value;
                    s.AlbumArtist  = match.Groups[3].Value;
                    s.Language     = match.Groups[4].Value;
                    s.Company      = match.Groups[5].Value;
                    s.Year         = match.Groups[6].Value.Replace("年", "-").Replace("月", "-").Replace("日", "");
                }
                result.AlbumType = match.Groups[7].Value;
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
            }
            return(result);
        }
Esempio n. 24
0
        private CollectResult SearchCollect(string id, int page, int size)
        {
            var url    = "http://m.kugou.com/plist/list/?specialid=" + id + "&page=" + page + "&plat=2&json=true";
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "",
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html);

            if (json["list"]["list"]["total"].ToString() == "0")
            {
                result.ErrorCode = 404;
                result.ErrorMsg  = "请检查歌单ID是否正确";
                return(result);
            }
            try
            {
                var datas = json["list"]["list"]["info"];
                result.Songs = GetListByJson(datas);

                result.CollectName  = json["info"]["list"]["specialname"].ToString();
                result.CollectLogo  = json["info"]["list"]["imgurl"].ToString().Replace("{size}", "480");
                result.CollectMaker = json["info"]["list"]["nickname"].ToString();
                result.CollectInfo  = json["info"]["list"]["intro"].ToString();
                var tags = json["info"]["list"]["tags"].Aggregate("", (current, t) => current + (t["tagname"].ToString() + ";"));
                result.Tags     = tags.Trim(';');
                result.SongSize = json["info"]["list"]["songcount"].Value <int>();
                result.Date     = json["info"]["list"]["publishtime"].ToString().Substring(0, 10);
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Esempio n. 25
0
        private static AlbumResult SearchAlbum(string id)
        {
            var text   = "{\"id\":\"" + id + "\"}";
            var html   = GetEncHtml("http://music.163.com/weapi/v1/album/" + id + "?csrf_token=", text);
            var result = new AlbumResult
            {
                ErrorCode = 200,
                ErrorMsg  = "OK",
                AlbumLink = "http://music.163.com/#/album?id=" + id,
                Songs     = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取源代码失败";
                return(result);
            }
            try
            {
                var json = JObject.Parse(html);
                var ar   = json["album"]["artist"]["name"].ToString();
                var pic  = json["album"]["picUrl"].ToString();
                var cmp  = json["album"]["company"].ToString();
                var year =
                    CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["album"]["publishTime"].ToString()) / 1000)
                    .ToString("yyyy-MM-dd");
                result.AlbumType  = json["album"]["type"].ToString();
                result.AlbumInfo  = json["album"]["briefDesc"].ToString();
                result.AlbumGenre = json["album"]["tags"].ToString();
                var datas = json["songs"];
                result.Songs = GetListByJson(datas);
                foreach (var s in result.Songs)
                {
                    s.AlbumArtist = ar;
                    s.PicUrl      = pic;
                    s.Company     = cmp;
                    s.Year        = year;
                }
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "专辑解析失败";
                return(result);
            }
        }
Esempio n. 26
0
        private static List <SongResult> SearchAlbum(string id)
        {
            var str = "albummid=" + id;

            if (Regex.IsMatch(id, @"^\d+$"))
            {
                str = "albumid=" + id;
            }
            var url =
                "http://i.y.qq.com/v8/fcg-bin/fcg_v8_album_info_cp.fcg?" + str +
                "&g_tk=5381&uin=0&format=jsonp&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html.Replace("callback(", "").TrimEnd(')'));
                if (json["message"].ToString() != "succ")
                {
                    return(null);
                }
                var datas = json["data"]["list"];
                var year  = json["data"]["aDate"].ToString();
                var cmp   = json["data"]["company"].ToString();
                var lug   = json["data"]["lan"].ToString().HtmlDecode();
                var ar    = json["data"]["singername"].ToString().HtmlDecode();
                var list  = GetListByJson(datas);
                var index = 0;
                foreach (var r in list)
                {
                    index++;
                    r.TrackNum    = index;
                    r.Year        = year;
                    r.Company     = cmp;
                    r.Language    = lug;
                    r.AlbumArtist = ar;
                }
                return(list);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Esempio n. 27
0
        private static ArtistResult SearchArtist(string id)
        {
            var text   = "{\"id\":\"" + id + "\"}";
            var html   = GetEncHtml("http://music.163.com/weapi/v1/artist/" + id + "?csrf_token=", text);
            var result = new ArtistResult
            {
                ErrorCode  = 200,
                ErrorMsg   = "OK",
                ArtistLink = "http://music.163.com/#/artist?id=" + id,
                Songs      = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取源代码失败";
                return(result);
            }
            try
            {
                var json  = JObject.Parse(html);
                var alias = json["artist"]["alias"]?.First?.ToString();
                result.TransName  = json["artist"]["trans"].ToString();
                result.ArtistInfo = json["artist"]["briefDesc"].ToString();
                result.ArtistLogo = json["artist"]["img1v1Url"].ToString();
                result.Page       = 1;
                result.AlbumSize  = json["artist"]["albumSize"].Value <int>();
                result.SongSize   = json["artist"]["musicSize"].Value <int>();
                var datas = json["hotSongs"];
                result.Songs = GetListByJson(datas);
                if (!string.IsNullOrEmpty(alias))
                {
                    foreach (var s in result.Songs)
                    {
                        s.ArtistSubName = alias;
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "热门歌曲解析失败";
                return(result);
            }
        }
Esempio n. 28
0
        private static CollectResult SearchCollect(string id)
        {
            var url    = "http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.diy.gedanInfo&format=json&listid=" + id;
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://music.baidu.com/songlist/" + id,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html);

            if (json["error_code"].ToString() != "22000")
            {
                result.ErrorCode = 404;
                result.ErrorMsg  = "请检查歌单ID是否正确";
                return(result);
            }
            try
            {
                var datas = json["content"];
                result.Songs       = GetListByJson(datas);
                result.CollectName = json["title"].ToString();
                result.CollectLogo = json["pic_500"].ToString();
                result.CollectInfo = json["desc"].ToString();
                result.Tags        = json["tag"].ToString();
                result.SongSize    = result.Songs.Count;
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Esempio n. 29
0
        private static CollectResult SearchCollect(string id, int page, int size)
        {
            var text = "{\"id\":\"" + id + "\",\"n\":" + size + ",\"offset\":" + (page - 1) * size + ",\"limit\":" + size +
                       ",\"total\":true}";
            var html   = GetEncHtml("http://music.163.com/weapi/v3/playlist/detail?csrf_token=", text);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://music.163.com/#/playlist?id=" + id,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取源代码失败";
                return(result);
            }
            try
            {
                var json = JObject.Parse(html);
                result.Songs       = GetListByJToken(json, true);
                result.CollectInfo = json["playlist"]["description"].ToString();
                result.CollectName = json["playlist"]["name"].ToString();
                result.Page        = page;
                result.SongSize    = json["playlist"]["trackCount"].Value <int>();
                result.Date        =
                    CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["playlist"]["createTime"].ToString()) / 1000)
                    .ToString("yyyy-MM-dd");
                var picId       = json["playlist"]["coverImgId"].ToString();
                var encryptPath = EncryptId(picId);
                result.CollectLogo  = $"http://p4.music.126.net/{encryptPath}/{picId}.jpg";
                result.CollectMaker = json["playlist"]["creator"]["nickname"].ToString();
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "歌单解析失败";
                return(result);
            }
        }
Esempio n. 30
0
        private static SongResult SearchSong(string id)
        {
            try
            {
                #region 旧版

                //var str = id;
                //if (Regex.IsMatch(id, @"^\d+$"))
                //{
                //    str = id + "_num";
                //}
                ////http://y.qq.com/portal/song/004Xy7Rb2kGXEu.html
                //var url = "http://y.qq.com/portal/song/"+str+".html";
                //var html = CommonHelper.GetHtmlContent(url);
                //if (string.IsNullOrEmpty(html))
                //{
                //    return null;
                //}
                //var j = JToken.Parse("["+ Regex.Match(html, @"(?<=var\s*g_SongData\s*=\s*)({[\s\S]+?})(?=;)").Value + "]");
                //var list = GetListByJson(j);
                //return list?[0];

                #endregion

                var url = "http://i.y.qq.com/s.plcloud/fcgi-bin/fcg_list_songinfo_cp.fcg?midlist=" + id;
                if (Regex.IsMatch(id, @"^\d+$"))
                {
                    url = "http://i.y.qq.com/s.plcloud/fcgi-bin/fcg_list_songinfo_cp.fcg?idlist=" + id;
                }
                var html = CommonHelper.GetHtmlContent(url);
                if (string.IsNullOrEmpty(html))
                {
                    return(null);
                }
                var json  = JObject.Parse(html);
                var datas = json["data"];
                var list  = GetListByJson(datas);
                return(list?[0]);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }