Ejemplo n.º 1
0
        private async void SingerHotSongList_CurrentItemChanged(MediaPlaybackList sender, CurrentMediaPlaybackItemChangedEventArgs args)
        {
            uint CurrentIndex = sender.CurrentItemIndex;

            if (CurrentIndex == 4294967295)
            {
                return;
            }
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
            {
                if (MediaControl.MediaPlayer.Source == MediaPlayList.SingerHotSongList && MediaPlayList.HotSongBackup.Count > 0)
                {
                    SearchSingleMusic music = MediaPlayList.HotSongBackup[Convert.ToInt32(CurrentIndex)];
                    var SongSearchResult    = await NeteaseMusicAPI.GetInstance().SearchAsync <SingleMusicSearchResult>(music.MusicName, 5, 0, NeteaseMusicAPI.SearchType.Song);

                    foreach (var Song in SongSearchResult.Result.Songs.Where(Song => Song.Name == music.MusicName && Song.Al.Name == music.Album).Select(Song => Song))
                    {
                        var bitmap            = new BitmapImage();
                        PicturePlaying.Source = bitmap;
                        bitmap.UriSource      = new Uri(Song.Al.PicUrl);
                        break;
                    }

                    MediaItemDisplayProperties Props = args.NewItem.GetDisplayProperties();
                    Props.Type = Windows.Media.MediaPlaybackType.Music;
                    Props.MusicProperties.Title  = music.MusicName;
                    Props.MusicProperties.Artist = music.Album;
                    args.NewItem.ApplyDisplayProperties(Props);
                }
            });
        }
Ejemplo n.º 2
0
        public void GetUserBriefInfoTest()
        {
            NeteaseMusicAPI api    = new NeteaseMusicAPI();
            var             result = api.GetUserBriefInfo(TestNeteaseID);

            Assert.AreNotEqual(result, null);
        }
Ejemplo n.º 3
0
        private async void MV_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
        {
            MusicListControl.SelectedItem = ((TextBlock)sender).DataContext;
            var Result = await NeteaseMusicAPI.GetInstance().GetMVAsync((int)FavouriteMusicCollection[MusicListControl.SelectedIndex].MVid);

            MusicPage.ThisPage.MusicNav.Navigate(typeof(MusicMV), Result.Data, new DrillInNavigationTransitionInfo());
        }
Ejemplo n.º 4
0
        public static IList <Album_info> Search_Album(long id, int i = 30)
        {
            var api    = new NeteaseMusicAPI();
            var apires = api.Album(id);
            List <Album_info> musics = new List <Album_info>();
            var name           = apires.Album.Name;
            var album_username = apires.Album.Artists[0].Name;
            var img            = apires.Album.PicUrl;
            int a = 0;

            foreach (var song in apires.Songs)
            {
                if (a < i)
                {
                    Album_info music = new Album_info();
                    music.album_username = album_username;
                    music.dec            = apires.Album.Description.ToString();
                    music.music_name     = string.Format("{0}", song.Name);
                    music.musci_url      = api.GetSongsUrl(new long[] { song.Id }).Data[0].Url;
                    //    music.music_alname = song.Al.Name;
                    music.id     = song.Id;
                    music.name   = name;
                    music.img    = img;
                    music.singer = song.Ar[0].Name;
                    musics.Add(music);
                    a++;
                }
                else
                {
                    break;
                }
            }
            return(musics);
        }
Ejemplo n.º 5
0
        private async void MVSuggestControl_ItemClick(object sender, ItemClickEventArgs e)
        {
            var Result = await NeteaseMusicAPI.GetInstance().GetMVAsync((e.ClickedItem as MVSuggestion).MovieID);

            MVName.Text = Result.Data.Name;

            if (Result.Data.Desc == null)
            {
                MVIntro.Text = "无简介";
            }
            else
            {
                MVIntro.Text = Result.Data.Desc == "" ? "无简介" : Result.Data.Desc;
            }

            //优先选择720P视频,若不支持则依次递减清晰度
            if (Result.Data.Brs.The720 != null)
            {
                MovieUri         = new Uri(Result.Data.Brs.The720);
                MVControl.Source = MediaSource.CreateFromUri(MovieUri);
            }
            else if (Result.Data.Brs.The480 != null)
            {
                MovieUri         = new Uri(Result.Data.Brs.The480);
                MVControl.Source = MediaSource.CreateFromUri(MovieUri);
            }
            else if (Result.Data.Brs.The240 != null)
            {
                MovieUri         = new Uri(Result.Data.Brs.The240);
                MVControl.Source = MediaSource.CreateFromUri(MovieUri);
            }
        }
