Ejemplo n.º 1
0
        List <Object> prepareToNavigeteToPlaylitDetail(long id)
        {
            PlayListDetailRoot playListDetailRoot = PlaylistService.GetPlaylistDetail(id);

            if (playListDetailRoot == null || playListDetailRoot.playlist.trackIds.Count == 0)
            {
                return(null);
            }
            string ids = "";

            for (int i = 0; i < playListDetailRoot.playlist.trackIds.Count; i++)
            {
                if (i != 0)
                {
                    ids += ",";
                }
                ids += playListDetailRoot.playlist.trackIds[i].id;
            }
            MusicDetailRoot musicDetailRoot = SongService.GetMusicDetail_Post(ids);

            if (musicDetailRoot == null)
            {
                return(null);
            }
            List <Object> list = new List <object>();

            list.Add(playListDetailRoot);
            list.Add(musicDetailRoot);
            return(list);
        }
Ejemplo n.º 2
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);  //将传过来的数据 类型转换一下  
            var list = (List <Object>)e.Parameter;

            playListDetailRoot    = list.First() as PlayListDetailRoot;
            musicDetailRootSource = list.Last() as MusicDetailRoot;
            //if (playListDetailRoot.playlist.id == MainPage.PlayingListId)
            //    return;
            if (playListDetailRoot.playlist.id == playListDetailID)
            {
                return;
            }
            playListDetailID = playListDetailRoot.playlist.id;
            LoadLayout();
        }
Ejemplo n.º 3
0
        //点击推荐歌单
        private async void AdaptiveGridViewControl_ItemClick(object sender, ItemClickEventArgs e)
        {
            ProgressBar_loadRecomendList.Visibility = Visibility.Visible;
            Recommend recommend = e.ClickedItem as Recommend;

            if (recommend != null)
            {
                PlayListDetailRoot playListDetailRoot = await Task.Run(() => PlaylistService.GetPlaylistDetail(recommend.id));

                if (playListDetailRoot == null || playListDetailRoot.playlist.trackIds.Count == 0)
                {
                    ProgressBar_loadRecomendList.Visibility = Visibility.Collapsed;
                    return;
                }
                string ids = "";
                for (int i = 0; i < playListDetailRoot.playlist.trackIds.Count; i++)
                {
                    if (i != 0)
                    {
                        ids += ",";
                    }
                    ids += playListDetailRoot.playlist.trackIds[i].id;
                }
                MusicDetailRoot musicDetailRoot = await Task.Run(() => SongService.GetMusicDetail_Post(ids));

                if (musicDetailRoot == null)
                {
                    ProgressBar_loadRecomendList.Visibility = Visibility.Collapsed;
                    return;
                }
                //Frame frame = new Frame();
                //PlayListDetai playListDetai = new PlayListDetai(playListDetailRoot, musicDetailRoot);
                //frame.Content = playListDetai;
                ProgressBar_loadRecomendList.Visibility = Visibility.Collapsed;
                List <Object> list = new List <object>();
                list.Add(playListDetailRoot);
                list.Add(musicDetailRoot);
                Frame.Navigate(typeof(PlayListDetai), list);
            }
        }
