Example #1
0
        public static string GetSongName(DownloadSettings downSetting, SongResult songResult)
        {
            if (downSetting.EnableUserSetting)
            {
                return(downSetting.UserName.Replace("%ARTIST%", songResult.ArtistName)
                       .Replace("%INDEX%", songResult.TrackNum.ToString()).Replace("%SONG%", songResult.SongName)
                       .Replace("%DISC%", songResult.Disc.ToString()));
            }
            switch (downSetting.NameSelect)
            {
            case 0:
                return(songResult.SongName);

            case 1:
                if (string.IsNullOrEmpty(songResult.ArtistName))
                {
                    return(songResult.SongName);
                }
                return(songResult.ArtistName + " - " + songResult.SongName);

            case 2:
                if (string.IsNullOrEmpty(songResult.ArtistName))
                {
                    return(songResult.SongName);
                }
                return(songResult.SongName + " - " + songResult.ArtistName);

            default:
                if (songResult.TrackNum < 0)
                {
                    return(songResult.SongName);
                }
                return(songResult.TrackNum.ToString().PadLeft(2, '0') + " - " + songResult.SongName);
            }
        }
Example #2
0
 private static void PrintSongResult(SongResult songResult)
 {
     foreach (var item in songResult.Songs)
     {
         Console.WriteLine("Id: {0} Song: {1} Album: {2} Artist: {3}", item.ArtistId, item.TrackCensoredName, item.CollectionName, item.ArtistName);
     }
 }
 //http://audiojungle.net/search?term=Tears&page=2
 public static List<SongResult> GetResultsByKey(string key,int page)
 {
     var url = "http://audiojungle.net/search?term=" + key + "&page=" + page;
     var html = CommonHelper.GetHtmlContent(url);
     if (string.IsNullOrEmpty(html))
     {
         return null;
     }
     var matches = Regex.Matches(html,
         @"(?<=<li\s*data-item-id="")(\d+)(?:[\s\S]+?<img[\s\S]+?src="")([^""]+)(?:""[\s\S]+?tsunami-item__title"">\s*<a href=""[^""]+"">)([^<]+)(?:</a>\s* </h3>[\s\S]+?author-link"">)([^<]+)(?:</a>[\s\S]+?data-file="")([^""]+)(?="")");
     var list = new List<SongResult>();
     foreach (Match match in matches)
     {
         var song = new SongResult()
         {
             SongId = match.Groups[1].Value,
             PicUrl = match.Groups[2].Value,
             Name = match.Groups[3].Value,
             Artist = match.Groups[4].Value,
             AlbumArtist = match.Groups[4].Value,
             LqUrl = match.Groups[5].Value,
             ExtHqUrl = match.Groups[5].Value,
             HqUrl = match.Groups[5].Value,
             Type = "AJ",
             AlbumId = "5211314"
         };
         list.Add(song);
     }
     return list;
 } 
Example #4
0
        public static string GetSongPath(DownloadSettings downSetting, SongResult songResult)
        {
            if (downSetting.EnableUserSetting)
            {
                var path = downSetting.UserFolder.Replace("%ARTIST%", songResult.ArtistName)
                           .Replace("%INDEX%", songResult.TrackNum.ToString()).Replace("%SONG%", songResult.SongName)
                           .Replace("%DISC%", songResult.Disc.ToString());
                if (!string.IsNullOrEmpty(songResult.Year) && songResult.Year.Length >= 4)
                {
                    path = path.Replace("%YEAR%", songResult.Year.Substring(0, 4));
                }
                return(path);
            }
            switch (downSetting.FolderSelect)
            {
            case 0:
                return("");

            case 1:
                return(songResult.ArtistName);

            case 2:
                return(songResult.AlbumName);

            default:
                return(songResult.ArtistName + "/" + songResult.AlbumName);
            }
        }
 public static List<SongResult> GetResultsByKey(string key, int page)
 {
     key = Regex.Replace(key, @"[\W]+", "+");
     var url = "http://mp3pm.com/s/f/" + key + "/page/" + page + "/";
     var html = CommonHelper.GetHtmlContent(url);
     if (string.IsNullOrEmpty(html))
     {
         return null;
     }
     var matches = Regex.Matches(html,
         @"(?<=data-sound-author"">)([^<]+?)(?:<[\s\S]+?data-sound-title"">)([^<]+?)(?:<[\s\S]+?data-sound-id="")(\d+)(?:""\s*data-sound-url="")([^""]+?)(?="")");
     var list = new List<SongResult>();
     foreach (Match match in matches)
     {
         var song = new SongResult()
         {
             SongId = match.Groups[3].Value,
             Name = match.Groups[2].Value,
             Artist = match.Groups[1].Value,
             AlbumArtist = match.Groups[1].Value,
             LqUrl = match.Groups[4].Value,
             ExtHqUrl = match.Groups[4].Value,
             HqUrl = match.Groups[4].Value,
             Type = "MP3PM",
             AlbumId = "5211314"
         };
         list.Add(song);
     }
     return list;
 }
 public static SongResult GetEchoUrl(string id)
 {
     var url = "http://echosystem.kibey.com/sound/info?android_v=66&app_channel=qvideo&sound_id=" + id;
     var html = CommonHelper.GetHtmlContent(url);
     if (string.IsNullOrEmpty(html))
     {
        return null; 
     }
     var json = (JObject) JsonConvert.DeserializeObject(html);
     if (json["message"].ToString() != "success")
     {
         return null;
     }
     var song = new SongResult()
     {
         SongId = json["result"]["id"].ToString(),
         Name = json["result"]["name"].ToString(),
         CopyUrl = json["result"]["source"].ToString(),
         LqUrl = json["result"]["source"].ToString(),
         HqUrl = json["result"]["source"].ToString(),
         ExtHqUrl = json["result"]["source"].ToString(),
         PicUrl = json["result"]["pic"].ToString(),
         Type = "echo"
     };
     return song;
 }
Example #7
0
        private SongResult CreateLinksForSong(SongResult song)
        {
            song.Links.Add(new Link(Url.Link("GetSong", new { songbookId = song.SongbookId, id = song.Id }), "self", "GET"));
            song.Links.Add(new Link(Url.Link("DeleteSong", new { songbookId = song.SongbookId, id = song.Id }), "delete_song", "DELETE"));

            return(song);
        }
 public static List<SongResult> GetResultsByKey(string key, int page)
 {
     var url = "http://v5.pc.duomi.com/search-ajaxsearch-searchall?kw=" + key + "&pi=" + page +"&pz=20";
     var html = CommonHelper.GetHtmlContent(url);
     if (string.IsNullOrEmpty(html))
     {
         return null;
     }
     var json = (JObject)JsonConvert.DeserializeObject(html.Trim('(', ')'));
     if (Convert.ToInt32(json["total_tracks"]) <= 0)
     {
         return null;
     }
     var list = new List<SongResult>();
     var songs = json["tracks"];
     foreach (JToken song in songs)
     {
         var single = new SongResult()
         {
             SongId = song["id"].ToString(),
             Name = song["title"].ToString(),
             Artist = song["artists"][0]["name"].ToString(),
             AlbumArtist = song["artists"][0]["name"].ToString(),
             Album = song["album"]["name"].ToString(),
             AlbumId = song["album"]["id"].ToString(),
             PicUrl = "http://photo.cdn.duomi.com/imageproxy2/dimgm/scaleImage?url=http://img.kxting.cn/" + song["album"]["cover"] + "&w=1500&h=1500&s=100&c=0&o=0&m=",
             BitRate = song["medias"][0]["bitrate"] +"K"
         };
         single.Type = "Duomi";
         single.CopyUrl = "http://www.musicuu.com/songurl/dm^320^" + single.SongId + ".mp3";
         list.Add(single);
     }
     return list;
 }