Ejemplo n.º 6
0
        private void PlayUrlCommandExecute()
        {
            NeteaseMusicAPI api       = new NeteaseMusicAPI();
            var             apiresult = api.Search(MusicName);
            var             songList  = "";

            foreach (var song in apiresult.Result.Songs)
            {
                songList += string.Format("{0} - {1} ({2})\r\n,", song.Name, song.Ar[0].Name, api.GetSongsUrl(new long[] { song.Id }).Data[0].Url);
            }
        }
Ejemplo n.º 7
0
        private async void PlayAll_Click(object sender, RoutedEventArgs e)
        {
            bool ExistCannotPlay = false;

            if (MediaPlayList.AlbumSongList.Items.Count != 0)
            {
                MediaPlayList.AlbumSongBackup.Clear();
                MediaPlayList.AlbumSongList.Items.Clear();
            }

            MusicPage.ThisPage.MediaControl.AutoPlay           = true;
            MusicPage.ThisPage.MediaControl.MediaPlayer.Source = MediaPlayList.AlbumSongList;

            foreach (SearchSingleMusic item in AlbumCollection)
            {
                MediaPlayList.AlbumSongBackup.Add(new SearchSingleMusic(item.MusicName, item.Artist, item.Album, item.Duration, item.SongID[0], item.ImageUrl, item.MVid));

                string uri = (await NeteaseMusicAPI.GetInstance().GetSongsUrlAsync(item.SongID)).Data[0].Url;
                if (uri == null)
                {
                    ExistCannotPlay = true;
                    continue;
                }

                //采用延迟加载技术,仅当该歌曲处于即将播放状态时才调用Binder_Binding加载资源
                MediaBinder binder = new MediaBinder
                {
                    Token = uri
                };
                binder.Binding += Binder_Binding;
                MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromMediaBinder(binder));

                //与系统的SMTC集成
                MediaItemDisplayProperties Props = Item.GetDisplayProperties();
                Props.Type = Windows.Media.MediaPlaybackType.Music;
                Props.MusicProperties.Title  = item.MusicName;
                Props.MusicProperties.Artist = item.Album;
                Item.ApplyDisplayProperties(Props);

                MediaPlayList.AlbumSongList.Items.Add(Item);
            }
            if (ExistCannotPlay)
            {
                ExistCannotPlay = false;
                ContentDialog dialog = new ContentDialog
                {
                    Title           = "抱歉",
                    Content         = "部分歌曲暂时无法播放,已自动忽略",
                    CloseButtonText = "确定",
                    Background      = Application.Current.Resources["DialogAcrylicBrush"] as Brush
                };
                await dialog.ShowAsync();
            }
        }
Ejemplo n.º 8
0
        public MainForm()
        {
            InitializeComponent();

            comboBox_output_name.SelectedIndex   = 0;
            comboBox_output_encode.SelectedIndex = 0;
            comboBox_diglossia_lrc.SelectedIndex = 0;
            comboBox_search_type.SelectedIndex   = 0;
            comboBox_dot.SelectedIndex           = 0;

            api = new NeteaseMusicAPI();
        }
Ejemplo n.º 9
0
        public void SendRequestTest()
        {
            NeteaseMusicAPI api    = new NeteaseMusicAPI();
            var             result =
                api.SendData("http://music.163.com/weapi/v1/resource/comments/A_PL_0_740840138",
                             "{\"rid\":\"A_PL_0_740840138\",\"offset\":\"0\",\"total\":\"true\",\"limit\":\"20\",\"csrf_token\":\"\"}", "viK2GeGEcwnIPOzB");

            Assert.IsTrue(result?.IndexOf("isMusician") != -1);
            result =
                api.SendData("http://music.163.com/weapi/v1/resource/comments/A_PL_0_740840138",
                             "{\"rid\":\"A_PL_0_740840138\",\"offset\":\"0\",\"total\":\"true\",\"limit\":\"20\",\"csrf_token\":\"\"}");
            Assert.IsTrue(result?.IndexOf("isMusician") != -1);
        }
