private static void PrintArtistResult(ArtistResult artistResult) { foreach (var item in artistResult.Artists) { Console.WriteLine("Id: {0} Name: {1} Genre: {2}", item.ArtistId, item.ArtistName, item.PrimaryGenreName); } }
private static ArtistResult SearchArtist(string id, int page, int size) { //http://api.dongting.com/song/singer/1766358 var url = "http://api.dongting.com/song/singer/" + id + "/songs?app=ttpod&from=android&api_version=1.0&size=" + size + "&page=" + page + "&user_id=0&tid=0"; var html = CommonHelper.GetHtmlContent(url); var result = new ArtistResult { ErrorCode = 200, ErrorMsg = "OK", ArtistLink = "", Page = page, Songs = new List <SongResult>() }; if (string.IsNullOrEmpty(html) || html == "null") { result.ErrorCode = 300; result.ErrorMsg = "获取源代码失败"; return(result); } try { var json = JObject.Parse(html); if (json["totalCount"].ToString() == "0") { result.ErrorCode = 404; result.ErrorMsg = "请检查艺术家ID是否正确"; return(null); } var datas = json["data"]; result.Songs = GetListByJson(datas); try { html = CommonHelper.GetHtmlContent("http://api.dongting.com/song/singer/" + id); json = JObject.Parse(html); result.ArtistInfo = json["data"]["brief"].ToString(); result.ArtistLogo = json["data"]["picUrl"].ToString(); result.TransName = json["data"]["alias"].First?.ToString(); result.AlbumSize = json["data"]["albumsCount"].Value <int>(); result.SongSize = json["data"]["songsCount"].Value <int>(); } catch (Exception ex) { CommonHelper.AddLog(ex); } return(result); } catch (Exception ex) { CommonHelper.AddLog(ex); result.ErrorCode = 500; result.ErrorMsg = "解析歌曲时发生错误"; return(result); } }
protected override void OnNavigatedTo(NavigationEventArgs e) { if (IsSame) { try { ConnectedAnimation animation = ConnectedAnimationService.GetForCurrentView().GetAnimation("AlbumBackAnimation"); if (animation != null) { animation.Configuration = new DirectConnectedAnimationConfiguration(); Image image = ((GridViewControl.ContainerFromIndex(GridViewControl.SelectedIndex) as GridViewItem).ContentTemplateRoot as FrameworkElement).FindName("AlbumImage") as Image; animation.TryStart(image); } } catch (Exception) { } } SingerImage.ImageOpened += SingerImage_ImageOpened; if (e.Parameter is ArtistResult Artist) { SingerImage.Opacity = 0; var bitmapimage = new BitmapImage(); SingerImage.Source = bitmapimage; bitmapimage.UriSource = new Uri(Artist.Artist.Img1V1Url); CancelToken = new CancellationTokenSource(); Locker = new AutoResetEvent(false); if (IsSame) { SingerImage.Opacity = 1; return; } this.Artist = Artist; SingerName.Text = Artist.Artist.Name; SingerIntroName.Text = Artist.Artist.Name + "简介:"; SingerIntroText.Text = " " + (Artist.Artist.BriefDesc ?? "无简介"); if (Artist.Artist.Alias.Count != 0) { GroupName.Text = Artist.Artist.Alias[0]; } else { GroupName.Text = ""; } SongCount.Text = "单曲数: " + Artist.Artist.MusicSize.ToString(); MVCount.Text = "MV数: " + Artist.Artist.MvSize.ToString(); AlbumCount.Text = "专辑数: " + Artist.Artist.AlbumSize.ToString(); } }
private async Task <SenderResult> SetupAlbum(AlbumRequest model, ArtistResult artist, LidarrSettings settings) { // Get the album id var albums = await _lidarrApi.GetAllAlbumsByArtistId(artist.id, settings.ApiKey, settings.FullUri); var album = albums.FirstOrDefault(x => x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase)); var maxRetryCount = 10; // 5 seconds var currentRetry = 0; while (!albums.Any() || album == null) { if (currentRetry >= maxRetryCount) { break; } currentRetry++; await Task.Delay(500); albums = await _lidarrApi.GetAllAlbumsByArtistId(artist.id, settings.ApiKey, settings.FullUri); album = albums.FirstOrDefault(x => x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase)); } // Get the album we want. if (album == null) { return(new SenderResult { Message = "Could not find album in Lidarr", Sent = false, Success = false }); } var result = await _lidarrApi.MontiorAlbum(album.id, settings.ApiKey, settings.FullUri); if (!settings.AddOnly) { await _lidarrApi.AlbumSearch(new[] { result.id }, settings.ApiKey, settings.FullUri); } if (result.monitored) { return(new SenderResult { Message = "Album has been requested!", Sent = true, Success = true }); } return(new SenderResult { Message = "Could not set album to monitored", Sent = false, Success = false }); }
private static ArtistResult SearchArtist(string id) { var text = "{\"id\":\"" + id + "\"}"; var html = GetEncHtml("http://music.163.com/weapi/v1/artist/" + id + "?csrf_token=", text); var result = new ArtistResult { ErrorCode = 200, ErrorMsg = "OK", ArtistLink = "http://music.163.com/#/artist?id=" + id, Songs = new List <SongResult>() }; if (string.IsNullOrEmpty(html) || html == "null") { result.ErrorCode = 300; result.ErrorMsg = "获取源代码失败"; return(result); } try { var json = JObject.Parse(html); var alias = json["artist"]["alias"]?.First?.ToString(); result.TransName = json["artist"]["trans"].ToString(); result.ArtistInfo = json["artist"]["briefDesc"].ToString(); result.ArtistLogo = json["artist"]["img1v1Url"].ToString(); result.Page = 1; result.AlbumSize = json["artist"]["albumSize"].Value <int>(); result.SongSize = json["artist"]["musicSize"].Value <int>(); var datas = json["hotSongs"]; result.Songs = GetListByJson(datas); if (!string.IsNullOrEmpty(alias)) { foreach (var s in result.Songs) { s.ArtistSubName = alias; } } return(result); } catch (Exception ex) { CommonHelper.AddLog(ex); result.ErrorCode = 500; result.ErrorMsg = "热门歌曲解析失败"; return(result); } }
static public string MusicJson(string musicid) { var api = new NeteaseMusicAPI(); var apires = api.Search(musicid.ToString(), 1); IList <Music_info> muscis = new List <Music_info>(); var art = new ArtistResult(); musicplay music = new musicplay(); i++; music.id = i; music.song = apires.Result.Songs[0].Name; music.singer.name = apires.Result.Songs[0].Ar[0].Name; music.time = apires.Result.Songs[0].PublishTime.ToString(); music.words = api.Lyric(apires.Result.Songs[0].Id).Lrc.Lyric; music.src = api.GetSongsUrl(new long[] { apires.Result.Songs[0].Id }).Data[0].Url; music.img = apires.Result.Songs[0].Al.PicUrl; music.album = apires.Result.Songs[0].Al.Name; var a = api.Lyric(apires.Result.Songs[0].Id); string output = JsonConvert.SerializeObject(music); return(output); }
private ArtistResult SearchArtist(string id, int page, int size) { var url = "http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.artist.getSongList&format=json&order=2&tinguid=" + id + "&offset=" + (page - 1) * size + "&limits=" + size; var html = CommonHelper.GetHtmlContent(url); var result = new ArtistResult { ErrorCode = 200, ErrorMsg = "OK", ArtistLink = "", Page = page, Songs = new List <SongResult>() }; if (string.IsNullOrEmpty(html) || html == "null") { result.ErrorCode = 300; result.ErrorMsg = "获取源代码失败"; return(result); } try { var json = JObject.Parse(html); if (json["error_code"].ToString() != "22000") { result.ErrorCode = 404; result.ErrorMsg = "请检查艺术家ID是否正确"; return(null); } var datas = json["songlist"]; try { result.Songs = GetListByJson(datas); html = CommonHelper.GetHtmlContent("http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.artist.getInfo&format=json&tinguid=" + id); if (string.IsNullOrEmpty(html)) { return(result); } json = JObject.Parse(html); result.ArtistInfo = json["intro"].ToString(); result.ArtistLink = json["url"].ToString(); result.ArtistLogo = json["avatar_s500"]?.ToString() ?? json["avatar_s180"].ToString(); try { result.AlbumSize = Convert.ToInt32(json["albums_total"].ToString()); result.SongSize = Convert.ToInt32(json["songs_total"].ToString()); } catch (Exception ex) { CommonHelper.AddLog(ex); } } catch (Exception ex) { CommonHelper.AddLog(ex); } return(result); } catch (Exception ex) { CommonHelper.AddLog(ex); result.ErrorCode = 500; result.ErrorMsg = "解析歌曲时发生错误"; return(result); } }
private static ArtistResult SearchArtist(string id, int page, int size) { var url = "http://ioscdn.kugou.com/api/v3/singer/song?singerid=" + id + "&page=" + page + "&pagesize=" + size + "&sorttype=2&plat=2&version=7910"; var html = CommonHelper.GetHtmlContent(url); var result = new ArtistResult { ErrorCode = 200, ErrorMsg = "OK", ArtistLink = "", Page = page, Songs = new List <SongResult>() }; if (string.IsNullOrEmpty(html) || html == "null") { result.ErrorCode = 300; result.ErrorMsg = "获取源代码失败"; return(result); } try { var json = JObject.Parse(html); if (json["data"]["total"].ToString() == "0") { result.ErrorCode = 404; result.ErrorMsg = "请检查艺术家ID是否正确"; return(null); } var datas = json["data"]["info"]; result.Songs = GetListByJson(datas); try { html = CommonHelper.GetHtmlContent("http://mobilecdn.kugou.com/api/v3/singer/info?singerid=" + id + "&with_res_tag=1"); json = JObject.Parse(html); result.ArtistInfo = json["data"]["intro"].ToString(); result.ArtistLogo = json["data"]["imgurl"].ToString().Replace("{size}", "480"); result.AlbumSize = json["data"]["albumcount"].Value <int>(); result.SongSize = json["data"]["songcount"].Value <int>(); result.TransName = json["data"]["singername"].ToString(); foreach (var song in result.Songs) { song.ArtistName = result.TransName; song.ArtistId = id; song.AlbumArtist = result.TransName; } } catch (Exception ex) { CommonHelper.AddLog(ex); } return(result); } catch (Exception ex) { CommonHelper.AddLog(ex); result.ErrorCode = 500; result.ErrorMsg = "解析歌曲时发生错误"; return(result); } }
private static ArtistResult SearchArtist(string id, int page, int size) { var str = "singermid=" + id; if (Regex.IsMatch(id, @"^\d+$")) { str = "singerid=" + id; } var url = "http://i.y.qq.com/v8/fcg-bin/fcg_v8_singer_track_cp.fcg?order=listen&begin=" + (page - 1) * size + "&num=" + size + "&" + str + "&g_tk=5381&uin=0&format=jsonp&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=h5page&needNewCode=1&from=h5"; var html = CommonHelper.GetHtmlContent(url).Replace("callback(", "").TrimEnd(')'); var result = new ArtistResult { ErrorCode = 200, ErrorMsg = "OK", ArtistLink = "", Page = page, Songs = new List <SongResult>() }; if (string.IsNullOrEmpty(html) || html == "null") { result.ErrorCode = 300; result.ErrorMsg = "获取源代码失败"; return(result); } try { var json = JObject.Parse(html); if (json["message"].ToString() != "succ") { result.ErrorCode = 404; result.ErrorMsg = "请检查艺术家ID是否正确"; return(null); } var datas = json["data"]["list"]; result.Songs = GetListByJson(datas, true); var mid = json["data"]["singer_mid"].ToString(); try { result.ArtistInfo = json["data"]["SingerDesc"].ToString(); result.ArtistLink = "http://y.qq.com/#type=singer&mid=" + mid; result.ArtistLogo = "http://i.gtimg.cn/music/photo_new/T001R500x500M000" + mid + ".jpg"; result.AlbumSize = -1; result.SongSize = json["data"]["total"].Value <int>(); } catch (Exception ex) { CommonHelper.AddLog(ex); } return(result); } catch (Exception ex) { CommonHelper.AddLog(ex); result.ErrorCode = 500; result.ErrorMsg = "解析歌曲时发生错误"; return(result); } }
private static ArtistResult SearchArtist(string id, int page, int size) { //http://api.dongting.com/song/singer/1766358 var url = "http://api.dongting.com/song/singer/" + id + "/songs?app=ttpod&from=android&api_version=1.0&size="+size+"&page="+page+"&user_id=0&tid=0"; var html = CommonHelper.GetHtmlContent(url); var result = new ArtistResult { ErrorCode = 200, ErrorMsg = "OK", ArtistLink = "http://music.163.com/#/artist?id=" + id, Page = page, Songs = new List<SongResult>() }; if (string.IsNullOrEmpty(html) || html == "null") { result.ErrorCode = 300; result.ErrorMsg = "获取源代码失败"; return result; } try { var json = JObject.Parse(html); if (json["totalCount"].ToString() == "0") { return null; } var datas = json["data"]; result.Songs = GetListByJson(datas); try { html = CommonHelper.GetHtmlContent("http://api.dongting.com/song/singer/" + id); json = JObject.Parse(html); result.ArtistInfo = json["data"]["brief"].ToString(); result.ArtistLogo = json["data"]["picUrl"].ToString(); result.TransName = json["data"]["alias"].First?.ToString(); result.AlbumSize = json["data"]["albumsCount"].Value<int>(); result.SongSize = json["data"]["songsCount"].Value<int>(); } catch (Exception ex) { CommonHelper.AddLog(ex); } return result; } catch (Exception ex) { CommonHelper.AddLog(ex); result.ErrorCode = 500; result.ErrorMsg = "解析歌曲时发生错误"; return result; } }
private static ArtistResult SearchArtist(string id, int page, int size) { var url = "http://search.kuwo.cn/r.s?ft=music&itemset=newkw&newsearch=1&cluster=0&rn=" + size + "&pn=" + (page - 1) + "&primitive=0&rformat=json&encoding=UTF8&artist=" + id; if (Regex.IsMatch(id, @"^\d+$")) { url = "http://search.kuwo.cn/r.s?ft=music&itemset=newkw&newsearch=1&cluster=0&rn=" + size + "&pn=" + (page - 1) + "&primitive=0&rformat=json&encoding=UTF8&artistid=" + id; } var html = CommonHelper.GetHtmlContent(url, 0, null, false); var result = new ArtistResult { ErrorCode = 200, ErrorMsg = "OK", ArtistLink = "", Page = page, Songs = new List <SongResult>() }; if (string.IsNullOrEmpty(html) || html == "null") { result.ErrorCode = 300; result.ErrorMsg = "获取源代码失败"; return(result); } try { var json = JObject.Parse(html); if (json["TOTAL"].ToString() == "0") { result.ErrorCode = 404; result.ErrorMsg = "请检查艺术家ID是否正确"; return(null); } var datas = json["abslist"]; result.Songs = GetListByJson(datas); try { html = CommonHelper.GetHtmlContent("http://search.kuwo.cn/r.s?stype=artistinfo&artist=" + id, 0, null, false); if (Regex.IsMatch(id, @"^\d+$")) { html = CommonHelper.GetHtmlContent("http://search.kuwo.cn/r.s?stype=artistinfo&artistid=" + id); } json = JObject.Parse(html); result.ArtistInfo = json["info"].ToString(); result.ArtistLogo = "http://star.kuwo.cn/star/starheads/" + json["pic"].ToString().Replace("120/", "500/"); result.AlbumSize = Convert.ToInt32(json["data"]["albumnum"]); result.SongSize = Convert.ToInt32(json["data"]["musicnum"]); result.TransName = json["name"].ToString(); } catch (Exception ex) { CommonHelper.AddLog(ex); } return(result); } catch (Exception ex) { CommonHelper.AddLog(ex); result.ErrorCode = 500; result.ErrorMsg = "解析歌曲时发生错误"; return(result); } }
static void Main() { List <ArtistResult> Results = new List <ArtistResult>(); List <string> Artists = new List <string>(); string PlaylistName = ConfigurationManager.AppSettings.Get("Playlist"); string line; // Read the file and display it line by line. System.IO.StreamReader file = new System.IO.StreamReader(@"artists.txt"); while ((line = file.ReadLine()) != null) { if (!string.IsNullOrEmpty(line)) { Artists.Add(line.Trim()); } } // Sort duplicates Artists = Artists.Distinct().ToList(); var playlists = JsonConvert.DeserializeObject <PlaylistResponse>(GetResponse($@"{SpotifyURL}me/playlists", "", "GET")); var playlist = playlists.items.Single(x => x.name == PlaylistName); var playlistTracks = JsonConvert.DeserializeObject <PlaylistTracksResponse>(GetResponse($@"{SpotifyURL}users/{playlist.owner.id}/playlists/{playlist.id}/tracks", "", "GET")); string[] preferredGenres = ConfigurationManager.AppSettings.Get("PreferredGenres").Split(','); foreach (var ar in Artists) { var r = new ArtistResult() { Name = ar }; var j = JsonConvert.DeserializeObject <ArtishSearchResponse>(GetResponse($@"{SpotifyURL}search", $@"q={HttpUtility.UrlEncode(ar)}&limit=100&type=artist", "GET")).artists.items; if (j.Count() == 0) { Results.Add(r); continue; } // One result - don't have much choice!! var matchedArtist = j.Count() == 1 ? j.Single() : null; // Otherwise... if (matchedArtist == null) { // If there are exact matches, only use these var exactMatches = j.Where(x => x.name.ToLower() == ar.ToLower()).ToArray(); if (exactMatches.Any()) { j = exactMatches; } // If none of these, try exact matches excluding special characters and only use these if (!exactMatches.Any()) { var exactMatchesWithoutCharactes = j.Where(x => x.name.ToLower().RemoveSpecialCharacters() == ar.ToLower().RemoveSpecialCharacters()).ToArray(); if (exactMatchesWithoutCharactes.Any()) { j = exactMatchesWithoutCharactes; } } // TODO: Few more things to play with - "the", case etc // If one exact match use this matchedArtist = matchedArtist ?? (j.Where(x => x.name.ToLower() == ar.ToLower()).Count() == 1 ? j.Where(x => x.name.ToLower() == ar.ToLower()).Single() : null); // Looks for bands with the preffered genre and prioritise these matchedArtist = matchedArtist ?? j.OrderByDescending(x => x.popularity).FirstOrDefault(x => x.genres.Any(y => preferredGenres.Any(z => y.Contains(z)))); // Then prioritise no genre (if it's not the above we probaby don't want it matchedArtist = matchedArtist ?? j.OrderByDescending(x => x.popularity).FirstOrDefault(x => !x.genres.Any()); // Just take the most popular left over one matchedArtist = matchedArtist ?? j.OrderByDescending(x => x.popularity).First(); } if (matchedArtist != null) { r.MatchedArtist = matchedArtist.name; r.ArtistId = matchedArtist.id; r.Popularity = matchedArtist.popularity; r.Genres = matchedArtist.genres.ToList(); r.Followers = matchedArtist.followers.total; // Check if the artist is already in the playlist var existingTrack = playlistTracks.items.SingleOrDefault(x => x.track.artists.First().id == matchedArtist.id); if (existingTrack != null) { r.Existing = true; r.Title = existingTrack.track.name; r.SongId = existingTrack.track.id; } else { var t = JsonConvert.DeserializeObject <TopTracksResponse>(GetResponse($@"{SpotifyURL}artists/{matchedArtist.id}/top-tracks", "country=GB&limit=50", "GET")); var artistTracks = t.tracks.FirstOrDefault(); if (artistTracks != null) { r.Title = artistTracks.name; r.SongId = artistTracks.id; r.SongPopularity = artistTracks.popularity; r.SongsCount = t.tracks.Count(); if (artistTracks != null) { // Add to playlist! GetResponse($@"{SpotifyURL}users/{playlist.owner.id}/playlists/{playlist.id}/tracks", $@"uris=spotify%3Atrack%3A{artistTracks.id}", "POST"); } } } } Results.Add(r); } using (System.IO.StreamWriter outputFile = new System.IO.StreamWriter($@"results{DateTime.Now.ToString("yyyyMMddHHmmss")}.csv", false)) { outputFile.WriteLine(string.Join("", Results.OrderByDescending(x => x.Popularity).ThenByDescending(x => x.MatchedArtist == "").Select(x => x.GetData()))); } }
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); }
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; }