Ejemplo n.º 4
0
        private async void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            PivotItem pivotItem = (PivotItem)((Pivot)sender).SelectedItem;

            if (pivotItem.Tag.ToString() == "1")//日推
            {
                if (ListBox_recommendMusic.ItemsSource != null)
                {
                    return;
                }
                //string result = await MyClassManager.HttpClientGet(MyClassManager.apiUri + @"/recommend/songs");
                ProgressBar_loadRecomendSongs.Visibility = Visibility.Visible;
                string result = await Task.Run(() => Http.Get(ConfigService.ApiUri + @"/recommend/songs"));

                if (result == null || result.Equals(""))
                {
                    ProgressBar_loadRecomendSongs.Visibility = Visibility.Collapsed;
                    return;
                }
                RecommendMusicsRoot recommendMusics = JsonConvert.DeserializeObject <RecommendMusicsRoot>(result);
                if (recommendMusics == null)
                {
                    ProgressBar_loadRecomendSongs.Visibility = Visibility.Collapsed;
                    return;
                }
                //判断是否为喜欢歌曲
                if (MainPage.favoriteSongsRoot != null)
                {
                    foreach (var temp in recommendMusics.data.dailySongs)
                    {
                        if (MainPage.favoriteSongsRoot.ids.Find(p => p.Equals(temp.Id)) != 0)
                        {
                            temp.isFavorite = true;
                        }
                    }
                }
                ProgressBar_loadRecomendSongs.Visibility = Visibility.Collapsed;
                ListBox_recommendMusic.ItemsSource       = recommendMusics.data.dailySongs;
            }
            else if (pivotItem.Tag.ToString() == "2")//随机喜欢的50首
            {
                if (MainPage.favoriteSongsRoot != null && MainPage.favoriteSongsRoot.ids.Count != 0 && MainPage.favoriteSongsRoot.songs == null)
                {
                    MainPage.favoriteSongsRoot.songs = new List <SongsItem>();
                    string ids = "";
                    //for (int i = 0; i < MainPage.favoriteSongsRoot.ids.Count; i++)
                    //{
                    //    if (i != 0)
                    //        ids += ",";
                    //    ids += MainPage.favoriteSongsRoot.ids[i];
                    //}
                    List <long> idsTemp = new List <long>(MainPage.favoriteSongsRoot.ids);
                    //随机取50条数据
                    int    totalCount = 50;                    //需要取得数据的数量
                    Random random     = new Random();
                    while (idsTemp.Count > totalCount)         //判断数据总数是否大于需要取得数据的数量
                    {
                        int k = random.Next(0, idsTemp.Count); //取得大于等于0且小于数据总数的一个随机数
                        idsTemp.RemoveAt(k);                   //根据随机数移除一条数据
                    }
                    for (int i = 0; i < idsTemp.Count; i++)
                    {
                        if (i != 0)
                        {
                            ids += ",";
                        }
                        ids += idsTemp[i];
                    }
                    ProgressBar_loadRandomFavoriteSongs.Visibility = Visibility.Visible;
                    MusicDetailRoot musicDetailRoot = await Task.Run(() => SongService.GetMusicDetail_Post(ids));

                    if (musicDetailRoot == null)
                    {
                        ProgressBar_loadRandomFavoriteSongs.Visibility = Visibility.Collapsed;
                        return;
                    }
                    foreach (var temp in musicDetailRoot.songs)
                    {
                        temp.isFavorite = true;
                    }
                    ProgressBar_loadRandomFavoriteSongs.Visibility = Visibility.Collapsed;
                    ListBox_myFavoriteSongs.ItemsSource            = musicDetailRoot.songs;
                    MainPage.favoriteSongsRoot.songs = musicDetailRoot.songs.ToList();
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 开始播放前获取相关信息准备
        /// </summary>
        /// <param name="playingSongId"></param>
        /// <param name="songsItem"></param>
        /// <returns></returns>
        public static async Task <bool> PreparePlayingSong(long playingSongId, SongsItem songsItem = null)
        {
            if (songsItem == null)//需获取实例
            {
                MusicDetailRoot musicDetailRoot = await Task.Run(() => SongService.GetMusicDetail_Get(playingSongId.ToString()));

                if (musicDetailRoot == null || musicDetailRoot.songs == null || musicDetailRoot.songs.Count == 0)
                {
                    return(false);
                }
                songsItem = musicDetailRoot.songs.Last();
                //判断是否为喜欢歌曲
                if (MainPage.favoriteSongsRoot != null)
                {
                    if (MainPage.favoriteSongsRoot.ids.Find(p => p.Equals(songsItem.Id)) != 0)
                    {
                        songsItem.isFavorite = true;
                    }
                }
            }
            SongUrlRoot songUrlRoot = SongService.GetMusicUrl(songsItem.Id);

            if (songUrlRoot == null)
            {
                return(false);
            }
            PlayingSong        = songsItem;
            PlayingSongUrlRoot = songUrlRoot;
            var playingSong = PlayingService.PlayingSongList.FirstOrDefault(p => p.Id == PlayingService.PlayingSong.Id);

            if (playingSong == null)//将要播放的歌曲不在当前播放列表
            {
                PlayingSongList = new List <SongsItem>()
                {
                    PlayingSong
                };
                playingSong = PlayingSong;
            }
            if (PlayedSongId != null)
            {
                if (PlayingSongList != PlayedSongList)//不同一个播放列表需清空列表
                {
                    PlayedSongId.Clear();
                }
            }
            else
            {
                PlayedSongId = new List <long>();
            }
            PlayedSongId.Remove(playingSong.Id);   //删除重复的,避免死循环
            PlayedSongId.Add(playingSong.Id);
            if (PlayingService.PlayedSong != null) //听歌打卡
            {
                PlayingService.PlayDurationStopwatch.Stop();
                await Task.Run(() => SongService.MarkPlayDuration(PlayedSong.Id, PlayedListId, PlayDurationStopwatch.ElapsedMilliseconds / 1000));
            }

            //获取专辑
            PlayingAlbum = await Task.Run(() => AlbumService.GetAlbum(songsItem.al.id));

            if (PlayingAlbum == null)
            {
                return(false);
            }
            PlayingService.PlayingAlbumBitmapImage = await FileHelper.DownloadFile(new Uri(PlayingAlbum.album.picUrl + "?param=200y200"));

            if (PlayedSong != null && PlayedSongList != null)
            {
                PlayedSongList.FirstOrDefault(p => p.Id == PlayedSong.Id).IsPlaying = false;
            }
            PlayingSongList.FirstOrDefault(p => p.Id == PlayingSong.Id).IsPlaying = true;

            return(true);
        }
Ejemplo n.º 6
0
        List <Object> prepareToNavigeteToPlaylitDetail(long id)
        {
            PlayListDetailRoot playListDetailRoot = PlaylistService.GetPlaylistDetail(id);

            if (playListDetailRoot == null || playListDetailRoot.playlist.trackIds.Count == 0)
            {
                return(null);
            }
            string ids = "";
            //for (int i = 0; i < playListDetailRoot.playlist.trackIds.Count; i++)
            //for (int i = 0; i < 1000; i++)
            //{
            //    if (i != 0)
            //        ids += ",";
            //    ids += playListDetailRoot.playlist.trackIds[i].id;
            //}
            MusicDetailRoot musicDetailRoot = new MusicDetailRoot();

            musicDetailRoot.songs      = new List <SongsItem>();
            musicDetailRoot.privileges = new List <PrivilegesItem>();
            for (int i = 0; i < playListDetailRoot.playlist.trackIds.Count; i += 1000)//最高单次1000个
            {
                ids = "";
                int j = i;
                if ((i + 1000) > playListDetailRoot.playlist.trackIds.Count)//剩下的不足1000
                {
                    for (; j < playListDetailRoot.playlist.trackIds.Count; j++)
                    {
                        if (j % 1000 != 0)
                        {
                            ids += ",";
                        }
                        ids += playListDetailRoot.playlist.trackIds[j].id;
                    }
                }
                else//剩下的超过1000
                {
                    for (; j < i + 1000; j++)
                    {
                        if (j % 1000 != 0)
                        {
                            ids += ",";
                        }
                        ids += playListDetailRoot.playlist.trackIds[j].id;
                    }
                }
                MusicDetailRoot musicDetailRootTemp = SongService.GetMusicDetail_Post(ids);
                if (musicDetailRootTemp != null && musicDetailRootTemp.songs != null && musicDetailRootTemp.privileges != null)
                {
                    foreach (var temp in musicDetailRootTemp.songs)
                    {
                        musicDetailRoot.songs.Add(temp);
                    }
                    foreach (var temp in musicDetailRootTemp.privileges)
                    {
                        musicDetailRoot.privileges.Add(temp);
                    }
                    musicDetailRoot.code = musicDetailRootTemp.code;
                }
            }
            List <Object> list = new List <object>();

            list.Add(playListDetailRoot);
            list.Add(musicDetailRoot);
            return(list);
        }