Ejemplo n.º 10
0
        private async void MVGridView_ItemClick(object sender, ItemClickEventArgs e)
        {
            LoadingControl.IsLoading = true;
            var Result = await NeteaseMusicAPI.GetInstance().GetMVAsync((e.ClickedItem as SingerMV).MovieID);

            await Task.Delay(500);

            LoadingControl.IsLoading = false;
            MusicPage.ThisPage.MusicNav.Navigate(typeof(MusicMV), Result.Data, new SlideNavigationTransitionInfo()
            {
                Effect = SlideNavigationTransitionEffect.FromRight
            });
        }
Ejemplo n.º 11
0
        private async void MV_PointerPressed(object sender, PointerRoutedEventArgs e)
        {
            LoadingControl.IsLoading = true;
            AlbumList.SelectedItem   = ((TextBlock)sender).DataContext;
            var Result = await NeteaseMusicAPI.GetInstance().GetMVAsync((int)AlbumCollection[AlbumList.SelectedIndex].MVid);

            LoadingControl.IsLoading = false;
            await Task.Delay(500);

            MusicPage.ThisPage.MusicNav.Navigate(typeof(MusicMV), Result.Data, new SlideNavigationTransitionInfo()
            {
                Effect = SlideNavigationTransitionEffect.FromRight
            });
        }
Ejemplo n.º 12
0
        public void Init()
        {
            var count   = 0;
            var api     = new NeteaseMusicAPI();
            var request = api.Search(SearchName);

            playList.Clear();
            foreach (var song in request.Result.Songs)
            {
                count++;
                if (count < 20)
                {
                    playList.Add(new MusicInfo(api.GetSongsUrl(new long[] { song.Id }).Data[0].Url, song.Name, song.Ar[0].Name));
                }
            }
        }
Ejemplo n.º 13
0
        public void GetUserInfoTest()
        {
            NeteaseMusicAPI api    = new NeteaseMusicAPI();
            var             result = api.GetUserPlaylists(TestNeteaseID);

            Assert.AreNotEqual(result, null);
            result = api.GetUserEvents(TestNeteaseID);
            Assert.AreNotEqual(result, null);
            result = api.GetUserFollowers(TestNeteaseID);
            Assert.AreNotEqual(result, null);
            result = api.GetUserFollows(TestNeteaseID);
            Assert.AreNotEqual(result, null);
            result = api.GetUserPlayRecords(TestNeteaseID);
            Assert.AreNotEqual(result, null);
            result = api.GetAlbumComments(TestAlbumID);
            Assert.AreNotEqual(result, null);
        }
Ejemplo n.º 14
0
        private async void GridViewControl_ItemClick(object sender, ItemClickEventArgs e)
        {
            LoadingControl.IsLoading = true;
            var Result = await NeteaseMusicAPI.GetInstance().GetAlbumAsync((e.ClickedItem as SingerAlbum).ID);

            LoadingControl.IsLoading = false;
            await Task.Delay(500);


            Image image = ((GridViewControl.ContainerFromItem(e.ClickedItem) as GridViewItem).ContentTemplateRoot as FrameworkElement).FindName("AlbumImage") as Image;

            ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("ToAlbumAnimation", image).Configuration = new BasicConnectedAnimationConfiguration();

            MusicPage.ThisPage.MusicNav.Navigate(typeof(MusicAlbum), Result, new SlideNavigationTransitionInfo()
            {
                Effect = SlideNavigationTransitionEffect.FromRight
            });
        }
