Exemple #1
0
 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);
     }
 }
Exemple #2
0
        private static ArtistResult SearchArtist(string id, int page, int size)
        {
            //http://api.dongting.com/song/singer/1766358

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

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取源代码失败";
                return(result);
            }
            try
            {
                var json = JObject.Parse(html);
                if (json["totalCount"].ToString() == "0")
                {
                    result.ErrorCode = 404;
                    result.ErrorMsg  = "请检查艺术家ID是否正确";
                    return(null);
                }
                var datas = json["data"];
                result.Songs = GetListByJson(datas);
                try
                {
                    html = CommonHelper.GetHtmlContent("http://api.dongting.com/song/singer/" + id);
                    json = JObject.Parse(html);
                    result.ArtistInfo = json["data"]["brief"].ToString();
                    result.ArtistLogo = json["data"]["picUrl"].ToString();
                    result.TransName  = json["data"]["alias"].First?.ToString();
                    result.AlbumSize  = json["data"]["albumsCount"].Value <int>();
                    result.SongSize   = json["data"]["songsCount"].Value <int>();
                }
                catch (Exception ex)
                {
                    CommonHelper.AddLog(ex);
                }
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌曲时发生错误";
                return(result);
            }
        }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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
            });
        }
Exemple #5
0
        private static ArtistResult SearchArtist(string id)
        {
            var text   = "{\"id\":\"" + id + "\"}";
            var html   = GetEncHtml("http://music.163.com/weapi/v1/artist/" + id + "?csrf_token=", text);
            var result = new ArtistResult
            {
                ErrorCode  = 200,
                ErrorMsg   = "OK",
                ArtistLink = "http://music.163.com/#/artist?id=" + id,
                Songs      = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取源代码失败";
                return(result);
            }
            try
            {
                var json  = JObject.Parse(html);
                var alias = json["artist"]["alias"]?.First?.ToString();
                result.TransName  = json["artist"]["trans"].ToString();
                result.ArtistInfo = json["artist"]["briefDesc"].ToString();
                result.ArtistLogo = json["artist"]["img1v1Url"].ToString();
                result.Page       = 1;
                result.AlbumSize  = json["artist"]["albumSize"].Value <int>();
                result.SongSize   = json["artist"]["musicSize"].Value <int>();
                var datas = json["hotSongs"];
                result.Songs = GetListByJson(datas);
                if (!string.IsNullOrEmpty(alias))
                {
                    foreach (var s in result.Songs)
                    {
                        s.ArtistSubName = alias;
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "热门歌曲解析失败";
                return(result);
            }
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
            }
        }
Exemple #8
0
        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);
            }
        }
Exemple #9
0
        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&notice=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);
            }
        }
Exemple #10
0
        private static ArtistResult SearchArtist(string id, int page, int size)
        {
            //http://api.dongting.com/song/singer/1766358

            var url = "http://api.dongting.com/song/singer/" + id +
                     "/songs?app=ttpod&from=android&api_version=1.0&size="+size+"&page="+page+"&user_id=0&tid=0";
            var html = CommonHelper.GetHtmlContent(url);
            var result = new ArtistResult
            {
                ErrorCode = 200,
                ErrorMsg = "OK",
                ArtistLink = "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;
            }
        }
Exemple #11
0
        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);
            }
        }
Exemple #12
0
        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())));
            }
        }
Exemple #13
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);
        }
Exemple #14
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;
        }