Example #9
0
        private static void GetSongDetials(SongResult song)
        {
            var url  = "http://www.xiami.com/app/xiating/album?spm=0.0.0.0.L6k2wP&id=" + song.AlbumId + "&uid=0";
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html))
            {
                return;
            }
            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;
            }
            song.AlbumName    = match.Groups[1].Value;
            song.AlbumSubName = match.Groups[2].Value;
            song.AlbumArtist  = match.Groups[3].Value;
            song.Language     = match.Groups[4].Value;
            song.Company      = match.Groups[5].Value;
            song.Year         = match.Groups[6].Value.Replace("年", "-").Replace("月", "-").Replace("日", "");
            var discs = Regex.Matches(html, @"(?<=<ul class=""playlist)[\s\S]+?(?=</ul>)");

            for (int i = 0; i < discs.Count; i++)
            {
                match = Regex.Match(discs[i].Value, @"(?<=rel=""" + song.SongId + @"""[\s\S]+?list_index"">)\d+(?=[\s\S]+?id=" + song.SongId + ")");
                if (!string.IsNullOrEmpty(match.Value))
                {
                    song.TrackNum = Convert.ToInt32(match.Value);
                    song.Disc     = i + 1;
                }
            }
        }
 public static List<SongResult> GetSearchResult(string key,int page)
 {
     var url = "http://search.5sing.kugou.com/home/json?keyword=" + key + "&type=0&filter=0&sort=0&page=" + page + "&callback=succes";
     var html = CommonHelper.GetHtmlContent(url);
     if (string.IsNullOrEmpty(html))
     {
         return null;
     }
     var json = (JObject) JsonConvert.DeserializeObject(html);
     if (json["pageInfo"]["totalCount"].ToString() == "0")
     {
         return null;
     }
     var js = json["list"];
     var list = new List<SongResult>();
     foreach (JToken jToken in js)
     {
         var song = new SongResult
         {
             SongId = jToken["songId"].ToString(),
             Name = jToken["originalName"].ToString(),
             AlbumArtist = jToken["originSinger"].ToString(),
             Artist = jToken["originSinger"].ToString(),
             Type = "fs"
         };
         song.CopyUrl = song.HqUrl = song.LqUrl = song.ExtHqUrl = "http://musicuu.com/songurl/fs^"+jToken["typeEname"] +"^"+song.SongId+".mp3";
         song.PicUrl = "http://musicuu.com/songurl/fs^" + jToken["typeEname"] + "^" + song.SongId + ".jpg";
         list.Add(song);
     }
     return list;
 }
 async Task IJukeboxLogic.AddSongToListAsync(SongResult song)
 {
     SongsToPlay.Add(song);
     if (SongsToPlay.Count == 1)
     {
         _currentSong = _dats.GetSong(song.ID);
         await _currentSong.PlayNewSongAsync(0);
     }
 }
        private static List<SongResult> GetListByJson(IEnumerable<JToken> jsons)
        {
            var list = new List<SongResult>();
            foreach (var json in jsons)
            {
                try
                {
                    var song = new SongResult
                    {
                        Name = XiamiMusic.CheckIsInValidate(json["name"].ToString()),
                        SongId = json["id"].ToString(),
                        Artist = XiamiMusic.CheckIsInValidate(json["artists"][0]["name"].ToString()),
                        Album = XiamiMusic.CheckIsInValidate(json["album"]["name"].ToString()),
                        AlbumId = json["album"]["id"].ToString(),
                        AlbumArtist = XiamiMusic.CheckIsInValidate(json["album"]["artists"][0]["name"].ToString()),
                        Company = XiamiMusic.CheckIsInValidate(json["album"]["company"].ToString()),
                        Year = ConvertIntDateTime(Convert.ToDouble(json["album"]["publishTime"])).ToString("yyyy年MM月dd日"),
                        PicUrl = json["album"]["picUrl"].ToString(),
                        LqUrl = json["mp3Url"].ToString(),
                        Time = json["duration"].ToString(),
                        Type = "NetEase"
                    };
                    try
                    {
                        song.TrackNum = json["position"].ToString().PadLeft(2, '0');
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex.ToString());
                    }

                    var hqUrl = GetHqUrl(json);
                    if (string.IsNullOrEmpty(hqUrl))
                    {
                        song.HqUrl = song.LqUrl;
                        song.BitRate = "160K";
                    }
                    else
                    {
                        song.HqUrl = hqUrl;
                        song.BitRate = "320K";
                    }
                    song.HqUrl = hqUrl;
                    song.CopyUrl = "http://www.musicuu.com/songurl/wy^320^" + song.SongId + ".mp3";
                    list.Add(song);
                }
                catch (Exception ex)
                {
                    Console.Write(ex.ToString());
                }
            }
            return list;
        }
        private SongResult FindBestMatchBetweenTwo(MusicBeeSong song, SongResult a, SongResult b)
        {
            int aMatches = NumberOfMatches(song, a);
            int bMatches = NumberOfMatches(song, b);

            if (aMatches == 0 && bMatches == 0)
            {
                return(null);
            }

            // Prefer the YTM tracks over uploads if there is a tie
            return(aMatches >= bMatches ? a : b);
        }
        private int NumberOfMatches(MusicBeeSong song, SongResult songResult)
        {
            if (songResult == null)
            {
                return(0);
            }

            bool titleMatches  = song.Title.ToLower() == songResult.Title.ToLower();
            bool artistMatches = songResult.Artists.Exists(x => x.Name.ToLower() == song.Artist.ToLower());
            bool albumMatches  = song.Album.ToLower() == songResult.Album.Name.ToLower();

            return((titleMatches ? 1 : 0) + (artistMatches ? 1 : 0) + (albumMatches ? 1 : 0));
        }
        async Task IJukeboxLogic.RemoveSongFromListAsync(SongResult song)
        {
            if (_currentSong == null)
            {
                throw new BasicBlankException("I think there should be a current song if removing song.  If I am wrong, rethink");
            }
            int id = song.ID;

            if (id == _currentSong.ID)
            {
                await NextSongAsync(); //hopefully this works.

                return;
            }
            SongsToPlay.RemoveSpecificItem(song);
        }
 public static List<SongResult> GetResultsByKey(string key, int page)
 {
     var url = "http://www.118100.cn/v5/action/secweborder/v3/searchall.do?keywords="+key+"&tpye=1&pageCount="+page;
     var html = CommonHelper.GetHtmlContent(url);
     if (string.IsNullOrEmpty(html))
     {
         return null;
     }
     var list = new List<SongResult>();
     var ids = Regex.Matches(html, @"(?<=type=""checkbox"" value="")\d+(?="")");
     foreach (Match id in ids)
     {
         html = CommonHelper.GetHtmlContent("http://www.118100.cn/v5/action/secweborder/v3/songsdata.do?songId="+id.Value+"&it=1");
         var json = (JObject) JsonConvert.DeserializeObject(html);
         try
         {
             var single = new SongResult
             {
                 SongId = id.Value,
                 Name = json["songName"].ToString(),
                 Artist = json["singerName"].ToString(),
                 AlbumArtist = json["singerName"].ToString(),
                 Album = json["album"].ToString(),
                 AlbumId = json["singerId"].ToString(),
                 Type = "IMusic",
                 BitRate = "320K",
                 PicUrl = json["singerPic"].ToString().Replace("95x95", "500x500"),
                 LqUrl = Encoding.Default.GetString(Convert.FromBase64String(json["zhengAddr"].ToString().Replace("imusic://",""))).Trim('A','Z'),
                 HqUrl = Encoding.Default.GetString(Convert.FromBase64String(json["ququAddr"].ToString().Replace("imusic://", ""))).Trim('A', 'Z'),
                 ExtHqUrl = Encoding.Default.GetString(Convert.FromBase64String(json["ququAddr"].ToString().Replace("imusic://", ""))).Trim('A', 'Z')
             };
             
             single.LrcUrl = "http://www.118100.cn/v5/action/common/lrcOutput.do?songName=" + single.Name +
                             "&singerName=" + single.Artist + "&type=lrc";
             single.CopyUrl = "http://www.musicuu.com/songurl/dx^320^" + single.SongId + ".mp3";
             list.Add(single);
         }
         catch (Exception exception)
         {
             Console.Write(exception.ToString());
         }
     }
     return list;
 } 
Example #17
0
        /// <summary>
        /// 根据艺术家和歌名得到歌曲信息
        /// 用于获取虾米付费歌曲
        /// </summary>
        /// <param name="ar">艺术家</param>
        /// <param name="name">歌名</param>
        /// <returns></returns>
        public static SongResult GetXmSqUrl(string ar, string name)
        {
            var key  = ar + " - " + name;
            var list = Search(key, 1, 20);

            if (list == null)
            {
                return(null);
            }
            if (list.Songs.Count <= 0)
            {
                return(null);
            }
            var songs = list.Songs.Where(s => (s.SongName == name) && (s.ArtistName == ar)).ToList();
            var song  = new SongResult();

            if (songs.Count <= 0)
            {
                decimal max            = 0;
                var     index          = 0;
                var     stringcompute1 = new StringCompute();
                foreach (var songResult in list.Songs)
                {
                    stringcompute1.SpeedyCompute(key, song.ArtistName + " - " + songResult.SongName);
                    var rate = stringcompute1.ComputeResult.Rate;
                    if (rate < (decimal)0.8)
                    {
                        continue;
                    }
                    if (rate > max)
                    {
                        max  = rate;
                        song = list.Songs[index];
                    }
                    index++;
                }
            }
            else
            {
                song = songs[0];
            }
            return(song);
        }
Example #18
0
        private async Task CortanaResponseShowSong(SongResult info)
        {
            if (info == null)
            {
                await CompleteMessage("Right now... Nothing is playing");
            }
            else if (info.Loved)
            {
                var message = $"Now is playing: {info.Song}, from artist {info.Artist}, on album {info.Album}. You liked this song.";
                await CompleteMessage(message);
            }
            else
            {
                var message = $"Now is playing: {info.Song}, from artist {info.Artist}, on album {info.Album}. Do you like this song?";

                var userPrompt = new VoiceCommandUserMessage();
                userPrompt.DisplayMessage = userPrompt.SpokenMessage = message;

                var userReprompt = new VoiceCommandUserMessage();
                var prompt       = "Do you like this song?";
                userReprompt.DisplayMessage = userReprompt.SpokenMessage = prompt;

                var response = VoiceCommandResponse.CreateResponseForPrompt(userPrompt, userReprompt);
                var voiceCommandConfirmation = await voiceServiceConnection.RequestConfirmationAsync(response);

                if (voiceCommandConfirmation == null)
                {
                    response = VoiceCommandResponse.CreateResponse(userPrompt);
                    await voiceServiceConnection.ReportSuccessAsync(response);
                }
                else if (voiceCommandConfirmation.Confirmed)
                {
                    var service = new SmartHouseService();
                    var result  = await service.LoveSong();

                    await CompleteMessage(result?.Message);
                }
                else
                {
                    await CompleteMessage("");
                }
            }
        }
        private SongResult FindMatchInSearchResult(string searchStr, MusicBeeSong song, SearchResult response)
        {
            SongResult bestMatch = null;

            foreach (var songResult in response.Songs)
            {
                bool titleMatches  = song.Title.ToLower() == songResult.Title.ToLower();
                bool artistMatches = songResult.Artists.Exists(x => x.Name.ToLower() == song.Artist.ToLower());
                bool albumMatches  = song.Album.ToLower() == songResult.Album.Name.ToLower();
                if (titleMatches && artistMatches && albumMatches)
                {
                    // if we matched all three, likely this is the right track
                    bestMatch = songResult;
                    return(bestMatch);
                }
                else if ((titleMatches && artistMatches) || (titleMatches && albumMatches))
                {
                    // if two of them match, guessing this track is correct is
                    // probably better than just using the firstordefault, but keep looping hoping for a better track
                    bestMatch = songResult;
                    return(bestMatch);
                }
                else if (artistMatches && bestMatch == null)
                {
                    // if just the artist matches and we haven't found anything yet... this might be our best guess
                    bestMatch = songResult;
                }
            }

            //if (videoIdToAdd == null)
            //{
            //    var first = response.Songs.FirstOrDefault();

            //    if (first != null)
            //    {
            //        videoIdToAdd = first.VideoId;
            //        Log($"Didn't find a perfect match for {searchStr} for '{song.Title}' by '{song.Artist}', so using '{first.Title}' by '{first.Artists.FirstOrDefault().Name}' instead");
            //    }
            //}

            return(bestMatch);
        }
Example #20
0
 /// <summary>
 /// 根据艺术家和歌名得到歌曲信息
 /// 用于获取虾米付费歌曲
 /// </summary>
 /// <param name="ar">艺术家</param>
 /// <param name="name">歌名</param>
 /// <returns></returns>
 public static SongResult GetXmSqUrl(string ar, string name)
 {
     var key = ar + " - " + name;
     var list = Search(key, 1, 20);
     if (list == null)
     {
         return null;
     }
     if (list.Songs.Count <= 0)
     {
         return null;
     }
     var songs = list.Songs.Where(s => (s.SongName == name) && (s.ArtistName == ar)).ToList();
     var song = new SongResult();
     if (songs.Count <= 0)
     {
         decimal max = 0;
         var index = 0;
         var stringcompute1 = new StringCompute();
         foreach (var songResult in list.Songs)
         {
             stringcompute1.SpeedyCompute(key, song.ArtistName + " - " + songResult.SongName);
             var rate = stringcompute1.ComputeResult.Rate;
             if (rate < (decimal)0.8)
             {
                 continue;
             }
             if (rate > max)
             {
                 max = rate;
                 song = list.Songs[index];
             }
             index++;
         }
     }
     else
     {
         song = songs[0];
     }
     return song;
 }
        public static List<SongResult> GetResultsByKey(string key,int page)
        {
            var url = "https://api.vk.com/method/audio.search?q="+key+"&count=30&page"+page+"&https=0&access_token=6c2905fdc2c76b3c42e7a39951efcd1e7b00d54d834c1fa8580e9aae8e9f613cf61ce41ba8e2c47c752d3";
            var html = CommonHelper.GetHtmlContent(url);
            if (string.IsNullOrEmpty(html))
            {
                return null;
            }
            var json = (JObject)JsonConvert.DeserializeObject(html.Trim('(', ')'));
            if (Convert.ToInt32(json["response"][0]) <= 0)
            {
                return null;
            }
            var list = new List<SongResult>();
            var songs = json["response"];
            var index = 0;
            foreach (JToken song in songs)
            {
                if (index == 0)
                {
                    index++;
                    continue;
                }
                var single = new SongResult()
                {
                    SongId = song["aid"].ToString(),
                    Name = song["title"].ToString(),
                    Artist = song["artist"].ToString(),
                    AlbumArtist = song["artist"].ToString(),
                    AlbumId = "1990",
                    Type = "VK",
                    LqUrl = song["url"].ToString(),
                    HqUrl = song["url"].ToString(),
                    ExtHqUrl = song["url"].ToString()
                };

                list.Add(single);
            }
            return list;
        } 
Example #22
0
        private static string GetUrlFromThird(string id, string quality)
        {
            var singleSong = SearchSingle(id);
            var songListQq = MusicService.GetMusic("qq")
                             .SongSearch(singleSong.ArtistName + "-" + singleSong.SongName, 1, 30);
            SongResult song = null;

            if (songListQq != null)
            {
                song = songListQq.FirstOrDefault(t => CommonHelper.CompareStr(t.SongName, singleSong.SongName) &&
                                                 (CommonHelper.CompareStr(t.ArtistName, singleSong.ArtistName) || CommonHelper.CompareStr(t.AlbumName, singleSong.AlbumName)));
            }
            if (song == null)
            {
                var songList = MusicService.GetMusic("xm")
                               .SongSearch(singleSong.ArtistName + "-" + singleSong.SongName, 1, 30);
                song = songList.FirstOrDefault(t => CommonHelper.CompareStr(t.SongName, singleSong.SongName) &&
                                               (CommonHelper.CompareStr(t.ArtistName, singleSong.ArtistName) || CommonHelper.CompareStr(t.AlbumName, singleSong.AlbumName)));
                if (song == null)
                {
                    song = songListQq.FirstOrDefault(t => CommonHelper.CompareStr(t.SongName, singleSong.SongName));
                }
                if (song == null)
                {
                    song = songList.FirstOrDefault(t => CommonHelper.CompareStr(t.SongName, singleSong.SongName));
                }
            }
            if (song == null)
            {
                return("");
            }
            if (quality == "999000")
            {
                if (!string.IsNullOrEmpty(song.FlacUrl))
                {
                    return(song.FlacUrl);
                }
                if (!string.IsNullOrEmpty(song.ApeUrl))
                {
                    return(song.ApeUrl);
                }
                if (!string.IsNullOrEmpty(song.WavUrl))
                {
                    return(song.WavUrl);
                }
                if (!string.IsNullOrEmpty(song.SqUrl))
                {
                    return(song.SqUrl);
                }
                if (!string.IsNullOrEmpty(song.HqUrl))
                {
                    return(song.HqUrl);
                }
            }
            else if (quality == "320000" || quality == "192000")
            {
                if (!string.IsNullOrEmpty(song.SqUrl))
                {
                    return(song.SqUrl);
                }
            }
            return(song.LqUrl);
        }
Example #23
0
        private static List <SongResult> GetListByJson(JToken datas)
        {
            var list = new List <SongResult>();

            foreach (JToken j in datas)
            {
                var song = new SongResult
                {
                    SongId      = j["MUSICRID"].ToString().Replace("MUSIC_", ""),
                    SongName    = j["SONGNAME"].ToString(),
                    SongSubName = j["ALIAS"]?.ToString() ?? "",
                    SongLink    = "",

                    ArtistId      = j["ARTISTID"]?.ToString() ?? "",
                    ArtistName    = (j["ARTIST"]?.ToString() ?? "").Replace("&", ";"),
                    ArtistSubName = "",

                    AlbumId      = j["ALBUMID"]?.ToString() ?? "0",
                    AlbumName    = j["ALBUM"]?.ToString() ?? "",
                    AlbumSubName = "",
                    AlbumArtist  = (j["ARTIST"]?.ToString() ?? "").Replace("+", ";"),

                    Length  = CommonHelper.NumToTime(j["DURATION"]?.ToString() ?? "0"),
                    Size    = "",
                    BitRate = "128K",

                    FlacUrl = "",
                    ApeUrl  = "",
                    WavUrl  = "",
                    SqUrl   = "",
                    HqUrl   = "",
                    LqUrl   = "",
                    CopyUrl = "",

                    PicUrl = "",
                    LrcUrl = "",
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId    = "",
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = j["LANGUAGE"]?.ToString(),
                    Company  = j["COMPANY"]?.ToString(),
                    Year     = j["RELEASEDATE"]?.ToString(),
                    Disc     = "1",
                    TrackNum = "",
                    Type     = "kw"
                };
                if (string.IsNullOrEmpty(song.Year))
                {
                    try
                    {
                        song.Year = j["TIMESTAMP"].ToString().Substring(0, 10);
                    }
                    catch (Exception)
                    {
                        //
                    }
                }
                song.PicUrl = CommonHelper.GetSongUrl("kw", "320", song.SongId, "jpg");
                song.LrcUrl = CommonHelper.GetSongUrl("kw", "320", song.SongId, "lrc");
                var format = j["FORMATS"]?.ToString() ?? j["formats"].ToString();
                if (format.Contains("MP3128"))
                {
                    song.BitRate = "128K";
                    song.CopyUrl = song.LqUrl = CommonHelper.GetSongUrl("kw", "128", song.SongId, "mp3");
                }
                if (format.Contains("MP3192"))
                {
                    song.BitRate = "192K";
                    song.CopyUrl = song.HqUrl = CommonHelper.GetSongUrl("kw", "192", song.SongId, "mp3");
                }
                if (format.Contains("MP3H"))
                {
                    song.BitRate = "320K";
                    song.CopyUrl = song.SqUrl = CommonHelper.GetSongUrl("kw", "320", song.SongId, "mp3");
                }
                if (format.Contains("AL"))
                {
                    song.BitRate = "无损";
                    song.ApeUrl  = CommonHelper.GetSongUrl("kw", "1000", song.SongId, "ape");
                }
                if (format.Contains("MP4"))
                {
                    song.MvHdUrl = song.MvLdUrl = CommonHelper.GetSongUrl("kw", "1000", song.SongId, "mp4");
                }
                if (format.Contains("MV"))
                {
                    song.MvLdUrl = CommonHelper.GetSongUrl("kw", "1000", song.SongId, "mkv");
                }

                list.Add(song);
            }
            return(list);
        }
Example #24
0
        private List <SongResult> SearchCollect(string id)
        {
            var url  = "http://api.xiami.com/web?v=2.0&app_key=1&id=" + id + "&type=collectId&r=collect/detail";
            var html = CommonHelper.GetHtmlContent(url, 1, new Dictionary <string, string>
            {
                { "Referer", "http://m.xiami.com/" }
            });

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }
            try
            {
                var json  = JObject.Parse(html);
                var datas = json["data"]["songs"];
                var list  = new List <SongResult>();
                foreach (JToken j in datas)
                {
                    if (j["song_id"].ToString() == "0")
                    {
                        return(null);
                    }
                    var song = new SongResult
                    {
                        SongId      = j["song_id"].ToString(),
                        SongName    = j["song_name"].ToString(),
                        SongSubName = "",

                        ArtistId      = j["artist_id"].ToString(),
                        ArtistName    = j["singers"].ToString(),
                        ArtistSubName = "",

                        AlbumId      = j["album_id"].ToString(),
                        AlbumName    = j["album_name"].ToString(),
                        AlbumSubName = "",
                        AlbumArtist  = j["artist_name"].ToString(),

                        Length  = Convert.ToInt32(j["length"].ToString()),
                        BitRate = "320K",

                        FlacUrl = "",
                        ApeUrl  = "",
                        WavUrl  = "",
                        SqUrl   = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                        HqUrl   = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                        LqUrl   = j["listen_file"].ToString(),
                        CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                        SmallPic = j["album_logo"].ToString(),
                        PicUrl   = j["album_logo"].ToString().Replace("_1.", "_4."),
                        LrcUrl   = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "lrc"),
                        TrcUrl   = "",
                        KrcUrl   = "",

                        MvId    = j["mv_id"]?.ToString(),
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company  = "",
                        Year     = "",
                        Disc     = 1,
                        TrackNum = 0,
                        Type     = "xm"
                    };
                    if (string.IsNullOrEmpty(song.LqUrl))
                    {
                        song.LqUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3");
                    }
                    if (!string.IsNullOrEmpty(song.MvId))
                    {
                        if (song.MvId != "0")
                        {
                            song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                            song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                        }
                    }
                    list.Add(song);
                }
                return(list);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
 /// <summary>
 /// 根据SongIds获取歌曲信息
 /// 因为百度FM的解析一次只允许解析10个结果
 /// 当解析20个结果时要分批次
 /// </summary>
 /// <param name="ids">歌曲Id连接成的字符串,使用逗号隔开</param>
 /// <returns></returns>
 private static List<SongResult> GetResultsByIds(string ids)
 {
     var first = CommonHelper.GetHtmlContent("http://music.baidu.com/data/music/fmlink?songIds=" + ids + "&type=mp3&rate=320");
     if (string.IsNullOrEmpty(first))
     {
         return null;
     }
     var jobject = (JObject)JsonConvert.DeserializeObject(first);
     if (jobject.Count != 2)
     {
         return null;
     }
     if ((int)jobject["errorCode"] != 22000) return null;
     var results = jobject["data"]["songList"];
     if (!results.HasValues) return null;
     var list = new List<SongResult>();
     foreach (var result in results)
     {
         try
         {
             var song = new SongResult
             {
                 SongId =result["songId"].ToString(),
                 Name = result["songName"].ToString(),
                 Album = result["albumName"].ToString(),
                 AlbumId = result["albumId"].ToString(),
                 AlbumArtist = result["artistName"].ToString(),
                 Artist = result["artistName"].ToString(),
                 PicUrl = result["songPicRadio"].ToString(),
                 LrcUrl = "http://fm.baidu.com" + result["lrcLink"],
                 Time = CommonHelper.NumToTime(result["time"].ToString()),
                 BitRate = result["rate"] + "kbps",
                 HqUrl = result["songLink"].ToString(),
                 LqUrl = result["songLink"].ToString(),
                 Size = Math.Round((Convert.ToDouble(result["size"]) / 1024 / 1024), 2) + "MB",
                 Type = "Baidu"
             };
             song.CopyUrl = "http://www.musicuu.com/songurl/bd^320^" + song.SongId + ".mp3";
             list.Add(song);
         }
         catch (Exception)
         {
             Console.Write("");
         }
     }
     var html = CommonHelper.GetHtmlContent("http://music.baidu.com/data/music/fmlink?songIds=" + ids + "&type=flac");
     if (string.IsNullOrEmpty(html))
     {
         return list;
     }
     var flac = (JObject)JsonConvert.DeserializeObject(html);
     if (flac.Count != 2)
     {
         return list;
     }
     if ((int)flac["errorCode"] != 22000) return null;
     var wusuns = flac["data"]["songList"];
     if (!results.HasValues) return list;
     var i = 0;
     foreach (var wusun in wusuns)
     {
         if (string.IsNullOrEmpty(wusun["songLink"].ToString()))
         {
             i++;
             continue;
         }
         list[i].ExtHqUrl = wusun["songLink"].ToString();
         list[i].BitRate = wusun["rate"] + "kbps";
         i++;
     }
     return list;
 }
Example #26
0
        private static List <SongResult> GetResultsByIds(string ids, int type)
        {
            var albumUrl = "http://www.xiami.com/song/playlist/id/" + ids + "/type/" + type + "/cat/json";
            var html     = CommonHelper.GetHtmlContent(albumUrl);

            if (string.IsNullOrEmpty(html) || html.Contains("应版权方要求,没有歌曲可以播放"))
            {
                return(null);
            }
            var list = new List <SongResult>();

            try
            {
                var json = JObject.Parse(html);
                var data = json["data"]["trackList"];
                if (string.IsNullOrEmpty(data.ToString()))
                {
                    return(null);
                }
                foreach (var j in data)
                {
                    try
                    {
                        var song = new SongResult
                        {
                            SongId      = j["songId"].ToString(),
                            SongName    = j["songName"].ToString().HtmlDecode(),
                            SongSubName = j["subName"]?.ToString().HtmlDecode(),
                            SongLink    = "http://www.xiami.com/song/" + j["song_id"],

                            ArtistId      = j["artistId"].ToString(),
                            ArtistName    = j["singers"].ToString().HtmlDecode(),
                            ArtistSubName = j["artist_sub_title"]?.ToString().HtmlDecode(),

                            AlbumId      = j["albumId"].ToString(),
                            AlbumName    = j["album_name"].ToString().HtmlDecode(),
                            AlbumSubName = j["album_sub_title"]?.ToString().HtmlDecode(),
                            AlbumArtist  = j["artist"].ToString().HtmlDecode(),

                            Length  = Convert.ToInt32(j["length"].ToString()),
                            BitRate = "128K",

                            FlacUrl = "",
                            ApeUrl  = "",
                            WavUrl  = "",
                            SqUrl   = "",
                            HqUrl   = "",
                            LqUrl   = Jurl(j["location"].ToString()),
                            CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                            SmallPic = ("http://img.xiami.net/" + j["album_logo"]),
                            PicUrl   = ("http://img.xiami.net/" + j["album_logo"]).Replace("_1.", "_4."),

                            LrcUrl = j["lyric"].ToString(),
                            TrcUrl = "",
                            KrcUrl = j["lyric_karaok"]?.ToString(),

                            MvId    = j["mvUrl"]?.ToString(),
                            MvHdUrl = "",
                            MvLdUrl = "",

                            Language = "",
                            Company  = "",
                            Year     = "",
                            Disc     = Convert.ToInt32(j["cd_serial"].ToString()),
                            TrackNum = Convert.ToInt32(j["track"].ToString()),
                            Type     = "xm"
                        };
                        if (j["purview"] != null)
                        {
                            song.BitRate = "320K";
                            song.SqUrl   = song.HqUrl = j["purview"]["filePath"]?.ToString();
                        }
                        if (!string.IsNullOrEmpty(song.MvId))
                        {
                            if (song.MvId != "0")
                            {
                                song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                                song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                            }
                        }
                        if (!string.IsNullOrEmpty(j["ttpodId"]?.ToString()))
                        {
                            song.BitRate = "320K";
                            song.HqUrl   = CommonHelper.GetSongUrl("tt", "192", j["ttpodId"].ToString(), "mp3");
                            song.SqUrl   = CommonHelper.GetSongUrl("tt", "320", j["ttpodId"].ToString(), "mp3");
                        }
                        list.Add(song);
                    }
                    catch (Exception ex)
                    {
                        CommonHelper.AddLog(ex.ToString());
                    }
                }
                return(list);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Example #27
0
        private CollectResult SearchCollect(string id)
        {
            var url = "http://api.xiami.com/web?v=2.0&app_key=1&id=188126468&type=collectId&r=collect/detail";
            var html = CommonHelper.GetHtmlContent(url, 1, new Dictionary<string, string>
            {
                {"Referer", "http://m.xiami.com/"}
            });
            var result = new CollectResult
            {
                ErrorCode = 200,
                ErrorMsg = "OK",
                CollectId = id,
                CollectLink = "http://www.xiami.com/collect/"+id,
                Page = 1,
                Songs = new List<SongResult>()
            };
            if (string.IsNullOrEmpty(html))
            {
                result.ErrorCode = 300;
                result.ErrorMsg = "获取歌单信息失败";
                return result;
            }
            try
            {
                var json = JObject.Parse(html);
                var datas = json["data"]["songs"];
                result.CollectName = json["data"]["collect_name"].ToString();
                result.CollectLogo = json["data"]["logo"].ToString().Replace("_1.", "_4.");
                result.SongSize = json["data"]["songs_count"].Value<int>();
                result.Date = CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["data"]["gmt_create"].ToString())).ToString("yyyy-MM-dd");
                result.CollectMaker = json["data"]["user_name"].ToString();
                result.Tags = json["data"]["tags"].First?.ToString();
                foreach (JToken j in datas)
                {
                    if (j["song_id"].ToString() == "0")
                    {
                        return null;
                    }
                    var song = new SongResult
                    {
                        SongId = j["song_id"].ToString(),
                        SongName = j["song_name"].ToString(),
                        SongSubName = "",

                        ArtistId = j["artist_id"].ToString(),
                        ArtistName = j["singers"].ToString(),
                        ArtistSubName = "",

                        AlbumId = j["album_id"].ToString(),
                        AlbumName = j["album_name"].ToString(),
                        AlbumSubName = "",
                        AlbumArtist = j["artist_name"].ToString(),

                        Length = CommonHelper.NumToTime(j["length"].ToString()),
                        Size = "",
                        BitRate = "320K",

                        FlacUrl = "",
                        ApeUrl = "",
                        WavUrl = "",
                        SqUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                        HqUrl = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                        LqUrl = j["listen_file"].ToString(),
                        CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                        PicUrl = j["album_logo"].ToString().Replace("_1.", "_4."),
                        LrcUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "lrc"),
                        TrcUrl = "",
                        KrcUrl = "",

                        MvId = j["mv_id"]?.ToString(),
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company = "",
                        Year = "",
                        Disc = "1",
                        TrackNum = "",
                        Type = "xm"
                    };
                    if (string.IsNullOrEmpty(song.LqUrl))
                    {
                        song.LqUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3");
                    }
                    if (!string.IsNullOrEmpty(song.MvId))
                    {
                        if (song.MvId != "0")
                        {
                            song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                            song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                        }
                    }
                    result.Songs.Add(song);
                }
                return result;
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg = "解析歌单出现异常";
                return result;
            }
        }
Example #28
0
 private static void GetSongDetials(SongResult song)
 {
     var url = "http://www.xiami.com/app/xiating/album?spm=0.0.0.0.L6k2wP&id=" + song.AlbumId + "&uid=0";
     var html = CommonHelper.GetHtmlContent(url);
     if (string.IsNullOrEmpty(html))
     {
         return;
     }
     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;
     }
     song.AlbumName = match.Groups[1].Value;
     song.AlbumSubName = match.Groups[2].Value;
     song.AlbumArtist = match.Groups[3].Value;
     song.Language = match.Groups[4].Value;
     song.Company = match.Groups[5].Value;
     song.Year = match.Groups[6].Value.Replace("年", "-").Replace("月", "-").Replace("日", "");
     var discs = Regex.Matches(html, @"(?<=<ul class=""playlist)[\s\S]+?(?=</ul>)");
     for (int i = 0; i < discs.Count; i++)
     {
         match = Regex.Match(discs[i].Value, @"(?<=rel=""" + song.SongId + @"""[\s\S]+?list_index"">)\d+(?=[\s\S]+?id=" + song.SongId + ")");
         if (!string.IsNullOrEmpty(match.Value))
         {
             song.TrackNum = match.Value;
             song.Disc = (i + 1).ToString();
         }
     }
 }
Example #29
0
        private ArtistResult SearchArtist(string id,int page)
        {
            var result = new ArtistResult
            {
                ErrorCode = 200,
                ErrorMsg = "OK",
                ArtistLink = "http://www.xiami.com/artist/"+id,
                Page = page,
                Songs = new List<SongResult>()
            };
            var html = CommonHelper.PostData("http://www.xiami.com/app/xiating/artist-song",
                new Dictionary<string, string>
                {
                    {"id", id},
                    {"uid", "0"},
                    {"callback", "xiami"},
                    {"page", page.ToString()},
                });
            if (string.IsNullOrEmpty(html))
            {
                result.ErrorCode = 300;
                result.ErrorMsg = "获取热门歌曲信息失败";
                return result;
            }
            try
            {
                var json = JObject.Parse(html);
                var data = json["data"];
                foreach (var j in data)
                {
                    try
                    {
                        if (j["song_status"].ToString() != "0")
                        {
                            continue;   //滤除下架歌曲
                        }
                        var song = new SongResult
                        {
                            SongId = j["song_id"].ToString(),
                            SongName = j["name"].ToString(),
                            SongSubName = j["sub_title"]?.ToString(),
                            SongLink = "http://www.xiami.com/song/" + j["song_id"],

                            ArtistId = j["artist_id"].ToString(),
                            ArtistName = j["singers"].ToString(),
                            ArtistSubName = j["artist_sub_title"]?.ToString(),

                            AlbumId = j["album_id"].ToString(),
                            AlbumName = j["album_name"]?.ToString(),
                            AlbumSubName = j["album_sub_title"]?.ToString(),
                            AlbumArtist = j["artist_name"].ToString(),

                            Length = j["songtime"].ToString(),
                            Size = "",
                            BitRate = "320K",

                            FlacUrl = "",
                            ApeUrl = "",
                            WavUrl = "",
                            SqUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                            HqUrl = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                            LqUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3"),
                            CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                            PicUrl = ("http://img.xiami.net/" + j["album_logo"]).Replace("_1.", "_4."),
                            LrcUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "lrc"),
                            TrcUrl = "",
                            KrcUrl = "",

                            MvId = j["mv_id"]?.ToString(),
                            MvHdUrl = "",
                            MvLdUrl = "",

                            Language = "",
                            Company = "",
                            Year = "",
                            Disc = j["cd_serial"]?.ToString(),
                            TrackNum = j["track"]?.ToString(),
                            Type = "xm"
                        };
                        if (!string.IsNullOrEmpty(song.MvId))
                        {
                            if (song.MvId != "0")
                            {
                                song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                                song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                            }
                        }
                        result.Songs.Add(song);
                    }
                    catch (Exception ex)
                    {
                        CommonHelper.AddLog(ex);
                    }
                }
            }
            catch (Exception)
            {
                result.ErrorCode = 500;
                result.ErrorMsg = "解析歌曲时发生错误";
            }

            html =
                CommonHelper.GetHtmlContent(
                    "http://api.xiami.com/web?id=" + id + "&r=artist%2Fdetail&app_key=09bef203bfa02bfbe3f1cfd7073cb0f3",
                    1, new Dictionary<string, string>
                    {
                        {"Referer", "http://m.xiami.com/"}
                    });
            if (string.IsNullOrEmpty(html))
            {
                return result;
            }
            try
            {
                var json = JObject.Parse(html);
                result.AlbumSize = json["data"]["albums_count"].Value<int>();
                result.SongSize = -1;
                result.ArtistLogo = json["data"]["logo"].ToString().Replace("_1.", "_4.");
                result.TransName = json["data"]["english_name"]?.ToString();
                result.ArtistInfo = string.Format("性别:{0};地区:{1};唱片公司:{3}",
                    json["data"]["gender"].ToString() == "F" ? "女" : "男", json["data"]["area"].ToString(),
                    json["data"]["company"].ToString());
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
            }
            return result;
        }
        /// <summary>
        /// 通过Ids获取搜索结果
        /// </summary>
        /// <param name="ids">歌曲Id的组合</param>
        /// <param name="type">类型 0-song 1-album 2-artist 3-collect</param>
        /// <returns>歌曲结果</returns>
        private static List<SongResult> GetResultsByIds(string ids, int type)
        {
            var albumUrl = "http://www.xiami.com/song/playlist/id/" + ids + "/type/"+type+"/cat/json";
            var html = CommonHelper.GetHtmlContent(albumUrl);
            if (string.IsNullOrEmpty(html))
            {
                return null;
            }
            var jobject = new JObject();
            try
            {
                jobject = (JObject)JsonConvert.DeserializeObject(html);
            }
            catch (Exception ex)
            {
                Console.Write(ex.ToString());
            }
            
            var dataList = jobject["data"]["trackList"];

            if (string.IsNullOrEmpty(dataList.ToString()))
            {
                return null;
            }

            var match = Regex.Match("","");
            var pageHtml = "";
            if (type == 1)
            {
                var albumPage = "http://www.xiami.com/album/" + ids.Trim();
                pageHtml = CommonHelper.GetHtmlContent(albumPage);
                match = Regex.Match(pageHtml, @"(?<=艺人[\s\S]+?artist/\d+[^>]+>)([^<]+)(?:<[\s\S]+?语种[\s\S]+?valign=""top"">)([^<]+)(?:[\s\S]+?唱片公司[\s\S]+?target=""_blank"">)([^<]+)(?:[\s\S]+?发行时间:[\s\S]+?valign=""top"">)([^<]+)");
            }
            InitXiamiVip();
            var list = new List<SongResult>();
            foreach (JToken data in dataList)
            {
                var sr = new SongResult
                {
                    Album = CheckIsInValidate(System.Web.HttpUtility.HtmlDecode(data["album_name"].ToString())),
                    AlbumId = data["album_id"].ToString(),
                    Artist = CheckIsInValidate(System.Web.HttpUtility.HtmlDecode(data["artist"].ToString())),
                    SongId = data["song_id"].ToString(),
                    Name = CheckIsInValidate(System.Web.HttpUtility.HtmlDecode(data["title"].ToString())),
                    LqUrl = Jurl(data["location"].ToString()),
                    LrcUrl = data["lyric_url"].ToString(),
                    PicUrl = data["album_pic"].ToString(),
                    Time = CommonHelper.NumToTime(data["length"].ToString()),
                    Type = "Xiami"
                };
                if (type != 1)
                {
                    var albumPage = "http://www.xiami.com/album/" + sr.AlbumId.Trim();
                    pageHtml = CommonHelper.GetHtmlContent(albumPage);
                    match = Regex.Match(pageHtml, @"(?<=艺人[\s\S]+?artist/\d+[^>]+>)([^<]+)(?:<[\s\S]+?语种[\s\S]+?valign=""top"">)([^<]+)(?:[\s\S]+?唱片公司[\s\S]+?target=""_blank"">)([^<]+)(?:[\s\S]+?发行时间:[\s\S]+?valign=""top"">)([^<]+)");
                }
                var trackM = Regex.Match(pageHtml, @"(?<=trackid"">)(\d+)(?=</td>\s*<td class=""song_name"">\s*<a\s*href=""/song/"+sr.SongId+ ")");

                sr.AlbumArtist = CheckIsInValidate(match.Groups[1].Value);
                sr.Language = match.Groups[2].Value;
                sr.Company = match.Groups[3].Value;
                sr.Year = match.Groups[4].Value;
                sr.TrackNum = trackM.Groups[1].Value.Trim().PadLeft(2, '0');
                if (string.IsNullOrEmpty(sr.AlbumArtist))
                {
                    sr.AlbumArtist = sr.Artist.Contains(";") ? sr.Artist.Split(';')[0].Trim() : sr.Artist;
                }

                sr.HqUrl = GetHqUrl(sr.SongId);
                if (string.IsNullOrEmpty(sr.HqUrl))
                {
                    sr.BitRate = "128K";
                    sr.ExtHqUrl = sr.HqUrl = sr.LqUrl;
                }
                else
                {
                    sr.BitRate = !sr.HqUrl.Contains("m5") ? "320K" : "128K";
                    sr.ExtHqUrl = sr.HqUrl;
                }
                sr.CopyUrl = "http://www.musicuu.com/songurl/xm^320^" + sr.SongId + ".mp3";
                if (sr.BitRate == "128K")
                {
                    sr.ExtHqUrl = sr.HqUrl = sr.LqUrl = sr.CopyUrl;
                }
                sr.Artist = System.Web.HttpUtility.HtmlDecode(sr.Artist);
                sr.Name = System.Web.HttpUtility.HtmlDecode(sr.Name);
                sr.AlbumArtist = System.Web.HttpUtility.HtmlDecode(sr.AlbumArtist);
                sr.Album = System.Web.HttpUtility.HtmlDecode(sr.Album);
                list.Add(sr);
            }

            return list;
        }
        public static string GetAlbumInfo(SongResult srResult)
        {
            var albumPage = "http://www.xiami.com/web/album/id/" + srResult.AlbumId.Trim();
            var pageHtml = System.Web.HttpUtility.HtmlDecode(CommonHelper.GetHtml(albumPage, _cookieContainer));
            if (string.IsNullOrEmpty(pageHtml))
            {
                return "";
            }
            var match = Regex.Match(pageHtml, @"(?<=演唱者[\s\S]+?>)([\s\S]+?)(?:</a></li>\s*<li>语种:)(.+)(?:</li>\s*<li>唱片公司:)([\s\S]+?)(?:</li>\s*<li>发行时间:)(.+)(?=</li>)");
            var sb = new StringBuilder();
            sb.AppendLine(string.Format("==={0}===", srResult.Album));
            sb.AppendLine("");
            sb.AppendLine(string.Format("演唱者:{0}", match.Groups[1].Value));
            sb.AppendLine(string.Format("语种:{0}", match.Groups[2].Value));
            sb.AppendLine(string.Format("唱片公司:{0}", match.Groups[3].Value));
            sb.AppendLine(string.Format("发行时间:{0}", string.IsNullOrEmpty(srResult.Year) ? match.Groups[4].Value : srResult.Year));
            sb.AppendLine("");
            sb.AppendLine("专辑介绍");
            sb.AppendLine("");
            sb.AppendLine("===歌曲列表===");
            sb.AppendLine("");

            var cds = Regex.Matches(pageHtml, @"(?<=strong>)CD[\S\s]+?(?=</strong>)");

            var a = 0;

            foreach (Match cd in cds)
            {
                a++;
                sb.AppendLine(string.Format("==={0}===", cd.Value));

                if (cds.Count > 1)
                {
                    string regStr;
                    if (a == cds.Count)
                    {
                        regStr = "CD" + a + @"[\s\S]+";
                    }
                    else
                    {
                        regStr = "CD" + a + @"[\s\S]+?" + "CD" + (a+1);
                    }
                    var myText = Regex.Match(pageHtml, regStr).Value;
                    var matches = Regex.Matches(myText, @"(?<=web/song/id/\d+"">)[\S\s]+?(?=</a></li>)");
                    foreach (Match match1 in matches)
                    {
                        sb.AppendLine(match1.Value);
                    }
                }
                else
                {
                    var matches = Regex.Matches(pageHtml, @"(?<=web/song/id/\d+"">)[\S\s]+?(?=</a></li>)");
                    foreach (Match match1 in matches)
                    {
                        sb.AppendLine(match1.Value);
                    }
                }

                sb.AppendLine("");
            }

            return sb.ToString();
        }
Example #32
0
        private static List <SongResult> GetListByJson(JToken songs, bool isArtist = false)
        {
            if (songs == null)
            {
                return(null);
            }
            var list = new List <SongResult>();

            foreach (JToken token in songs)
            {
                var j  = isArtist ? token["musicData"] : token;
                var ar =
                    j["singer"].Aggregate("", (current, fJToken) => current + fJToken["name"].ToString() + ";")
                    .TrimEnd(';');
                var song = new SongResult
                {
                    SongId      = j["songid"].ToString(),
                    SongName    = j["songname"].ToString(),
                    SongSubName = "",
                    SongLink    = "http://y.qq.com/#type=song&mid=" + j["songmid"],

                    ArtistId      = j["singer"].First?["id"]?.ToString(),
                    ArtistName    = ar,
                    ArtistSubName = "",

                    AlbumId      = j["albummid"].ToString(),
                    AlbumName    = j["albumname"].ToString(),
                    AlbumSubName = "",
                    AlbumArtist  = j["singer"].First?["name"].ToString(),

                    Length  = CommonHelper.NumToTime(j["interval"].ToString()),
                    Size    = "",
                    BitRate = "128K",

                    FlacUrl = "",
                    ApeUrl  = "",
                    WavUrl  = "",
                    SqUrl   = "",
                    HqUrl   = "",
                    LqUrl   = "",
                    CopyUrl = "",

                    PicUrl = "",
                    LrcUrl = CommonHelper.GetSongUrl("qq", "128", j["songid"].ToString(), "lrc"),
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId    = j["vid"].ToString(),
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = "",
                    Company  = "",
                    Year     = j["pubtime"] == null ? "" : CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(j["pubtime"].ToString())).ToString("yyyy-MM-dd"),
                    Disc     = "1",
                    TrackNum = j["belongCD"]?.ToString(),
                    Type     = "qq"
                };
                var mid = j["strMediaMid"]?.ToString() ?? j["songmid"].ToString();
                if (j["size128"].ToString() != "0")
                {
                    song.BitRate = "128K";
                    song.LqUrl   = CommonHelper.GetSongUrl("qq", "128", mid, "mp3");
                }
                if (j["sizeogg"].ToString() != "0")
                {
                    song.BitRate = "192K";
                    song.HqUrl   = "http://stream.qqmusic.tc.qq.com/" + (Convert.ToInt32(song.SongId) + 40000000) + ".ogg";
                }
                if (j["size320"].ToString() != "0")
                {
                    song.BitRate = "320K";
                    song.SqUrl   = CommonHelper.GetSongUrl("qq", "320", mid, "mp3");
                }
                if (j["sizeape"].ToString() != "0")
                {
                    song.BitRate = "无损";
                    song.ApeUrl  = "http://stream.qqmusic.tc.qq.com/A000" + mid + ".ape";
                }
                if (j["sizeflac"].ToString() != "0")
                {
                    song.BitRate = "无损";
                    song.FlacUrl = "http://stream.qqmusic.tc.qq.com/F000" + mid + ".flac";
                }
                song.CopyUrl = CommonHelper.GetSongUrl("qq", "320", mid, "mp3");
                if (!string.IsNullOrEmpty(song.MvId))
                {
                    song.MvHdUrl = CommonHelper.GetSongUrl("qq", "hd", song.MvId, "mp4");
                    song.MvLdUrl = CommonHelper.GetSongUrl("qq", "ld", song.MvId, "mp4");
                }
                song.PicUrl = "http://i.gtimg.cn/music/photo/mid_album_500/" + song.AlbumId[song.AlbumId.Length - 2] +
                              "/" + song.AlbumId[song.AlbumId.Length - 1] + "/" + song.AlbumId + ".jpg";
                list.Add(song);
            }
            return(list);
        }
Example #33
0
        private static List <SongResult> Search(string key, int page, int size)
        {
            key = key.Replace("\"", "");
            var text = "keyword=" + key + "&" + "pageNo=" + (page - 1) + "&" + "pageSize=" + size + "&" + "type=TRACK";
            var url  = "http://api.sonyselect.com.cn/es/search/v1/android/?sign=" + GetDes3EncryptedText(text);
            var data =
                "{\"content\":{\"type\":\"TRACK\",\"pageSize\":\"" + size + "\",\"pageNo\":\"" + (page - 1) + "\",\"keyword\":\"" + key + "\"},\"header\":{\"sdkNo\":\"4.2.2\",\"model\":\"X9Plus\",\"manufacturer\":\"vivo\",\"imei\":\"133524532901500\"}}";
            var html = CommonHelper.PostData(url, new Dictionary <string, string> {
                { "JSON", data }
            }, 1);

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

            if (json["content"]["trackPage"]["totalElements"].Value <int>() <= 0)
            {
                return(null);
            }
            var datas = json["content"]["trackPage"]["content"];
            var list  = new List <SongResult>();

            foreach (JToken j in datas)
            {
                try
                {
                    var song = new SongResult
                    {
                        SongId      = j["id"].ToString(),
                        SongName    = j["name"].ToString(),
                        SongSubName = "",
                        SongLink    = "",

                        ArtistId      = j["albums"]?.First?["artistId"].ToString() ?? "",
                        ArtistName    = j["albums"]?.First?["aritst"].ToString() ?? "",
                        ArtistSubName = "",

                        AlbumId      = j["albums"]?.First?["id"].ToString() ?? "0",
                        AlbumName    = j["albums"]?.First?["name"].ToString() ?? "",
                        AlbumSubName = "",
                        AlbumArtist  = j["albums"]?.First?["aritst"].ToString() ?? "",

                        Length  = CommonHelper.TimeToNum(j["duration"].ToString()),
                        BitRate = "无损",

                        FlacUrl = "",
                        ApeUrl  = "",
                        WavUrl  = "",
                        SqUrl   = "",
                        HqUrl   = "",
                        LqUrl   = "",
                        CopyUrl = "",

                        SmallPic = j["albums"]?.First?["smallIcon"].ToString() ?? "",
                        PicUrl   = j["albums"]?.First?["largeIcon"].ToString() ?? "",

                        LrcUrl = "",
                        TrcUrl = "",
                        KrcUrl = "",

                        MvId    = "",
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company  = "",
                        Year     = j["createTime"]?.ToString(),
                        Disc     = 1,
                        TrackNum = 0,
                        Type     = "sn"
                    };
                    if (j["auditionUrl"] != null)
                    {
                        var link = j["auditionUrl"].ToString();
                        song.LqUrl   = song.HqUrl = song.SqUrl = song.CopyUrl = link;
                        song.FlacUrl = CommonHelper.GetSongUrl("sn", CommonHelper.EncodeBase64(Encoding.UTF8, j["downloadUrl"].ToString()), song.SongId, "flac");

//                        link = link.Replace("/Audition/", "/Audio/").Replace(".mp3", "");
//                        if (j["downloadUrl"] != null)
//                        {
//                            if (j["downloadUrl"].ToString().StartsWith("http"))
//                            {
//                                link = j["downloadUrl"] + "/44100/001.flac";
//                            }
//                        }
//                        if (link.Contains(".flac"))
//                        {
//                            song.FlacUrl = link;
//                        }
//                        else if (link.Contains(".ape"))
//                        {
//                            song.ApeUrl = link;
//                        }
//                        else
//                        {
//                            song.WavUrl = link;
//                        }
                    }
                    list.Add(song);
                }
                catch (Exception e)
                {
                    CommonHelper.AddLog(j.ToString());
                    CommonHelper.AddLog(e.ToString());
                }
            }
            return(list);
        }
 public static List<SongResult> GetBResultById(string id)
 {
     var url = "http://v.xue.taobao.com/learn.htm?courseId=" + id;
     var html = CommonHelper.GetGbkHtml(url);
     if (string.IsNullOrEmpty(html))
     {
         return null;
     }
     var jsonStr = Regex.Match(html, @"(?<=tx_learn_config\s*=\s*)({[\s\S]+?}})(?=;)").Value;
     if (string.IsNullOrEmpty(jsonStr))
     {
         return null;
     }
     var json = (JObject) JsonConvert.DeserializeObject(jsonStr);
     var lessons = json["outline"]["chapters"].First["sections"];
     var album = json["course"]["title"].ToString();
     var artist = json["course"]["shopName"].ToString();
     var list = new List<SongResult>();
     var index = 1;
     foreach (JToken lesson in lessons)
     {
         var song = new SongResult
         {
             SongId = lesson["resources"].First["link"].ToString(),
             Name = lesson["resources"].First["title"].ToString(),
             AlbumId = lesson["courseId"].ToString(),
             Time = lesson["lessonLengthStr"].ToString(),
             Album = album,
             AlbumArtist = artist,
             Artist = artist,
             TrackNum = index.ToString(),
             Type = "TB"
         };
         index++;
         var video =
             CommonHelper.GetHtmlContent("http://cloud.video.taobao.com/videoapi/info.php?vid=" + song.SongId);
         var matches = Regex.Matches(video,
             @"(?<=video_url>)([^<]+)(?:</video_url><type>)(\w+)(?:</type>[\s\S]+?<bitrate>)(\d+)(?:</bitrate><length>)(\d+)");
         foreach (Match match in matches)
         {
             switch (match.Groups[2].Value)
             {
                 case "hd":
                     song.ExtHqUrl = match.Groups[1].Value + "$" + match.Groups[4].Value;
                     if (string.IsNullOrEmpty(song.BitRate))
                     {
                         song.BitRate = match.Groups[3].Value + "K";
                     }
                     else
                     {
                         if (Convert.ToInt32(song.BitRate.Replace("K", "")) < Convert.ToInt32(match.Groups[3].Value))
                         {
                             song.BitRate = match.Groups[3].Value + "K";
                         }
                     }
                     break;
                 case "ud":
                     song.CopyUrl = match.Groups[1].Value + "$" + match.Groups[4].Value;
                     if (string.IsNullOrEmpty(song.BitRate))
                     {
                         song.BitRate = match.Groups[3].Value + "K";
                     }
                     break;
                 case "sd":
                     song.HqUrl = match.Groups[1].Value + "$" + match.Groups[4].Value;
                     if (string.IsNullOrEmpty(song.BitRate))
                     {
                         song.BitRate = match.Groups[3].Value + "K";
                     }
                     else
                     {
                         if (Convert.ToInt32(song.BitRate.Replace("K","")) < Convert.ToInt32(match.Groups[3].Value))
                         {
                             song.BitRate = match.Groups[3].Value + "K";
                         }
                     }
                     break;
                 case "ld":
                     song.LqUrl = match.Groups[1].Value + "$" + match.Groups[4].Value;
                     if (string.IsNullOrEmpty(song.BitRate))
                     {
                         song.BitRate = match.Groups[3].Value + "K";
                     }
                     break;
             }
         }
         list.Add(song);
     }
     return list;
 }
Example #35
0
        public static List <SongResult> Search(string key, int page)
        {
            var url  = "http://www.xiami.com/app/xiating/search-song2?key=" + key + "&uid=0&callback=xiami&page=" + page;
            var html = CommonHelper.GetHtmlContent(url);

            if (string.IsNullOrEmpty(html) || html == "null" || html.Contains("无法在虾米资料库中得到结果"))
            {
                return(null);
            }
            try
            {
                var json = JObject.Parse(html);
                var data = json["data"];
                var list = new List <SongResult>();
                foreach (var j in data)
                {
                    try
                    {
                        var song = new SongResult
                        {
                            SongId      = j["songId"].ToString(),
                            SongName    = j["songName"].ToString(),
                            SongSubName = j["subName"]?.ToString(),
                            SongLink    = "http://www.xiami.com/song/" + j["songId"],

                            ArtistId      = j["artist"]["artistId"].ToString(),
                            ArtistName    = j["artist"]["artistName"].ToString(),
                            ArtistSubName = j["artist"]["alias"]?.ToString(),

                            AlbumId      = j["album"]["albumId"]?.ToString() ?? "0",
                            AlbumName    = j["album"]["albumName"]?.ToString() ?? "",
                            AlbumSubName = j["album"]["subTitle"]?.ToString() ?? "",
                            AlbumArtist  = j["album"]["artist"]?["artistName"].ToString() ?? j["artist"]["artistName"].ToString(),

                            Length  = Convert.ToInt32(Convert.ToDouble(j["length"].ToString())),
                            BitRate = "320K",

                            FlacUrl = "",
                            ApeUrl  = "",
                            WavUrl  = "",
                            SqUrl   = CommonHelper.GetSongUrl("xm", "320", j["songId"].ToString(), "mp3"),
                            HqUrl   = CommonHelper.GetSongUrl("xm", "192", j["songId"].ToString(), "mp3"),
                            LqUrl   = CommonHelper.GetSongUrl("xm", "128", j["songId"].ToString(), "mp3"),
                            CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["songId"].ToString(), "mp3"),

                            SmallPic = ("http://img.xiami.net/" + j["album_logo"]),
                            PicUrl   = ("http://img.xiami.net/" + j["album_logo"]).Replace("_1.", "_4."),

                            LrcUrl = CommonHelper.GetSongUrl("xm", "128", j["songId"].ToString(), "lrc"),
                            TrcUrl = "",
                            KrcUrl = "",

                            MvId    = j["mvId"]?.ToString(),
                            MvHdUrl = "",
                            MvLdUrl = "",

                            Language = j["album"]["language"]?.ToString() ?? "",
                            Company  = j["album"]["company"]?.ToString() ?? "",
                            Year     = string.IsNullOrEmpty(j["demoCreateTime"].ToString())?"" : CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(string.IsNullOrEmpty(j["demoCreateTime"].ToString()) ? "0" : j["demoCreateTime"].ToString()) / 1000).ToString("yyyy-MM-dd"),
                            Disc     = 1,
                            TrackNum = 0,
                            Type     = "xm"
                        };
                        int disc;
                        if (Int32.TryParse(j["cdSerial"].ToString(), out disc))
                        {
                            song.Disc = disc;
                        }
                        if (Int32.TryParse(j["track"].ToString(), out disc))
                        {
                            song.TrackNum = disc;
                        }
                        if (!string.IsNullOrEmpty(song.MvId))
                        {
                            if (song.MvId != "0")
                            {
                                song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                                song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                            }
                        }
                        foreach (JToken jToken in j["audios"])
                        {
                            switch (jToken["audioQualityEnum"].ToString())
                            {
                            case "LOW":
                                song.LqUrl = jToken["filePath"].ToString();
                                break;

                            case "LOSSLESS":
                                if (jToken["format"].ToString() == "flac")
                                {
                                    song.FlacUrl = jToken["filePath"].ToString();
                                }
                                else if (jToken["format"].ToString() == "wav")
                                {
                                    song.WavUrl = jToken["filePath"].ToString();
                                }
                                else
                                {
                                    song.ApeUrl = jToken["filePath"].ToString();
                                }
                                song.BitRate = "无损";
                                break;

                            case "HIGH":
                                song.HqUrl = song.SqUrl = jToken["filePath"].ToString();
                                break;
                            }
                        }
                        list.Add(song);
                    }
                    catch (Exception ex)
                    {
                        CommonHelper.AddLog(ex.ToString());
                    }
                }
                return(list);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex.ToString());
                return(null);
            }
        }
Example #36
0
        private static List <SongResult> GetListByJson(JToken datas)
        {
            var list = new List <SongResult>();

            foreach (JToken j in datas)
            {
                var song = new SongResult
                {
                    SongId      = j["hash"].ToString(),
                    SongName    = j["filename"].ToString(),
                    SongSubName = j["alias"]?.ToString(),
                    SongLink    = "",

                    ArtistId      = "",
                    ArtistName    = (j["singername"]?.ToString() ?? "").Replace("+", ";"),
                    ArtistSubName = "",

                    AlbumId      = j["album_id"]?.ToString() ?? "",
                    AlbumName    = j["album_name"]?.ToString() ?? "",
                    AlbumSubName = "",
                    AlbumArtist  = (j["singername"]?.ToString() ?? "").Replace("+", ";"),

                    Length  = CommonHelper.NumToTime(j["duration"].ToString()),
                    Size    = "",
                    BitRate = "128K",

                    FlacUrl = "",
                    ApeUrl  = "",
                    WavUrl  = "",
                    SqUrl   = "",
                    HqUrl   = "",
                    LqUrl   = "",
                    CopyUrl = "",

                    PicUrl = CommonHelper.GetSongUrl("kg", "320", j["hash"].ToString(), "jpg"),
                    LrcUrl = CommonHelper.GetSongUrl("kg", "320", j["hash"].ToString(), "lrc"),
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId    = "",
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = "",
                    Company  = "",
                    Year     = "",
                    Disc     = "1",
                    TrackNum = "",
                    Type     = "kg"
                };
                if (!string.IsNullOrEmpty(song.AlbumId))
                {
                    song.PicUrl = CommonHelper.GetSongUrl("kg", "320", song.AlbumId, "jpg");
                }
                if (string.IsNullOrEmpty(song.ArtistName))
                {
                    if (song.SongName.Contains("-"))
                    {
                        song.ArtistName = song.SongName.Substring(0, song.SongName.IndexOf('-')).Trim();
                        song.SongName   = song.SongName.Substring(song.SongName.IndexOf('-') + 1).Trim();
                    }
                }
                else
                {
                    var name = song.SongName.Substring(0, song.SongName.IndexOf('-')).Trim();
                    if (song.ArtistName.Trim() == name)
                    {
                        song.SongName = song.SongName.Substring(song.SongName.IndexOf('-') + 1).Trim();
                    }
                }

                if (!string.IsNullOrEmpty(j["mvhash"].ToString()))
                {
                    song.MvHdUrl = CommonHelper.GetSongUrl("kg", "hd", j["mvhash"].ToString(), "mp4");
                    song.MvLdUrl = CommonHelper.GetSongUrl("kg", "ld", j["mvhash"].ToString(), "mp4");
                }
                if (!string.IsNullOrEmpty(j["hash"].ToString()))
                {
                    song.BitRate = "128K";
                    song.CopyUrl = song.LqUrl = CommonHelper.GetSongUrl("kg", "128", j["hash"].ToString(), "mp3");
                }
                if (!string.IsNullOrEmpty(j["320hash"].ToString()))
                {
                    song.BitRate = "320K";
                    song.CopyUrl = song.SqUrl = CommonHelper.GetSongUrl("kg", "320", j["320hash"].ToString(), "mp3");
                }
                if (!string.IsNullOrEmpty(j["sqhash"].ToString()))
                {
                    song.BitRate = "无损";
                    song.FlacUrl = CommonHelper.GetSongUrl("kg", "1000", j["sqhash"].ToString(), "flac");
                }
                list.Add(song);
            }
            return(list);
        }
Example #37
0
        private static List <SongResult> GetLostAlbum(string id)
        {
            var url  = "http://api.xiami.com/web?id=" + id + "&r=album%2Fdetail&app_key=09bef203bfa02bfbe3f1cfd7073cb0f3";
            var html = CommonHelper.GetHtmlContent(url, 1, new Dictionary <string, string>
            {
                { "Referer", "http://m.xiami.com/" }
            });

            if (string.IsNullOrEmpty(html))
            {
                return(null);
            }
            var json  = JObject.Parse(html);
            var datas = json["data"]["songs"];
            var list  = new List <SongResult>();
            var index = 0;

            foreach (JToken j in datas)
            {
                index++;
                var song = new SongResult
                {
                    SongId      = j["song_id"].ToString(),
                    SongName    = j["song_name"].ToString(),
                    SongSubName = "",

                    ArtistId      = j["artist_id"].ToString(),
                    ArtistName    = j["singers"].ToString(),
                    ArtistSubName = "",

                    AlbumId      = j["album_id"].ToString(),
                    AlbumName    = j["album_name"].ToString(),
                    AlbumSubName = "",
                    AlbumArtist  = json["data"]["artist_name"].ToString(),

                    Length  = string.IsNullOrEmpty(j["songtime"]?.ToString()) ? 0 : Convert.ToInt32(j["songtime"].ToString()),
                    BitRate = "320K",

                    FlacUrl = "",
                    ApeUrl  = "",
                    WavUrl  = "",
                    SqUrl   = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                    HqUrl   = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                    LqUrl   = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3"),
                    CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                    SmallPic = j["album_logo"].ToString(),
                    PicUrl   = j["album_logo"].ToString().Replace("_1.", "_4."),

                    LrcUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "lrc"),
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId    = j["mv_id"]?.ToString(),
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = "",
                    Company  = "",
                    Year     = CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["data"]["gmt_publish"].ToString())).ToString("yyyy-MM-dd"),
                    Disc     = 1,
                    TrackNum = index,
                    Type     = "xm"
                };
                if (j["purview_roles"] != null)
                {
                    foreach (JToken jToken in j["purview_roles"])
                    {
                        switch (jToken["quality"].ToString())
                        {
                        case "l":
                            song.LqUrl = CommonHelper.GetSongUrl("xm", "128", song.SongId, "mp3");
                            break;

                        case "h":
                            song.HqUrl = song.SqUrl = CommonHelper.GetSongUrl("xm", "320", song.SongId, "mp3");
                            break;

                        case "s":
                            song.FlacUrl = CommonHelper.GetSongUrl("xm", "999", song.SongId, "flac");
                            song.BitRate = "无损";
                            break;
                        }
                    }
                }

                if (!string.IsNullOrEmpty(song.MvId))
                {
                    if (song.MvId != "0")
                    {
                        song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                        song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                    }
                }
                list.Add(song);
            }
            return(list);
        }
Example #38
0
        private static List<SongResult> GetResultsByIds(string ids, int type)
        {
            var albumUrl = "http://www.xiami.com/song/playlist/id/" + ids + "/type/" + type + "/cat/json";
            var html = CommonHelper.GetHtmlContent(albumUrl);
            if (string.IsNullOrEmpty(html) || html.Contains("应版权方要求,没有歌曲可以播放"))
            {
                return null;
            }
            var list = new List<SongResult>();
            try
            {
                var json = JObject.Parse(html);
                var data = json["data"]["trackList"];
                if (string.IsNullOrEmpty(data.ToString()))
                {
                    return null;
                }
                foreach (var j in data)
                {
                    try
                    {
                        var song = new SongResult
                        {
                            SongId = j["songId"].ToString(),
                            SongName = j["songName"].ToString(),
                            SongSubName = j["subName"]?.ToString(),
                            SongLink = "http://www.xiami.com/song/" + j["song_id"],

                            ArtistId = j["artistId"].ToString(),
                            ArtistName = j["singers"].ToString(),
                            ArtistSubName = j["artist_sub_title"]?.ToString(),

                            AlbumId = j["albumId"].ToString(),
                            AlbumName = j["album_name"].ToString(),
                            AlbumSubName = j["album_sub_title"]?.ToString(),
                            AlbumArtist = j["artist"].ToString(),

                            Length = CommonHelper.NumToTime(j["length"].ToString()),
                            Size = "",
                            BitRate = "320K",

                            FlacUrl = "",
                            ApeUrl = "",
                            WavUrl = "",
                            SqUrl = "",
                            HqUrl = "",
                            LqUrl = Jurl(j["location"].ToString()),
                            CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                            PicUrl = ("http://img.xiami.net/" + j["album_logo"]).Replace("_1.", "_4."),
                            LrcUrl = j["lyric"].ToString(),
                            TrcUrl = "",
                            KrcUrl = j["lyric_karaok"]?.ToString(),

                            MvId = j["mvUrl"]?.ToString(),
                            MvHdUrl = "",
                            MvLdUrl = "",

                            Language = "",
                            Company = "",
                            Year = "",
                            Disc = j["cd_serial"].ToString(),
                            TrackNum = j["track"].ToString(),
                            Type = "xm"
                        };
                        if (j["purview"] != null)
                        {
                            song.SqUrl = song.HqUrl = j["purview"]["filePath"]?.ToString();
                        }
                        if (!string.IsNullOrEmpty(song.MvId))
                        {
                            if (song.MvId != "0")
                            {
                                song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                                song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                            }
                        }
                        list.Add(song);
                    }
                    catch (Exception ex)
                    {
                        CommonHelper.AddLog(ex);
                    }
                }
                return list;
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                return null;
            }
        }
Example #39
0
        private List <SongResult> SearchArtist(string id, int page)
        {
            var text = "id=" + id + "&uid=0&callback=xiami&page=" + page;
            var html = CommonHelper.GetHtmlContent("http://www.xiami.com/app/xiating/artist-song?" + text);

            if (string.IsNullOrEmpty(html))
            {
                html = CommonHelper.GetHtmlContent("http://www.xiami.com/app/xiating/artist-song?" + text);
                if (string.IsNullOrEmpty(html))
                {
                    html = CommonHelper.GetHtmlContent("http://www.xiami.com/app/xiating/artist-song?" + text);
                    if (string.IsNullOrEmpty(html))
                    {
                        return(null);
                    }
                }
            }
            var json = JObject.Parse(html);
            var data = json["data"];
            var list = new List <SongResult>();

            foreach (var j in data)
            {
                try
                {
                    var song = new SongResult
                    {
                        SongId      = j["song_id"].ToString(),
                        SongName    = j["name"].ToString(),
                        SongSubName = j["singers"]?.ToString(),
                        SongLink    = "http://www.xiami.com/song/" + j["song_id"],

                        ArtistId      = j["artist_id"].ToString(),
                        ArtistName    = j["artist_name"].ToString(),
                        ArtistSubName = j["artist_sub_title"]?.ToString(),

                        AlbumId      = j["album_id"]?.ToString() ?? "0",
                        AlbumName    = j["album_name"]?.ToString() ?? "",
                        AlbumSubName = j["album_sub_title"]?.ToString(),
                        AlbumArtist  = j["artist_name"].ToString(),

                        Length  = CommonHelper.TimeToNum(j["songtime"].ToString()),
                        BitRate = "320K",

                        FlacUrl = "",
                        ApeUrl  = "",
                        WavUrl  = "",
                        SqUrl   = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                        HqUrl   = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                        LqUrl   = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3"),
                        CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                        SmallPic = "http://img.xiami.net/" + j["album_logo"],
                        PicUrl   = ("http://img.xiami.net/" + j["album_logo"]).Replace("_1.", "_4."),

                        LrcUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "lrc"),
                        TrcUrl = "",
                        KrcUrl = "",

                        MvId    = j["mv_id"]?.ToString(),
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company  = "",
                        Year     = "",
                        Disc     = string.IsNullOrEmpty(j["cd_serial"]?.ToString()) ? 1 : Convert.ToInt32(j["cd_serial"].ToString()),
                        TrackNum = string.IsNullOrEmpty(j["track"]?.ToString()) ? 0 : Convert.ToInt32(j["track"].ToString()),
                        Type     = "xm"
                    };
                    if (!string.IsNullOrEmpty(song.MvId))
                    {
                        if (song.MvId != "0")
                        {
                            song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                            song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                        }
                    }
                    list.Add(song);
                }
                catch (Exception ex)
                {
                    CommonHelper.AddLog(ex.ToString());
                }
            }
            return(list);
        }
Example #40
0
        private static SongResult GetLostSong(string songId)
        {
            var html = CommonHelper.GetHtmlContent("http://api.xiami.com/web?v=2.0&app_key=1&id=" + songId + "&r=song/detail",
                    1, new Dictionary<string, string>
                    {
                        {"Referer", "http://m.xiami.com/"}
                    });
            if (string.IsNullOrEmpty(html))
            {
                return null;
            }
            var json = JObject.Parse(html);
            var j = json["data"]["song"];
            if (j["song_id"].ToString() == "0")
            {
                return null;
            }
            var song = new SongResult
            {
                SongId = j["song_id"].ToString(),
                SongName = j["song_name"].ToString(),
                SongSubName = "",

                ArtistId = j["artist_id"].ToString(),
                ArtistName = j["singers"].ToString(),
                ArtistSubName = "",

                AlbumId = j["album_id"].ToString(),
                AlbumName = j["album_name"].ToString(),
                AlbumSubName = "",
                AlbumArtist = j["artist_name"].ToString(),

                Length = "",
                Size = "",
                BitRate = "320K",

                FlacUrl = "",
                ApeUrl = "",
                WavUrl = "",
                SqUrl = "",
                HqUrl = "",
                LqUrl = j["listen_file"].ToString(),
                CopyUrl = "",

                PicUrl = j["logo"].ToString().Replace("_1.", "_4."),
                LrcUrl = j["lyric"].ToString(),
                TrcUrl = "",
                KrcUrl = "",

                MvId = "",
                MvHdUrl = "",
                MvLdUrl = "",

                Language = "",
                Company = "",
                Year = "",
                Disc = "1",
                TrackNum = "",
                Type = "xm"
            };
            return song;
        }
Example #41
0
        private static List <SongResult> GetSongsByToken(JToken datas)
        {
            var list = new List <SongResult>();

            foreach (JToken j in datas)
            {
                var song = new SongResult
                {
                    SongId      = j["id"].ToString(),
                    SongName    = j["name"].ToString(),
                    SongSubName = "",
                    SongLink    = "",

                    ArtistId      = j["artistid"]?.ToString() ?? "",
                    ArtistName    = (j["artist"]?.ToString() ?? "").Replace("&", ";"),
                    ArtistSubName = "",

                    AlbumId      = j["albumid"]?.ToString() ?? "",
                    AlbumName    = j["album"]?.ToString() ?? "",
                    AlbumSubName = "",
                    AlbumArtist  = (j["artist"]?.ToString() ?? "").Replace("+", ";"),

                    Length  = CommonHelper.NumToTime(j["duration"]?.ToString() ?? "0"),
                    Size    = "",
                    BitRate = "128K",

                    FlacUrl = "",
                    ApeUrl  = "",
                    WavUrl  = "",
                    SqUrl   = "",
                    HqUrl   = "",
                    LqUrl   = "",
                    CopyUrl = "",

                    PicUrl = "",
                    LrcUrl = "",
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId    = "",
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = "",
                    Company  = "",
                    Year     = "",
                    Disc     = "1",
                    TrackNum = "",
                    Type     = "kw"
                };
                song.PicUrl = CommonHelper.GetSongUrl("kw", "320", song.SongId, "jpg");
                song.LrcUrl = CommonHelper.GetSongUrl("kw", "320", song.SongId, "lrc");
                var format = j["FORMATS"]?.ToString() ?? j["formats"].ToString();
                if (format.Contains("MP3128"))
                {
                    song.BitRate = "128K";
                    song.CopyUrl = song.LqUrl = CommonHelper.GetSongUrl("kw", "128", song.SongId, "mp3");
                }
                if (format.Contains("MP3192"))
                {
                    song.BitRate = "192K";
                    song.CopyUrl = song.HqUrl = CommonHelper.GetSongUrl("kw", "192", song.SongId, "mp3");
                }
                if (format.Contains("MP3H"))
                {
                    song.BitRate = "320K";
                    song.CopyUrl = song.SqUrl = CommonHelper.GetSongUrl("kw", "320", song.SongId, "mp3");
                }
                if (format.Contains("AL"))
                {
                    song.BitRate = "无损";
                    song.ApeUrl  = CommonHelper.GetSongUrl("kw", "1000", song.SongId, "ape");
                }
                if (format.Contains("MP4"))
                {
                    song.MvHdUrl = song.MvLdUrl = CommonHelper.GetSongUrl("kw", "1000", song.SongId, "mp4");
                }
                if (format.Contains("MV"))
                {
                    song.MvLdUrl = CommonHelper.GetSongUrl("kw", "1000", song.SongId, "mkv");
                }
                list.Add(song);
            }
            return(list);
        }
Example #42
0
        //该API包含的歌曲信息十分全面,但是无法获取搜索结果总数目以及无法指定单页数量
        //附带另一个搜索API:http://api.xiami.com/web?v=2.0&app_key=1&key=hello&page=1&limit=30&r=search/songs
        //该API需要指定Refer:http://m.xiami.com/
        //否则提示非法请求
        public static SearchResult Search(string key, int page)
        {
            var url = "http://www.xiami.com/app/xiating/search-song2?key=" + key + "&uid=0&callback=xiami&page=" + page;
            var html = CommonHelper.GetHtmlContent(url);
            var result = new SearchResult
            {
                ErrorCode = 200,
                ErrorMsg = "OK",
                KeyWord = key,
                PageNum = page,
                TotalSize = -1,     //-1表示未知
                Songs = new List<SongResult>()
            };
            if (string.IsNullOrEmpty(html) || html == "null" || html.Contains("无法在虾米资料库中得到结果"))
            {
                result.ErrorCode = 404;
                result.ErrorMsg = "没有找到符合要求的歌曲";
                return result;
            }
            try
            {
                var json = JObject.Parse(html);
                var data = json["data"];
                foreach (var j in data)
                {
                    try
                    {
                        if (j["song_status"].ToString() != "0")
                        {
                            continue;   //滤除下架歌曲
                        }
                        var song = new SongResult
                        {
                            SongId = j["song_id"].ToString(),
                            SongName = j["song_name"].ToString(),
                            SongSubName = j["sub_title"]?.ToString(),
                            SongLink = "http://www.xiami.com/song/" + j["song_id"],

                            ArtistId = j["artist_id"].ToString(),
                            ArtistName = j["singer"].ToString(),
                            ArtistSubName = j["artist_sub_title"]?.ToString(),

                            AlbumId = j["album_id"].ToString(),
                            AlbumName = j["album_name"].ToString(),
                            AlbumSubName = j["album_sub_title"]?.ToString(),
                            AlbumArtist = j["artist_name"].ToString(),

                            Length = j["songtime"].ToString(),
                            Size = "",
                            BitRate = "320K",

                            FlacUrl = "",
                            ApeUrl = "",
                            WavUrl = "",
                            SqUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                            HqUrl = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                            LqUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3"),
                            CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                            PicUrl = ("http://img.xiami.net/" + j["album_logo"]).Replace("_1.", "_4."),
                            LrcUrl = j["lyric"].ToString(),
                            TrcUrl = "",
                            KrcUrl = j["lyric_karaok"]?.ToString(),

                            MvId = j["mv_id"]?.ToString(),
                            MvHdUrl = "",
                            MvLdUrl = "",

                            Language = "",
                            Company = "",
                            Year = CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(string.IsNullOrEmpty(j["gmt_publish"].ToString()) ? "0" : j["gmt_publish"].ToString())).ToString("yyyy-MM-dd"),
                            Disc = j["cd_serial"].ToString(),
                            TrackNum = j["track"].ToString(),
                            Type = "xm"
                        };
                        if (!string.IsNullOrEmpty(song.LrcUrl))
                        {
                            if (song.LrcUrl.EndsWith("txt"))
                            {
                                song.LrcUrl = CommonHelper.GetSongUrl("xm", "128", song.SongId, "lrc");
                            }
                        }
                        if (!string.IsNullOrEmpty(song.MvId))
                        {
                            if (song.MvId != "0")
                            {
                                song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                                song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                            }
                        }
                        result.Songs.Add(song);
                    }
                    catch (Exception ex)
                    {
                        CommonHelper.AddLog(ex);
                    }
                }
                return result;
            }
            catch (Exception)
            {
                result.ErrorCode = 500;
                result.ErrorMsg = "解析歌曲时发生错误";
                return result;
            }
        }
Example #43
0
        private static List<SongResult> GetListByJson(JToken datas)
        {
            var list = new List<SongResult>();
            foreach (var j in datas)
            {
                try
                {
                    var song = new SongResult
                    {
                        SongId = j["songId"].ToString(),
                        SongName = j["name"].ToString(),
                        SongSubName = j["alias"]?.ToString(),
                        SongLink = "http://h.dongting.com/yule/app/music_player_page.html?id="+ j["songId"],

                        ArtistId = j["singerId"].ToString(),
                        ArtistName = j["singerName"].ToString(),
                        ArtistSubName = "",

                        AlbumId = j["albumId"].ToString(),
                        AlbumName = j["albumName"].ToString(),
                        AlbumSubName = "",
                        AlbumArtist = j["singerName"].ToString(),

                        Length = "",
                        Size = "",
                        BitRate = "128K",

                        FlacUrl = "",
                        ApeUrl = "",
                        WavUrl = "",
                        SqUrl = "",
                        HqUrl = "",
                        LqUrl = "",
                        CopyUrl = "",

                        PicUrl = j["picUrl"].ToString(),
                        LrcUrl = CommonHelper.GetSongUrl("tt", "320", j["songId"].ToString(), "lrc"),
                        TrcUrl = "",
                        KrcUrl = "",

                        MvId = "",
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company = "",
                        Year = "",
                        Disc = "1",
                        TrackNum = "",
                        Type = "tt"
                    };
                    if (j["mvList"].First != null && j["mvList"].First.HasValues)
                    {
                        var mvs = j["mvList"];
                        var max = 0;
                        foreach (JToken mv in mvs)
                        {
                            song.MvId = mv["videoId"].ToString();
                            if (max == 0)
                            {
                                song.MvHdUrl = mv["url"].ToString();
                                song.MvLdUrl = mv["url"].ToString();
                                max = mv["bitRate"].Value<int>();
                            }
                            else
                            {
                                if (mv["bitRate"].Value<int>() > max)
                                {
                                    song.MvHdUrl = mv["url"].ToString();
                                }
                                else
                                {
                                    song.MvLdUrl = mv["url"].ToString();
                                }
                            }
                        }
                    }
                    var links = j["urlList"];
                    if (links.ToString() == "[]" || j["urlList"].First == null)
                    {
                        continue;
                    }
                    foreach (JToken link in links)
                    {
                        switch (link["bitRate"].ToString())
                        {
                            case "128":
                                song.LqUrl = link["url"].ToString();
                                song.BitRate = "128K";
                                break;
                            case "192":
                                song.HqUrl = link["url"].ToString();
                                song.BitRate = "192K";
                                break;
                            case "320":
                                if (string.IsNullOrEmpty(song.HqUrl))
                                {
                                    song.HqUrl = link["url"].ToString();
                                }
                                song.SqUrl = link["url"].ToString();
                                song.BitRate = "320K";
                                break;
                        }
                        song.Length = link["duration"].ToString().Contains(":") ? link["duration"].ToString() : CommonHelper.NumToTime((link["duration"].Value<int>() / 1000).ToString());
                    }
                    if (j["llList"] != null && j["llList"].ToString() != "null" && j["llList"].ToString() != "[]")
                    {
                        foreach (JToken wsJToken in j["llList"])
                        {
                            song.BitRate = "无损";
                            switch (wsJToken["suffix"].ToString())
                            {
                                case "wav":
                                    song.WavUrl = wsJToken["url"].ToString();
                                    break;
                                case "ape":
                                    song.ApeUrl = wsJToken["url"].ToString();
                                    break;
                                case "flac":
                                    song.FlacUrl = wsJToken["url"].ToString();
                                    break;
                                default:
                                    song.FlacUrl = wsJToken["url"].ToString();
                                    break;
                            }
                        }
                    }
                    song.CopyUrl = CommonHelper.GetSongUrl("tt", "320", song.SongId, "mp3");
                    list.Add(song);
                }
                catch (Exception ex)
                {
                    CommonHelper.AddLog(ex);
                }
            }
            return list;
        }
Example #44
0
        private static List<SongResult> GetLostAlbum(string id)
        {
            var url = "http://api.xiami.com/web?id=" + id + "&r=album%2Fdetail&app_key=09bef203bfa02bfbe3f1cfd7073cb0f3";
            var html = CommonHelper.GetHtmlContent(url, 1, new Dictionary<string, string>
            {
                {"Referer", "http://m.xiami.com/"}
            });
            if (string.IsNullOrEmpty(html))
            {
                return null;
            }
            var json = JObject.Parse(html);
            var datas = json["data"]["songs"];
            var list = new List<SongResult>();
            var index = 0;
            foreach (JToken j in datas)
            {
                index++;
                var song = new SongResult
                {
                    SongId = j["song_id"].ToString(),
                    SongName = j["song_name"].ToString(),
                    SongSubName = "",

                    ArtistId = j["artist_id"].ToString(),
                    ArtistName = j["singers"].ToString(),
                    ArtistSubName = "",

                    AlbumId = j["album_id"].ToString(),
                    AlbumName = j["album_name"].ToString(),
                    AlbumSubName = "",
                    AlbumArtist = json["data"]["artist_name"].ToString(),

                    Length = j["songtime"]?.ToString(),
                    Size = "",
                    BitRate = "320K",

                    FlacUrl = "",
                    ApeUrl = "",
                    WavUrl = "",
                    SqUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                    HqUrl = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                    LqUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3"),
                    CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                    PicUrl = j["album_logo"].ToString().Replace("_1.", "_4."),
                    LrcUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "lrc"),
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId = j["mv_id"]?.ToString(),
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = "",
                    Company = "",
                    Year = CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["data"]["gmt_publish"].ToString())).ToString("yyyy-MM-dd"),
                    Disc = "1",
                    TrackNum = index.ToString(),
                    Type = "xm"
                };
                if (!string.IsNullOrEmpty(song.MvId))
                {
                    if (song.MvId != "0")
                    {
                        song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                        song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                    }
                }
                list.Add(song);
            }
            return list;
        }
Example #45
0
        private static List <SongResult> GetListByJToken(JObject json, bool isPlayList = false)
        {
            var datas = isPlayList ? json["playlist"]["tracks"] : json["songs"];
            var list  = new List <SongResult>();
            var index = -1;

            foreach (var j in datas)
            {
                try
                {
                    index++;
                    //if (json["privileges"][index]["st"].ToString() == "-200")
                    //{
                    //    continue;
                    //}
                    var ar   = j["ar"].Aggregate("", (current, jToken) => current + (jToken["name"].ToString() + ";"));
                    var song = new SongResult
                    {
                        SongId      = j["id"].ToString(),
                        SongName    = j["name"].ToString(),
                        SongSubName = j["alia"].First?.ToString(),
                        SongLink    = "http://music.163.com/#/song?id=" + j["id"],

                        ArtistId      = j["ar"].First["id"].ToString(),
                        ArtistName    = ar.TrimEnd(';'),
                        ArtistSubName = "",

                        AlbumId      = j["al"]["id"].ToString(),
                        AlbumName    = j["al"]["name"].ToString(),
                        AlbumSubName = j["al"]["alia"]?.First?.ToString(),
                        AlbumArtist  = j["ar"].First["name"].ToString(),

                        Length  = Convert.ToInt32(j["dt"].ToString()) / 1000,
                        BitRate = "128K",

                        FlacUrl = "",
                        ApeUrl  = "",
                        WavUrl  = "",
                        SqUrl   = "",
                        HqUrl   = "",
                        LqUrl   = "",
                        CopyUrl = "",

                        SmallPic = GetPicById(j["al"]["pic"].ToString(), 100),
                        PicUrl   = GetPicById(j["al"]["pic"].ToString()),

                        LrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "lrc"),
                        TrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "trc"),
                        KrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "krc"),

                        MvId    = j["mv"].ToString(),
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company  = "",
                        Year     = "",
                        Disc     = string.IsNullOrEmpty(j["cd"]?.ToString()) ? 1 : Convert.ToInt32(j["cd"].ToString().Split('/')[0]),
                        TrackNum = string.IsNullOrEmpty(j["no"]?.ToString()) ? 1 : Convert.ToInt32(j["no"].ToString()),
                        Type     = "wy"
                    };
                    if (!string.IsNullOrEmpty(song.MvId))
                    {
                        if (song.MvId != "0")
                        {
                            song.MvHdUrl = CommonHelper.GetSongUrl("wy", "hd", song.MvId, "mp4");
                            song.MvLdUrl = CommonHelper.GetSongUrl("wy", "ld", song.MvId, "mp4");
                        }
                    }
                    var maxBr = json["privileges"][index]["maxbr"].ToString();
                    if (maxBr == "999000")
                    {
                        song.BitRate = "无损";
                        song.FlacUrl = CommonHelper.GetSongUrl("wy", "999", song.SongId, "flac");
                        song.SqUrl   = CommonHelper.GetSongUrl("wy", "320", song.SongId, "mp3");
                        song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                        song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                        song.CopyUrl = song.SqUrl;
                    }
                    else if (maxBr == "320000")
                    {
                        song.BitRate = "320K";
                        song.SqUrl   = CommonHelper.GetSongUrl("wy", "320", song.SongId, "mp3");
                        song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                        song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                        song.CopyUrl = song.SqUrl;
                    }
                    else if (maxBr == "160000")
                    {
                        song.BitRate = "192K";
                        song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                        song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                        song.CopyUrl = song.HqUrl;
                    }
                    else
                    {
                        song.BitRate = "128K";
                        song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                        song.CopyUrl = song.LqUrl;
                    }
                    //if (j["fee"].ToString() == "4" || json["privileges"][index]["st"].ToString() != "0")
                    //{
                    //    if (song.BitRate == "无损")
                    //    {
                    //        song.BitRate = "320K";
                    //        song.FlacUrl = "";
                    //    }
                    //}
                    list.Add(song);
                }
                catch (Exception ex)
                {
                    CommonHelper.AddLog(j.ToString());
                    CommonHelper.AddLog(ex.ToString());
                }
            }
            return(list);
        }
Example #46
0
        private static List <SongResult> GetListByToken(JToken data)
        {
            var list = new List <SongResult>();

            foreach (var j in data)
            {
                try
                {
                    var song = new SongResult
                    {
                        SongId      = j["songId"].ToString(),
                        SongName    = j["songName"].ToString(),
                        SongSubName = j["subName"]?.ToString() ?? "",
                        SongLink    = "http://www.xiami.com/song/" + j["songId"],

                        ArtistId      = j["singerVOs"]?.First?["artistId"].ToString() ?? "",
                        ArtistName    = j["singers"]?.ToString() ?? "",
                        ArtistSubName = j["singerVOs"]?.First?["alias"].ToString() ?? "",

                        AlbumId      = j["albumId"]?.ToString() ?? "0",
                        AlbumName    = j["albumName"]?.ToString() ?? "",
                        AlbumSubName = j["albumSubName"]?.ToString() ?? "",
                        AlbumArtist  = j["artistName"]?.ToString() ?? "",

                        Length  = j["length"]?.Value <int>() / 1000 ?? 0,
                        BitRate = "",

                        FlacUrl = "",
                        ApeUrl  = "",
                        WavUrl  = "",
                        SqUrl   = "",
                        HqUrl   = "",
                        LqUrl   = "",
                        CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["songId"].ToString(), "mp3"),

                        SmallPic = j["albumLogo"].ToString().Replace(".jpg", "_1.jpg"),
                        PicUrl   = j["albumLogo"].ToString(),

                        LrcUrl = CommonHelper.GetSongUrl("xm", "128", j["songId"].ToString(), "lrc"),
                        TrcUrl = "",
                        KrcUrl = "",

                        MvId    = j["mvId"]?.ToString() ?? "",
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company  = "",
                        Year     = j["gmtCreate"] == null ? "" : CommonHelper.UnixTimestampToDateTime(j["gmtCreate"].Value <long>() / 1000).ToString("yyyy-MM-dd"),
                        Disc     = j["cdSerial"].Value <int>(),
                        TrackNum = j["track"].Value <int>(),
                        Type     = "xm"
                    };

                    if (j["lyricInfo"] != null)
                    {
                        song.LrcUrl = j["lyricInfo"]["lyricFile"].ToString();
                        if (song.LrcUrl.Contains(".trc"))
                        {
                            song.TrcUrl = song.LrcUrl;
                        }
                    }
                    if (j["lyric"] != null)
                    {
                        song.LrcUrl = j["lyric"].ToString();
                        if (song.LrcUrl.Contains(".trc"))
                        {
                            song.TrcUrl = song.LrcUrl;
                        }
                    }
                    if (j["listenFiles"] != null)
                    {
                        foreach (var jToken in j["listenFiles"])
                        {
                            var songLink = jToken["listenFile"]?.ToString() ?? jToken["url"].ToString();
                            switch (jToken["quality"].ToString())
                            {
                            case "l":
                                if (string.IsNullOrEmpty(song.BitRate))
                                {
                                    song.BitRate = "128K";
                                }
                                song.LqUrl = songLink;
                                break;

                            case "h":
                                if (song.BitRate != "无损")
                                {
                                    song.BitRate = "320K";
                                }
                                song.HqUrl = song.SqUrl = songLink;
                                break;

                            case "s":
                                song.BitRate = "无损";
                                switch (jToken["format"].ToString())
                                {
                                case "flac":
                                    song.FlacUrl = songLink;
                                    break;

                                case "ape":
                                    song.ApeUrl = songLink;
                                    break;

                                default:
                                    song.WavUrl = songLink;
                                    break;
                                }
                                break;
                            }
                        }
                    }
                    else
                    {
                        foreach (var item in j["purviewRoleVOs"])
                        {
                            if (!item["isExist"].Value <bool>())
                            {
                                continue;
                            }
                            switch (item["quality"].ToString())
                            {
                            case "l":
                                if (string.IsNullOrEmpty(song.BitRate))
                                {
                                    song.BitRate = "128K";
                                }
                                song.LqUrl = CommonHelper.GetSongUrl("xm", "128", song.SongId, "mp3");
                                break;

                            case "h":
                                if (song.BitRate != "无损")
                                {
                                    song.BitRate = "320K";
                                }
                                song.HqUrl = song.SqUrl = CommonHelper.GetSongUrl("xm", "320", song.SongId, "mp3");
                                break;

                            case "s":
                                song.BitRate = "无损";
                                song.FlacUrl = CommonHelper.GetSongUrl("xm", "999", song.SongId, "flac");
                                break;
                            }
                        }
                    }
                    list.Add(song);
                }
                catch (Exception ex)
                {
                    CommonHelper.AddLog("JsonData:" + JsonConvert.SerializeObject(j));
                    CommonHelper.AddLog(ex.ToString());
                }
            }
            return(list);
        }
Example #47
0
        private static List <SongResult> GetListByJson(JToken jsons)
        {
            if (jsons == null)
            {
                return(null);
            }
            var list = new List <SongResult>();

            foreach (var j in jsons)
            {
                try
                {
                    //if (j["privilege"]["st"].ToString() == "-200")
                    //{
                    //    continue;
                    //}
                    var ar   = j["ar"].Aggregate("", (current, jToken) => current + jToken["name"].ToString() + ";");
                    var song = new SongResult
                    {
                        SongId      = j["id"].ToString(),
                        SongName    = j["name"].ToString(),
                        SongSubName = j["alia"].First?.ToString(),
                        SongLink    = "http://music.163.com/#/song?id=" + j["id"],

                        ArtistId      = j["ar"].First["id"].ToString(),
                        ArtistName    = ar.TrimEnd(';'),
                        ArtistSubName = "",

                        AlbumId      = j["al"]["id"].ToString(),
                        AlbumName    = j["al"]["name"].ToString(),
                        AlbumSubName = j["al"]["alia"]?.First?.ToString(),
                        AlbumArtist  = j["ar"].First["name"].ToString(),

                        Length  = string.IsNullOrEmpty(j["dt"]?.ToString()) ? 0 : Convert.ToInt32(j["dt"].ToString()) / 1000,
                        BitRate = "128K",

                        FlacUrl = "",
                        ApeUrl  = "",
                        WavUrl  = "",
                        SqUrl   = "",
                        HqUrl   = "",
                        LqUrl   = "",
                        CopyUrl = "",

                        SmallPic = GetPicById(j["al"]["pic"].ToString(), 100),
                        PicUrl   = GetPicById(j["al"]["pic"].ToString()),

                        LrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "lrc"),
                        TrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "trc"),
                        KrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "krc"),

                        MvId    = j["mv"].ToString(),
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company  = "",
                        Year     = "",
                        Disc     = string.IsNullOrEmpty(j["cd"]?.ToString()) ? 1 : Convert.ToInt32(j["cd"].ToString().Split('/')[0]),
                        TrackNum = string.IsNullOrEmpty(j["no"]?.ToString()) ? 1 : Convert.ToInt32(j["no"].ToString()),
                        Type     = "wy"
                    };
                    if (!string.IsNullOrEmpty(song.MvId))
                    {
                        if (song.MvId != "0")
                        {
                            song.MvHdUrl = CommonHelper.GetSongUrl("wy", "hd", song.MvId, "mp4");
                            song.MvLdUrl = CommonHelper.GetSongUrl("wy", "ld", song.MvId, "mp4");
                        }
                    }
                    if (j["privilege"] != null)
                    {
                        var maxBr = j["privilege"]["maxbr"].ToString();
                        switch (maxBr)
                        {
                        case "999000":
                            song.BitRate = "无损";
                            song.FlacUrl = CommonHelper.GetSongUrl("wy", "999", song.SongId, "flac");
                            song.SqUrl   = CommonHelper.GetSongUrl("wy", "320", song.SongId, "mp3");
                            song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                            song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                            song.CopyUrl = song.SqUrl;
                            break;

                        case "320000":
                        case "192000":
                        case "190000":
                            song.BitRate = "320K";
                            song.SqUrl   = CommonHelper.GetSongUrl("wy", "320", song.SongId, "mp3");
                            song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                            song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                            song.CopyUrl = song.SqUrl;
                            break;

                        case "160000":
                            song.BitRate = "192K";
                            song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                            song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                            song.CopyUrl = song.HqUrl;
                            break;

                        default:
                            song.BitRate = "128K";
                            song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                            song.CopyUrl = song.LqUrl;
                            break;
                        }
                        //if (j["fee"].ToString() == "4" || j["privilege"]["st"].ToString() != "0")
                        //{
                        //    if (song.BitRate == "无损")
                        //    {
                        //        song.BitRate = "320K";
                        //        song.FlacUrl = "";
                        //    }
                        //}
                    }
                    else
                    {
                        if (j["l"] != null & j["l"].ToString().Contains("fid"))
                        {
                            song.BitRate = "128K";
                            song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                            song.CopyUrl = song.LqUrl;
                        }
                        if (j["m"] != null & j["m"].ToString().Contains("fid"))
                        {
                            song.BitRate = j["m"]["br"].Value <int>() / 1000 + "K";
                            song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                            song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                            song.CopyUrl = song.HqUrl;
                        }
                        if (j["h"] != null & j["h"].ToString().Contains("fid"))
                        {
                            song.BitRate = j["h"]["br"].Value <int>() / 1000 + "K";
                            song.SqUrl   = CommonHelper.GetSongUrl("wy", "320", song.SongId, "mp3");
                            song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                            song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                            song.CopyUrl = song.SqUrl;
                        }
                    }
                    list.Add(song);
                }
                catch (Exception ex)
                {
                    CommonHelper.AddLog(ex.ToString());
                }
            }
            return(list);
        }
        //       ★获取歌词
        //http://music.qq.com/miniportal/static/lyric/歌曲id求余100/歌曲id.xml
        //        ★获取专辑插图
        //http://imgcache.qq.com/music/photo/album/专辑id求余100/albumpic_专辑id_0.jpg
        //http://vsrcmusic.tc.qq.com/5036372.mp3
        //http://vsrc.music.tc.qq.com/A00***.ape
        //http://vsrc.music.tc.qq.com/F00***.flac
        //http://vsrc.music.tc.qq.com/M80***.mp3
        //http://tsmusic128.tc.qq.com/{$SongId+30000000}.mp3
        public static List<SongResult> GetSearchResult(string key, int page)
        {
            var url =
                "http://soso.music.qq.com/fcgi-bin/music_search_new_platform?t=0&n=20&g_tk=157256710&loginUin=584586119&hostUin=0&format=jsonp&inCharset=GB2312&outCharset=utf-8&notice=0&platform=newframe&jsonpCallback=jsnp_callback&needNewCode=0&w=" + key + "&p=" + page + "&catZhida=1&remoteplace=sizer.newclient.song_all&searchid=11040987310239770213&clallback=jsnp_callback&lossless=0";
            var html = CommonHelper.GetHtmlContent(url).Replace("jsnp_callback", "").Trim('(', ')');
            if (string.IsNullOrEmpty(html))
            {
                return null;
            }

            var jobject = (JObject) JsonConvert.DeserializeObject(html.Replace("&amp;", "&"));
            if (!jobject.HasValues) return null;
            if (jobject["data"]["song"]["totalnum"].ToString() == "0") return null;
            var songs = jobject["data"]["song"]["list"];
            var list = new List<SongResult>();
            foreach (var song in songs)
            {
                if (song["isweiyun"].ToString()=="1")
                {
                    continue;
                }
                var f = song["f"].ToString();
                var single = new SongResult();
                if (f.Contains("@@"))
                {
                    var contents = f.Split(new []{"@@"}, StringSplitOptions.RemoveEmptyEntries);
                    single.SongId = System.Web.HttpUtility.HtmlDecode(contents[0].Trim());
                    single.Name = System.Web.HttpUtility.HtmlDecode(contents[1].Trim());
                    single.Album = System.Web.HttpUtility.HtmlDecode(contents[2].Trim());
                    single.AlbumArtist = single.Artist = System.Web.HttpUtility.HtmlDecode(single.Artist = contents[3].Trim());
                    single.HqUrl = single.LqUrl = single.ExtHqUrl = contents[contents.Length - 4].Trim();
                    single.BitRate = "128K";
                }
                else
                {
                    var contents = f.Split(new []{'|'}, StringSplitOptions.RemoveEmptyEntries);
                    single.SongId = contents[0];
                    single.Name = System.Web.HttpUtility.HtmlDecode(contents[1]);
                    single.Album = System.Web.HttpUtility.HtmlDecode(contents[5]);
                    single.AlbumArtist = single.Artist = System.Web.HttpUtility.HtmlDecode( contents[3]);
                    single.LqUrl = "http://tsmusic128.tc.qq.com/"+(Convert.ToInt32(single.SongId)+ 30000000) +".mp3";
                    var mid = contents[contents.Length-5];
                    if (f.Contains("320000|0|"))
                    {
                        single.BitRate = "320K";
                        single.HqUrl = "http://vsrc.music.tc.qq.com/M800" + mid + ".mp3";
                        if (!f.Contains("320000|0|0|"))
                        {
                            single.BitRate = "无损";
                            single.ExtHqUrl = "http://vsrc.music.tc.qq.com/F000" + mid + ".flac";
                        }
                    }
                    else
                    {
                        single.BitRate = "128K";
                        single.HqUrl = single.ExtHqUrl = single.LqUrl;
                    }
                    var aid = Convert.ToInt32(contents[4]);
                    single.AlbumId = aid.ToString();
                    single.PicUrl = "http://imgcache.qq.com/music/photo/album/" + aid % 100 + "/albumpic_" + aid + "_0.jpg";
                }
                single.CopyUrl = single.HqUrl;
                single.Type = "qq";
                list.Add(single);
            }
            return list;
        }
Example #49
0
        private static List <SongResult> SearchAlbum(string id)
        {
            var text = "albumId=" + id;
            var url  = "http://api.sonyselect.com.cn/albumDetail/v1/android/?sign=" + GetDes3EncryptedText(text);
            var data =
                "{\"content\":{\"albumId\":\"" + id + "\"},\"header\":{\"sdkNo\":\"4.2.2\",\"model\":\"X9Plus\",\"manufacturer\":\"vivo\",\"imei\":\"133524532901500\"}}";
            var html = CommonHelper.PostData(url, new Dictionary <string, string> {
                { "JSON", data }
            }, 1);

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

            if (json["content"]["album"]["musicNum"].Value <int>() <= 0)
            {
                return(null);
            }
            var datas = json["content"]["album"]["tracks"];
            var list  = new List <SongResult>();
            var ar    = json["content"]["album"]["aritst"].ToString();
            var arId  = json["content"]["album"]["artistId"].ToString();
            var an    = json["content"]["album"]["name"].ToString();
            var sm    = json["content"]["album"]["smallIcon"].ToString();
            var lg    = json["content"]["album"]["largeIcon"].ToString();
            var index = 0;

            foreach (JToken j in datas)
            {
                index++;
                var song = new SongResult
                {
                    SongId      = j["id"].ToString(),
                    SongName    = j["name"].ToString(),
                    SongSubName = "",
                    SongLink    = "",

                    ArtistId      = arId,
                    ArtistName    = ar,
                    ArtistSubName = "",

                    AlbumId      = id,
                    AlbumName    = an,
                    AlbumSubName = "",
                    AlbumArtist  = ar,

                    Length  = CommonHelper.TimeToNum(j["duration"].ToString()),
                    BitRate = "无损",

                    FlacUrl = "",
                    ApeUrl  = "",
                    WavUrl  = "",
                    SqUrl   = "",
                    HqUrl   = "",
                    LqUrl   = "",
                    CopyUrl = "",

                    SmallPic = sm,
                    PicUrl   = lg,

                    LrcUrl = "",
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId    = "",
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = "",
                    Company  = "",
                    Year     = j["createTime"]?.ToString(),
                    Disc     = 1,
                    TrackNum = index,
                    Type     = "sn"
                };
                if (j["auditionUrl"] != null)
                {
                    var link = j["auditionUrl"].ToString();
                    song.LqUrl   = song.HqUrl = song.SqUrl = song.CopyUrl = link;
                    song.FlacUrl = CommonHelper.GetSongUrl("sn", "1000", song.SongId, "flac");

                    //                    link = link.Replace("/Audition/", "/Audio/").Replace(".mp3", "");
                    //                    if (j["downloadUrl"] != null)
                    //                    {
                    //                        if (j["downloadUrl"].ToString().StartsWith("http"))
                    //                        {
                    //                            link = j["downloadUrl"].ToString();
                    //                        }
                    //                    }
                    //                    if (link.Contains(".flac"))
                    //                    {
                    //                        song.FlacUrl = link;
                    //                    }
                    //                    else if (link.Contains(".ape"))
                    //                    {
                    //                        song.ApeUrl = link;
                    //                    }
                    //                    else
                    //                    {
                    //                        song.WavUrl = link;
                    //                    }
                }
                list.Add(song);
            }
            return(list);
        }
        public static List<SongResult> GetResultsByKey(string key, int page)
        {
            var url =
                "http://mobilecdn.kugou.com/api/v3/search/song?format=jsonp&keyword="+key+"&page="+page+"&pagesize=20&showtype=1";
            var html = CommonHelper.GetHtmlContent(url);
            if (string.IsNullOrEmpty(html))
            {
                return null;
            }
            var json = (JObject)JsonConvert.DeserializeObject(html.Trim('(', ')'));
            if (Convert.ToInt32(json["data"]["total"]) <= 0)
            {
                return null;
            }
            var list = new List<SongResult>();
            var songs = json["data"]["info"];
            foreach (JToken song in songs)
            {
                var single = new SongResult {Artist = song["singername"].ToString(), Name = song["filename"].ToString(),Type = "KG"};
                if (string.IsNullOrEmpty(single.Artist))
                {
                    if (single.Name.Contains("-"))
                    {
                        single.Artist = single.Name.Substring(0, single.Name.IndexOf('-')).Trim();
                        single.Name = single.Name.Substring(single.Name.IndexOf('-')+1).Trim();
                    }
                }
                else
                {
                    var name = single.Name.Substring(0, single.Name.IndexOf('-')).Trim();
                    if (single.Artist.Trim() == name)
                    {
                        single.Name = single.Name.Substring(single.Name.IndexOf('-')+1).Trim();
                    }
                }
                single.AlbumArtist = single.Artist;
                single.AlbumId = "19930119";

                if (!string.IsNullOrEmpty(song["hash"].ToString()))
                {
                    single.LqUrl = song["hash"].ToString();
                    single.BitRate = song["bitrate"] + "K";
                }

                if (!string.IsNullOrEmpty(song["mvhash"].ToString()))
                {
                    single.MvUrl = song["mvhash"].ToString();
                }

                if (!string.IsNullOrEmpty(song["320hash"].ToString()))
                {
                    single.HqUrl = song["320hash"].ToString();
                    single.BitRate = "320K";
                }

                if (!string.IsNullOrEmpty(song["sqhash"].ToString()))
                {
                    single.ExtHqUrl = song["sqhash"].ToString();
                    single.BitRate = "无损";
                }
                single.CopyUrl = "http://www.musicuu.com/songurl/kg^320^" + single.SongId + ".mp3";
                list.Add(single);
            }


            return list;
        }
Example #51
0
        private static List <SongResult> GetListByJson(JToken songs, bool isArtist = false)
        {
            if (songs == null)
            {
                return(null);
            }
            var list = new List <SongResult>();

            foreach (JToken token in songs)
            {
                var j  = isArtist ? token["musicData"] : token;
                var ar =
                    j["singer"].Aggregate("", (current, fJToken) => current + fJToken["name"].ToString() + ";")
                    .TrimEnd(';');
                var song = new SongResult
                {
                    SongId      = j["songid"].ToString(),
                    SongName    = j["songname"]?.ToString().HtmlDecode(),
                    SongSubName = "",
                    SongLink    = "http://y.qq.com/portal/song/" + (j["songmid"]?.ToString() ?? j["songid"]) + ".html",

                    ArtistId      = j["singer"].First?["id"]?.ToString(),
                    ArtistName    = ar.HtmlDecode(),
                    ArtistSubName = "",

                    AlbumId      = j["albummid"]?.ToString() ?? "",
                    AlbumName    = j["albumname"]?.ToString().HtmlDecode(),
                    AlbumSubName = "",
                    AlbumArtist  = j["singer"].First?["name"].ToString().HtmlDecode(),

                    Length  = j["interval"].Value <int>(),
                    BitRate = "128K",

                    FlacUrl = "",
                    ApeUrl  = "",
                    WavUrl  = "",
                    SqUrl   = "",
                    HqUrl   = "",
                    LqUrl   = "",
                    CopyUrl = "",

                    SmallPic = "",
                    PicUrl   = "",

                    LrcUrl = CommonHelper.GetSongUrl("qq", "128", j["songid"].ToString(), "lrc"),
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId    = j["vid"]?.ToString(),
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = "",
                    Company  = "",
                    Year     = j["pubtime"] == null ? "" : CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(j["pubtime"].ToString())).ToString("yyyy-MM-dd"),
                    Disc     = 1,
                    TrackNum = string.IsNullOrEmpty(j["belongCD"]?.ToString()) ? 0 : Convert.ToInt32(j["belongCD"].ToString()),
                    Type     = "qq"
                };
                var mid = j["strMediaMid"]?.ToString() ?? (j["media_mid"]?.ToString() ?? j["songmid"]?.ToString());
                if (string.IsNullOrEmpty(mid))
                {
                    song.BitRate = "320K";
                    song.LqUrl   = song.HqUrl = song.SqUrl = j["songurl"].ToString();
                    song.CopyUrl = CommonHelper.GetSongUrl("qq", "320", song.SongId, "mp3");
                }
                else
                {
                    if (j["size128"].ToString() != "0")
                    {
                        song.BitRate = "128K";
                        song.LqUrl   = CommonHelper.GetSongUrl("qq", "128", mid, "mp3");
                    }
                    if (j["sizeogg"].ToString() != "0")
                    {
                        song.BitRate = "192K";
                        song.HqUrl   = CommonHelper.GetSongUrl("qq", "192", mid, "ogg");
                    }
                    if (j["size320"].ToString() != "0")
                    {
                        song.BitRate = "320K";
                        song.SqUrl   = CommonHelper.GetSongUrl("qq", "320", mid, "mp3");
                    }
                    if (j["sizeape"].ToString() != "0")
                    {
                        song.BitRate = "无损";
                        song.ApeUrl  = CommonHelper.GetSongUrl("qq", "999", mid, "ape");
                    }
                    if (j["sizeflac"].ToString() != "0")
                    {
                        song.BitRate = "无损";
                        song.FlacUrl = CommonHelper.GetSongUrl("qq", "999", mid, "flac");
                    }
                    song.CopyUrl = CommonHelper.GetSongUrl("qq", "320", mid, "mp3");
                }
                if (!string.IsNullOrEmpty(song.MvId))
                {
                    song.MvHdUrl = CommonHelper.GetSongUrl("qq", "hd", song.MvId, "mp4");
                    song.MvLdUrl = CommonHelper.GetSongUrl("qq", "ld", song.MvId, "mp4");
                }
                if (string.IsNullOrEmpty(song.AlbumId))
                {
                    song.SmallPic = "http://yyfm.oss-cn-qingdao.aliyuncs.com/anylisten/2311.jpg";
                    song.PicUrl   = "http://yyfm.oss-cn-qingdao.aliyuncs.com/anylisten/23.jpg";
                }
                else
                {
                    song.SmallPic = "http://i.gtimg.cn/music/photo/mid_album_150/" + song.AlbumId[song.AlbumId.Length - 2] +
                                    "/" + song.AlbumId[song.AlbumId.Length - 1] + "/" + song.AlbumId + ".jpg";
                    song.PicUrl = "http://i.gtimg.cn/music/photo/mid_album_500/" + song.AlbumId[song.AlbumId.Length - 2] +
                                  "/" + song.AlbumId[song.AlbumId.Length - 1] + "/" + song.AlbumId + ".jpg";
                }
                list.Add(song);
            }
            return(list);
        }
Example #52
0
        private static List <SongResult> GetListByJson(JToken jsons)
        {
            var list = new List <SongResult>();

            foreach (var j in jsons)
            {
                try
                {
                    var ar   = j["ar"].Aggregate("", (current, jToken) => current + (jToken["name"].ToString() + ";"));
                    var song = new SongResult
                    {
                        SongId      = j["id"].ToString(),
                        SongName    = WebUtility.HtmlDecode(j["name"].ToString()),
                        SongSubName = WebUtility.HtmlDecode(j["alia"].First?.ToString()),
                        SongLink    = "http://music.163.com/#/song?id=" + j["id"],

                        ArtistId      = j["ar"].First["id"].ToString(),
                        ArtistName    = WebUtility.HtmlDecode(ar).TrimEnd(';'),
                        ArtistSubName = "",

                        AlbumId      = j["al"]["id"].ToString(),
                        AlbumName    = WebUtility.HtmlDecode(j["al"]["name"].ToString()),
                        AlbumSubName = WebUtility.HtmlDecode(j["al"]["alia"]?.First?.ToString()),
                        AlbumArtist  = WebUtility.HtmlDecode(j["ar"].First["name"].ToString()),

                        Length  = CommonHelper.NumToTime((Convert.ToInt32(j["dt"].ToString()) / 1000).ToString()),
                        Size    = "",
                        BitRate = "128K",

                        FlacUrl = "",
                        ApeUrl  = "",
                        WavUrl  = "",
                        SqUrl   = "",
                        HqUrl   = "",
                        LqUrl   = "",
                        CopyUrl = "",

                        PicUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "jpg"),
                        LrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "lrc"),
                        TrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "trc"),
                        KrcUrl = CommonHelper.GetSongUrl("wy", "320", j["id"].ToString(), "krc"),

                        MvId    = j["mv"].ToString(),
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company  = "",
                        Year     = "",
                        Disc     = j["cd"].ToString(),
                        TrackNum = j["no"].ToString(),
                        Type     = "wy"
                    };
                    if (string.IsNullOrEmpty(song.Disc))
                    {
                        song.Disc = "1";
                    }
                    if (!string.IsNullOrEmpty(song.MvId))
                    {
                        if (song.MvId != "0")
                        {
                            song.MvHdUrl = CommonHelper.GetSongUrl("wy", "hd", song.MvId, "mp4");
                            song.MvLdUrl = CommonHelper.GetSongUrl("wy", "ld", song.MvId, "mp4");
                        }
                    }
                    var maxBr = j["privilege"]["maxbr"].ToString();
                    if (maxBr == "999000")
                    {
                        song.BitRate = "无损";
                        song.FlacUrl = CommonHelper.GetSongUrl("wy", "999", song.SongId, "flac");
                        song.SqUrl   = CommonHelper.GetSongUrl("wy", "320", song.SongId, "mp3");
                        song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                        song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                        song.CopyUrl = song.SqUrl;
                    }
                    else if (maxBr == "320000")
                    {
                        song.BitRate = "320K";
                        song.SqUrl   = CommonHelper.GetSongUrl("wy", "320", song.SongId, "mp3");
                        song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                        song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                        song.CopyUrl = song.SqUrl;
                    }
                    else if (maxBr == "160000")
                    {
                        song.BitRate = "192K";
                        song.HqUrl   = CommonHelper.GetSongUrl("wy", "160", song.SongId, "mp3");
                        song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                        song.CopyUrl = song.HqUrl;
                    }
                    else
                    {
                        song.BitRate = "128K";
                        song.LqUrl   = CommonHelper.GetSongUrl("wy", "128", song.SongId, "mp3");
                        song.CopyUrl = song.LqUrl;
                    }
                    if (j["fee"].ToString() == "4" || j["privilege"]["st"].ToString() != "0")
                    {
                        if (song.BitRate == "无损")
                        {
                            song.BitRate = "320K";
                            song.FlacUrl = "";
                        }
                    }
                    list.Add(song);
                }
                catch (Exception ex)
                {
                    CommonHelper.AddLog(ex);
                }
            }
            return(list);
        }
Example #53
0
        private static List <SongResult> GetListByJson(JToken songs)
        {
            if (songs == null)
            {
                return(null);
            }
            var list = new List <SongResult>();

            foreach (JToken j in songs)
            {
                var song = new SongResult
                {
                    SongId      = j["song_id"].ToString(),
                    SongName    = j["title"].ToString(),
                    SongSubName = j["info"]?.ToString(),
                    SongLink    = "http://music.baidu.com/song/" + j["song_id"],

                    ArtistId      = j["ting_uid"].ToString(),
                    ArtistName    = j["author"].ToString(),
                    ArtistSubName = "",

                    AlbumId      = j["album_id"].ToString(),
                    AlbumName    = j["album_title"].ToString(),
                    AlbumSubName = "",
                    AlbumArtist  = j["author"].ToString(),

                    Length  = j["file_duration"] == null ? "" : CommonHelper.NumToTime(j["file_duration"].ToString()),
                    Size    = "",
                    BitRate = "",

                    FlacUrl = "",
                    ApeUrl  = "",
                    WavUrl  = "",
                    SqUrl   = "",
                    HqUrl   = "",
                    LqUrl   = "",
                    CopyUrl = "",

                    PicUrl = "",
                    LrcUrl = j["lrclink"]?.ToString() ?? CommonHelper.GetSongUrl("bd", "128", j["song_id"].ToString(), "lrc"),
                    TrcUrl = "",
                    KrcUrl = "",

                    MvId    = "",
                    MvHdUrl = "",
                    MvLdUrl = "",

                    Language = j["language"]?.ToString(),
                    Company  = "",
                    Year     = j["publishtime"]?.ToString(),
                    Disc     = "1",
                    TrackNum = j["album_no"]?.ToString(),
                    Type     = "bd"
                };

                if (song.ArtistId.Contains(","))
                {
                    song.ArtistId = song.ArtistId.Split(',')[0].Trim();
                }
                if (song.AlbumArtist.Contains(","))
                {
                    song.AlbumArtist = song.AlbumArtist.Split(',')[0].Trim();
                }
                var rate = j["all_rate"].ToString();
                song.BitRate = "128K";
                song.LqUrl   = CommonHelper.GetSongUrl("bd", "128", song.SongId, "mp3");
                if (rate.Contains("192"))
                {
                    song.BitRate = "192K";
                    song.HqUrl   = CommonHelper.GetSongUrl("bd", "192", song.SongId, "mp3");
                }
                if (rate.Contains("256"))
                {
                    song.BitRate = "256K";
                    song.HqUrl   = CommonHelper.GetSongUrl("bd", "256", song.SongId, "mp3");
                }
                if (rate.Contains("320"))
                {
                    song.BitRate = "320K";
                    song.SqUrl   = CommonHelper.GetSongUrl("bd", "320", song.SongId, "mp3");
                }
                if (rate.Contains("flac"))
                {
                    song.BitRate = "无损";
                    song.FlacUrl = CommonHelper.GetSongUrl("bd", "2000", song.SongId, "flac");
                }
                song.CopyUrl = CommonHelper.GetSongUrl("bd", "320", song.SongId, "mp3");
                if (j["has_mv"].ToString() == "1")
                {
                    song.MvHdUrl = CommonHelper.GetSongUrl("bd", "hd", song.SongId, "flv");
                    song.MvLdUrl = CommonHelper.GetSongUrl("bd", "ld", song.SongId, "flv");
                }
                song.PicUrl = CommonHelper.GetSongUrl("bd", "hd", song.SongId, "jpg");
                list.Add(song);
            }
            return(list);
        }
        public static List<SongResult> GetResultsByKey(string key, int page)
        {
            var url = "http://search.kuwo.cn/r.s?all=" + key + "&ft=music&itemset=web_2013&client=kt&pn=" + (page - 1) + "&rn=20&rformat=json&encoding=utf8";
            var html = CommonHelper.GetHtmlContent(url);
            if (string.IsNullOrEmpty(html))
            {
                return null;
            }
            var json = (JObject)JsonConvert.DeserializeObject(html.Trim('(', ')'));
            if (Convert.ToInt32(json["TOTAL"]) <= 0)
            {
                return null;
            }
            var list = new List<SongResult>();
            var songs = json["abslist"];
            foreach (JToken song in songs)
            {
                var single = new SongResult
                {
                    SongId = song["MUSICRID"].ToString(),
                    Name = song["SONGNAME"].ToString(),
                    Artist = song["ARTIST"].ToString(),
                    AlbumArtist = song["ARTIST"].ToString(),
                    Album = song["ALBUM"].ToString(),
                    AlbumId = song["ALBUMID"].ToString()
                };

                if (string.IsNullOrEmpty(single.AlbumId))
                {
                    single.AlbumId = "5211314";
                }
                var format = song["FORMATS"].ToString();
                if (format.Contains("MP3128"))
                {
                    single.LqUrl = "http://antiserver.kuwo.cn/anti.s?response=url&type=convert_url&br=128kmp3&format=mp3&rid=" + single.SongId;
                    single.BitRate = "128K";
                }
                if (format.Contains("MP3192"))
                {
                    single.HqUrl = "http://antiserver.kuwo.cn/anti.s?response=url&type=convert_url&br=192kmp3&format=mp3&rid=" + single.SongId;
                    single.BitRate = "192K";
                }
                if (format.Contains("MP3H"))
                {
                    single.HqUrl = "http://antiserver.kuwo.cn/anti.s?response=url&type=convert_url&br=320kmp3&format=mp3&rid=" + single.SongId;
                    single.LqUrl = "http://antiserver.kuwo.cn/anti.s?response=url&type=convert_url&br=192kmp3&format=mp3&rid=" + single.SongId;
                    single.BitRate = "320K";
                }
                if (format.Contains("AL"))
                {
                    single.ExtHqUrl = "http://antiserver.kuwo.cn/anti.s?response=url&type=convert_url&br=2000kflac&format=ape&rid=" + single.SongId;
                    single.BitRate = "无损";
                }

                

                if (format.Contains("MP4"))
                {
                    single.MvUrl = "http://antiserver.kuwo.cn/anti.s?response=url&type=convert_url&format=mp4&rid=" + single.SongId;
                }
                if (format.Contains("MV"))
                {
                    single.MvUrl = "http://antiserver.kuwo.cn/anti.s?response=url&type=convert_url&format=mkv&rid=" + single.SongId;
                }
                single.CopyUrl = "http://www.musicuu.com/songurl/kw^320^" + single.SongId + ".mp3";
                single.Type = "KW";
                list.Add(single);
            }
            return list;
        }