Ejemplo n.º 15
0
        public void HttpPostTest()
        {
            NeteaseMusicAPI api      = new NeteaseMusicAPI();
            var             mi       = typeof(NeteaseMusicAPI).GetMethod("HttpPost", BindingFlags.NonPublic | BindingFlags.Instance);
            var             CallFunc =
                (Func <string, FormUrlEncodedContent, string>)Delegate.CreateDelegate(
                    typeof(Func <string, FormUrlEncodedContent, string>), api, mi);

            //Text Response Request
            {
                var form = new FormUrlEncodedContent(new Dictionary <string, string>
                {
                    {
                        "params",
                        "T9tlab0mBb/kSLfGU72O8fS0DismJUSO0rGS7t0I4foDPGWTLkAFy61fvw7ddoZIXvcsAypCrfvVvsZtQqi32UiQtIWVTre7mgJnTzPXwo2NW8ctoQIvH2gZmVYBeGiqWsfh/+9ct4ZzDds56q3ETMPWPbjL40UF0o29e0tChzy+72VAbzbxrFfY9F0OfrMBYx5y+JhigZEbmQv9BPDTq9DD+CmU+Oaek2EAz6QfvA52Gw0WCr/v45x7jro8f+UgocazZeMF0dbWia175e4qHD4ALt8smEpR0S3Ipbk5zA+MBe9EHijVHzq7RV5+ib3siJoq49804fAeqlR8zm225nqJ6X/HyTsUHNzh+Pudsh0="
                    },
                    {
                        "encSecKey",
                        "6437513d03b418ceadcaf6f25f87d88ab5e228b45536bf46b98f2355376bed1bc792c3b2e36496035da1fb7a8ffc44cd87038a97e546445c1e6ce76b9e616f354301c958d7cb4ed65c34cea6f03f97c06d2ef57b65ba7fd3afee3316b5b41e3560f8a93cfb9539ccecd536137226eb025eb8c528e684133eed2c1787e5dd26bf"
                    }
                });
                var result = CallFunc("http://music.163.com/weapi/feedback/weblog", form);
                Assert.AreEqual("{\"code\":200}", result);
            }

            /*
             * //GZip Response Request
             * {
             *  var form = new FormUrlEncodedContent(new Dictionary<string, string>
             *  {
             *      {
             *          "params",
             *          "sjOijmHnXA/HOpUj9YcfcfD50GETwiGotS6v+I6+js1tT+9Y1/700Xw/MliMEg2P"
             *      },
             *      {
             *          "encSecKey",
             *          "c3aca22b9f1121390d34ea415914c59c1fa7a523a94a4452a77d6e3d320626e451afe402b2fa28fc3232d8fe0920251763d03ddd2b63ef4d569eed2460a93d987519db02ade38effe49c5fde9d7db186c28056ee9d305db73a5856d6eadc99e86b46df164ae14461b5e40e7c34c675de1071b34d0bf86606bf3e3ac4dafcba63"
             *      }
             *  });
             *  var result = CallFunc("http://music.163.com/weapi/discovery/recommend/resource", form);
             *  Assert.AreEqual("{\"msg\":null,\"code\":301}", result);
             * }
             */
        }
Ejemplo n.º 16
0
        public static List <Music_info> Search(string musicname, int i = 10)
        {
            var api    = new NeteaseMusicAPI();
            var apires = api.Search(musicname, i);
            var name   = "";
            List <Music_info> musics = new List <Music_info>();

            name = apires.Result.Songs[0].Ar[0].Name;
            foreach (var song in apires.Result.Songs)
            {
                Music_info music = new Music_info();
                music.music_name   = string.Format("{0}", song.Name);
                music.music_alname = song.Ar[0].Name;
                music.musci_url    = api.GetSongsUrl(new long[] { song.Id }).Data[0].Url;
                music.music_picurl = song.Al.PicUrl;
                music.album        = song.Al.Name;
                music.id           = song.Id;
                music.albumid      = song.Al.Id;
                musics.Add(music);
            }
            return(musics);
        }
Ejemplo n.º 17
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);
        }
Ejemplo n.º 18
0
        private async void SymbolIcon_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
        {
            HotSongList.SelectedItem = ((SymbolIcon)sender).DataContext;
            var SongURL = (await NeteaseMusicAPI.GetInstance().GetSongsUrlAsync(HotSongCollection[HotSongList.SelectedIndex].SongID)).Data[0].Url;

            if (SongURL == null)
            {
                ContentDialog dialog = new ContentDialog
                {
                    Title           = "抱歉",
                    Content         = "当前歌曲暂时无法播放",
                    CloseButtonText = "确定",
                    Background      = Application.Current.Resources["DialogAcrylicBrush"] as Brush
                };
                await dialog.ShowAsync();

                return;
            }
            MusicPage.ThisPage.MediaControl.MediaPlayer.Source = MediaSource.CreateFromUri(new Uri(SongURL));

            var music = HotSongCollection[HotSongList.SelectedIndex];

            var SongSearchResult = await NeteaseMusicAPI.GetInstance().SearchAsync <SingleMusicSearchResult>(music.MusicName, 5, 0, NeteaseMusicAPI.SearchType.Song);

            foreach (var Song in SongSearchResult.Result.Songs.Where(Song => Song.Name == music.MusicName && Song.Al.Name == music.Album).Select(Song => Song))
            {
                var bitmap = new BitmapImage();
                MusicPage.ThisPage.PicturePlaying.Source = bitmap;
                bitmap.UriSource = new Uri(Song.Al.PicUrl);
                MusicSearch.ForDetail_ImageURL = Song.Al.PicUrl;
                break;
            }

            MusicSearch.ForDetail_ID   = HotSongCollection[HotSongList.SelectedIndex].SongID[0];
            MusicSearch.ForDetail_Name = HotSongCollection[HotSongList.SelectedIndex].MusicName;
            MusicPage.ThisPage.MediaControl.MediaPlayer.Play();
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 获取网易云音乐的歌曲Id集合,并返回到SercherResultList集合中
        /// </summary>
        /// <param name="SercherKeys">通过歌曲名在网络上搜索Id</param>
        /// <param name="Id">如果已经拥有歌曲ID</param>
        /// <returns></returns>
        private void GetMusicIds(string SercherKeys, string Id = null)
        {
            var CloudMusicApi = new NeteaseMusicAPI();
            var res           = CloudMusicApi.Search(SercherKeys, type: NeteaseMusicAPI.SearchType.Song).Result;

            if (res.Songs == null)
            {
                return;
            }
            var songs = res.Songs.Select(x => {
                return(new NetCloudLrcInfoz
                {
                    Artist = string.Join(",", x.Ar.Select(y => y.Name)),
                    Id = x.Id.ToString(),
                    Title = x.Name,
                    LrcUri = GetLrcUri(x.Id.ToString())
                });
            });

            foreach (var i in songs)
            {
                SercherResultList.Add(i);
            }
        }
 NetCloudMusicSource()
 {
     neteaseMusicAPI = new NeteaseMusicAPI();
 }
Ejemplo n.º 21
0
        private async void FontIcon_PointerPressed(object sender, PointerRoutedEventArgs e)
        {
            FontIcon FI = sender as FontIcon;

            AlbumList.SelectedItem = ((FontIcon)sender).DataContext;
            SearchSingleMusic SSM = AlbumCollection[AlbumList.SelectedIndex];

            if (((SolidColorBrush)FI.Foreground).Color == Colors.White)
            {
                string MusicURL = (await NeteaseMusicAPI.GetInstance().GetSongsUrlAsync(AlbumCollection[AlbumList.SelectedIndex].SongID)).Data[0].Url;
                if (MusicURL == null)
                {
                    ContentDialog dialog = new ContentDialog
                    {
                        Title           = "抱歉",
                        Content         = "当前歌曲暂时无法播放",
                        CloseButtonText = "确定",
                        Background      = Application.Current.Resources["DialogAcrylicBrush"] as Brush
                    };
                    await dialog.ShowAsync();

                    return;
                }
                FI.Glyph      = "\uEB52";
                FI.Foreground = new SolidColorBrush(Colors.Red);

                var song = await NeteaseMusicAPI.GetInstance().SearchAsync <SingleMusicSearchResult>(SSM.MusicName, 5, 0, NeteaseMusicAPI.SearchType.Song);

                string ImgURL = "";

                foreach (var Song in song.Result.Songs.Where(Song => Song.Name == SSM.MusicName && Song.Al.Name == SSM.Album).Select(Song => Song))
                {
                    ImgURL = Song.Al.PicUrl;
                    break;
                }

                MusicList.ThisPage.FavouriteMusicCollection.Add(new PlayList(SSM.MusicName, SSM.Artist, SSM.Album, SSM.Duration, ImgURL, SSM.SongID[0], SSM.MVid));
                MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromUri(new Uri(MusicURL)));

                MediaItemDisplayProperties Props = Item.GetDisplayProperties();
                Props.Type = Windows.Media.MediaPlaybackType.Music;
                Props.MusicProperties.Title  = SSM.MusicName;
                Props.MusicProperties.Artist = SSM.Artist;
                Item.ApplyDisplayProperties(Props);

                MediaPlayList.FavouriteSongList.Items.Add(Item);
                await SQLite.GetInstance().SetMusicDataAsync(SSM.MusicName, SSM.Artist, SSM.Album, SSM.Duration, ImgURL, SSM.SongID[0], SSM.MVid);
            }
            else
            {
                FI.Glyph      = "\uEB51";
                FI.Foreground = new SolidColorBrush(Colors.White);
                for (int i = 0; i < MusicList.ThisPage.FavouriteMusicCollection.Count; i++)
                {
                    if (MusicList.ThisPage.FavouriteMusicCollection[i].SongID == SSM.SongID[0])
                    {
                        await SQLite.GetInstance().DeleteMusicAsync(MusicList.ThisPage.FavouriteMusicCollection[i]);

                        MusicList.ThisPage.FavouriteMusicCollection.RemoveAt(i);
                        MediaPlayList.FavouriteSongList.Items.RemoveAt(i);
                        break;
                    }
                }
            }
        }
Ejemplo n.º 22
0
 public void GetPlaylistTest()
 {
     NeteaseMusicAPI api    = new NeteaseMusicAPI();
     var             result = api.GetPlaylistDetail(TestNeteaseID);
 }
Ejemplo n.º 23
0
        private async void MusicSearch_SingerPage_Loaded(object sender, RoutedEventArgs e)
        {
            if (IsSame)
            {
                IsSame = false;
                Locker.Set();
                return;
            }

            if (PivotControl.SelectedIndex != 0)
            {
                PivotControl.SelectedIndex = 0;
            }

            HotSongCollection = new ObservableCollection <SearchSingleMusic>();
            AlbumCollection   = new ObservableCollection <SingerAlbum>();
            MVCollection      = new ObservableCollection <SingerMV>();

            HotSongList.ItemsSource     = HotSongCollection;
            GridViewControl.ItemsSource = AlbumCollection;
            MVGridView.ItemsSource      = MVCollection;

            foreach (var Song in Artist.HotSongs)
            {
                TimeSpan Duration = TimeSpan.FromMilliseconds(Song.Dt);
                if (Song.Ar.Count == 1)
                {
                    HotSongCollection.Add(new SearchSingleMusic(Song.Name, Song.Ar[0].Name, Song.Al.Name, string.Format("{0:D2}:{1:D2}", Duration.Minutes, Duration.Seconds), Song.Id, Song.Al.Pic.ToString(), Song.Mv));
                }
                else if (Song.Ar.Count > 1)
                {
                    string CombineName = string.Empty;
                    foreach (var names in Song.Ar)
                    {
                        CombineName = CombineName + names.Name + "/";
                    }
                    CombineName = CombineName.Remove(CombineName.Length - 1);
                    HotSongCollection.Add(new SearchSingleMusic(Song.Name, CombineName, Song.Al.Name, string.Format("{0:D2}:{1:D2}", Duration.Minutes, Duration.Seconds), Song.Id, Song.Al.Pic.ToString(), Song.Mv));
                }
                else
                {
                    HotSongCollection.Add(new SearchSingleMusic(Song.Name, "Unknown", Song.Al.Name, string.Format("{0:D2}:{1:D2}", Duration.Minutes, Duration.Seconds), Song.Id, Song.Al.Pic.ToString(), Song.Mv));
                }
            }

            AlbumSearchResult Result = await NeteaseMusicAPI.GetInstance().SearchAsync <AlbumSearchResult>(Artist.Artist.Name, 30, 0, NeteaseMusicAPI.SearchType.Album);

            if (Result.result.albums != null)
            {
                foreach (var item in Result.result.albums)
                {
                    AlbumCollection.Add(new SingerAlbum(item.name, item.id, new Uri(item.picUrl)));
                }
            }

            foreach (var item in HotSongCollection)
            {
                if (CancelToken.IsCancellationRequested)
                {
                    break;
                }
                if (item.MVExists)
                {
                    var MVResult = await NeteaseMusicAPI.GetInstance().GetMVAsync((int)item.MVid);

                    if (MVResult.Data == null)
                    {
                        continue;
                    }
                    MVCollection.Add(new SingerMV(MVResult.Data.Name, MVResult.Data.BriefDesc, (int)item.MVid, new Uri(MVResult.Data.Cover)));
                }
            }
            Locker.Set();
        }