Пример #1
0
        private async void ListBox_musicDetail_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
            ListBox   listBox   = sender as ListBox;
            SongsItem songsItem = listBox.SelectedItem as SongsItem;

            if (songsItem == null)
            {
                return;
            }
            //SongUrlRoot songUrlRoot = SongService.GetMusicUrl(songsItem.Id);
            //if (songUrlRoot == null)
            //    return;

            ////修改播放列表
            //if (MainPage.PlayingListId != albumRoot.album.id)//已在播放此歌单,仅修改播放歌曲,否则,重置播放列表及历史记录
            //{
            //    (Application.Current as App).myMainPage.currentPlayList.Clear();
            //    foreach (var temp in albumRoot.songs)
            //        (Application.Current as App).myMainPage.currentPlayList.Add(temp);
            //    (Application.Current as App).myMainPage.playHistoryIndex.Clear();
            //    //MainPage.PlayingListId = albumRoot.album.id;
            //}
            ////修改mainpage以触发修改正在播放的音乐
            //(Application.Current as App).myMainPage.ChnagePlayingSong(songsItem, songUrlRoot, albumRoot.album.id);
            PlayingService.PlayingListId = albumRoot.album.id;
            await PlayingService.ChangePlayingSong(songsItem.Id, albumRoot.songs, songsItem);
        }
Пример #2
0
        /// <summary>
        /// 双击我喜欢的歌曲
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void ListBox_myFavoriteSongs_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
            ListBox   listBox   = (ListBox)sender;
            SongsItem songsItem = listBox.SelectedItem as SongsItem;

            if (songsItem == null)
            {
                return;
            }
            //SongUrlRoot songUrlRoot = SongService.GetMusicUrl(songsItem.Id);
            //if (songUrlRoot == null)
            //    return;
            ////添加播放列表
            //if (ListBox_myFavoriteSongs.ItemsSource == null)
            //    return;
            //if (MainPage.PlayingListId != 2)//已在播放此歌单,仅修改播放歌曲,否则,重置播放列表及历史记录
            //{
            //    (Application.Current as App).myMainPage.currentPlayList.Clear();
            //    foreach (var temp in ListBox_myFavoriteSongs.ItemsSource as List<SongsItem>)
            //        (Application.Current as App).myMainPage.currentPlayList.Add(temp);
            //    (Application.Current as App).myMainPage.playHistoryIndex.Clear();
            //    //MainPage.PlayingListId = 2;
            //}
            ////修改mainpage以触发修改正在播放的音乐
            //(Application.Current as App).myMainPage.ChnagePlayingSong(songsItem, songUrlRoot,-2);
            PlayingService.PlayingListId = songsItem.al.id;
            await PlayingService.ChangePlayingSong(songsItem.Id, ListBox_myFavoriteSongs.ItemsSource as List <SongsItem>, songsItem);
        }
Пример #3
0
        /// <summary>
        /// 双击某一首歌
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void ListBox_musicDetail_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
            ListBox   listBox   = sender as ListBox;
            SongsItem songsItem = listBox.SelectedItem as SongsItem;

            PlayingService.PlayingListId = playListDetailRoot.playlist.id;
            await PlayingService.ChangePlayingSong(songsItem.Id, musicDetailRootSource.songs, songsItem);
        }
Пример #4
0
        private async void ListBox_simiSongs_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
            ListBox   listBox   = sender as ListBox;
            SongsItem songsItem = listBox.SelectedItem as SongsItem;

            if (songsItem == null)
            {
                return;
            }
            ProgressBar_loadSimiSongs.Visibility = Visibility.Visible;
            PlayingService.PlayingListId         = songsItem.al.id;
            await PlayingService.ChangePlayingSong(songsItem.Id, ListBox_simiSongs.ItemsSource as List <SongsItem>, songsItem);
        }
Пример #5
0
        private async void ListBox_searchSong_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
            ListBox   listBox   = (ListBox)sender;
            SongsItem songsItem = listBox.SelectedItem as SongsItem;

            if (songsItem == null)
            {
                return;
            }

            PlayingService.PlayingListId = songsItem.al.id;
            await PlayingService.ChangePlayingSong(songsItem.Id, ListBox_searchSong.ItemsSource as List <SongsItem>, songsItem);
        }
Пример #6
0
        private async void ListBox_hotSongs_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
            ListBox   listBox   = sender as ListBox;
            SongsItem songsItem = listBox.SelectedItem as SongsItem;

            if (songsItem == null)
            {
                return;
            }

            PlayingService.PlayingListId = songsItem.al.id;
            await PlayingService.ChangePlayingSong(songsItem.Id, artistBaseDetailRoot.hotSongs, songsItem);
        }
Пример #7
0
        private async void Button_artists_Click(object sender, RoutedEventArgs e)
        {
            Button    button    = sender as Button;
            SongsItem songsItem = button.DataContext as SongsItem;

            if (songsItem.ar.Count == 1)
            {
                ProgressBar_loading.Visibility = Visibility.Visible;
                ArtistBaseDetailRoot artistBaseDetailRoot = await Task.Run(() => ArtistService.GetArtistBaseDetail(songsItem.ar.First().id));

                ProgressBar_loading.Visibility = Visibility.Collapsed;
                if (artistBaseDetailRoot == null)
                {
                    return;
                }
                Frame.Navigate(typeof(ArtistHome), artistBaseDetailRoot);
            }
        }
Пример #8
0
        async void UpDateSong()
        {
            _albumRoot               = PlayingService.PlayingAlbum;
            _songsItem               = PlayingService.PlayingSong;
            Image_album.Source       = PlayingService.PlayingAlbumBitmapImage;
            Button_albumName.Content = _albumRoot.album.name;
            string name = "";

            for (int i = 0; i < _songsItem.ar.Count; i++)
            {
                if (i != 0)
                {
                    name += "/";
                }
                name += _songsItem.ar[i].name;
            }
            ListBox_artists.ItemsSource = _songsItem.ar;
            Button_artistName.Content   = name;
            TextBlock_songName.Text     = _songsItem.Name;
            LyricRoot lyricRoot = await Task.Run(() => LyricService.GetLyric(_songsItem.Id));

            if (lyricRoot == null)
            {
                ListBox_lyric.ItemsSource = null;
                return;
            }
            lyricStrs = LyricService.GetLyricStrs(lyricRoot);
            if (lyricStrs != null)
            {
                if (lyricStrs.Count == 0)
                {
                    DateTime dateTime = DateTime.Now;
                    lyricStrs.Add(new LyricStr()
                    {
                        DateTime = dateTime, Original = "无歌词"
                    });
                }
                ListBox_lyric.ItemsSource = lyricStrs;
                ListBox_lyric.ScrollIntoView(lyricStrs.First());
            }
            UpDateComment();
            UpDateSimiSongs();
        }
Пример #9
0
        private async void Button_album_Click(object sender, RoutedEventArgs e)
        {
            SongsItem songsItem = ((Button)sender).DataContext as SongsItem;

            if (songsItem == null)
            {
                return;
            }
            ProgressBar_loading.Visibility = Visibility.Visible;
            AlbumRoot albumRoot = await Task.Run(() => AlbumService.GetAlbum(songsItem.al.id));

            if (albumRoot == null)
            {
                ProgressBar_loading.Visibility = Visibility.Collapsed;
                return;
            }
            ProgressBar_loading.Visibility = Visibility.Collapsed;
            Frame.Navigate(typeof(AlbumDetail), albumRoot);
        }
Пример #10
0
        public static async Task <bool> ChangePlayingSong(long playingSongId, SongsItem songsItem = null)
        {
            IsPlayingSong   = true;
            PlayingSongId   = playingSongId;
            PlayingSongList = PlayingSongList;

            bool b;

            if (songsItem == null)
            {
                b = await PreparePlayingSong(PlayingSongId);
            }
            else
            {
                b = await PreparePlayingSong(PlayingSongId, songsItem);
            }
            PlayingListToBaseObject(PlayingSongList);
            WhenPlayingSongChange();
            return(b);
        }
Пример #11
0
        async void ChangePlayBar(SongsItem song, BitmapImage bitmapImage, string musicName, string artistName, string albumName, int maximum, bool isStartPlaying = true)
        {
            Image_playingAlbum.Source = bitmapImage;//修改专辑图片
            TextBlcok_musicName.Text  = musicName;
            TextBlcok_artistName.Text = artistName;
            TextBlcok_albumName.Text  = albumName;
            TextBlock_lengthTime.Text = await Task.Run(() => OtherHelper.GetDt(maximum));

            if (isStartPlaying)
            {
                SymbolIcon_stopOrPlay.Symbol = Symbol.Pause;
            }
            if (song.isFavorite)
            {
                TextBlock_isOrnotFavorite.Text = "\xE00B";
            }
            else
            {
                TextBlock_isOrnotFavorite.Text = "\xE006";
            }
        }
Пример #12
0
            public string RapidGenerateSonglist(string originSongID, string speed, string songID, string songName, bool randomFun = false)
            {
                string songTitle         = songName;
                string artist            = "Arcaea";
                string bpm               = "168";
                double bpm_base          = 168;
                int    side              = 1;
                string bg                = "single_conflict";
                int    date              = Euynac.Utility.Time.Get10TimeStamp();;
                string prsChartDesigner  = "Arcaea";
                string prsJacketDesigner = "lowrio";
                int    prsRating         = 10;
                string ftrChartDesigner  = "Arcaea";
                string ftrJacketDesigner = "lowrio";
                int    ftrRating         = 11;

                if (songsMap != null && songsMap.ContainsKey(originSongID))
                {
                    songTitle         = songsMap[originSongID].title_localized.en;
                    artist            = songsMap[originSongID].artist;
                    bpm               = songsMap[originSongID].bpm;
                    bpm_base          = songsMap[originSongID].bpm_base;
                    side              = songsMap[originSongID].side;
                    bg                = songsMap[originSongID].bg;
                    date              = songsMap[originSongID].date;
                    prsChartDesigner  = songsMap[originSongID].difficulties[1].chartDesigner;
                    prsJacketDesigner = songsMap[originSongID].difficulties[1].jacketDesigner;
                    prsRating         = songsMap[originSongID].difficulties[1].rating;
                    ftrChartDesigner  = songsMap[originSongID].difficulties[2].chartDesigner;
                    ftrJacketDesigner = songsMap[originSongID].difficulties[2].jacketDesigner;
                    ftrRating         = songsMap[originSongID].difficulties[2].rating;
                }
                SongsItem root = new SongsItem();

                root.id = songID;
                Title_localized title_Localized = new Title_localized();

                title_Localized.en   = this.isOfficial ? songTitle + speed : songName;
                root.title_localized = title_Localized;
                root.artist          = artist;
                root.bpm             = bpm;
                root.bpm_base        = bpm_base;
                root.set             = "base";//曲包id
                root.purchase        = "";
                root.audioPreview    = 5000;
                root.audioPreviewEnd = 25000;
                root.side            = side; //考虑随机
                root.bg   = bg;              //这里可以考虑随机
                root.date = date;
                List <DifficultiesItem> difficulties = new List <DifficultiesItem>();
                DifficultiesItem        past         = new DifficultiesItem();

                past.ratingClass    = 0;
                past.chartDesigner  = "Arcaea";
                past.jacketDesigner = "lowrio";
                past.rating         = 1;
                past.plusFingers    = false;
                DifficultiesItem present = new DifficultiesItem();

                present.ratingClass    = 1;
                present.chartDesigner  = prsChartDesigner;
                present.jacketDesigner = prsJacketDesigner;
                present.rating         = prsRating;
                present.plusFingers    = false;
                DifficultiesItem future = new DifficultiesItem();

                future.ratingClass    = 2;
                future.chartDesigner  = ftrChartDesigner;
                future.jacketDesigner = ftrJacketDesigner;
                future.rating         = ftrRating;
                future.plusFingers    = false;
                difficulties.Add(past);
                difficulties.Add(present);
                difficulties.Add(future);
                root.difficulties = difficulties;
                return(JsonConvert.SerializeObject(root));
            }
Пример #13
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);
        }
Пример #14
0
        /// <summary>
        /// 更改播放歌曲入口函数
        /// </summary>
        /// <param name="playingSongId"></param>
        /// <param name="songsItems"></param>
        /// <param name="songsItem"></param>
        /// <returns></returns>
        public static async Task <bool> ChangePlayingSong(long playingSongId, List <SongsItem> songsItems, SongsItem songsItem = null)
        {
            IsPlayingSong   = true;
            PlayingSongId   = playingSongId;
            PlayingSongList = songsItems;
            bool b;

            if (songsItem == null)
            {
                b = await PreparePlayingSong(PlayingSongId);
            }
            else
            {
                b = await PreparePlayingSong(PlayingSongId, songsItem);
            }
            if (!b)
            {
                NotifyPopup notifyPopup = new NotifyPopup("获取音乐失败");
                notifyPopup.Show();
            }
            else
            {
                PlayingListToBaseObject(PlayingSongList);
                WhenPlayingSongChange();
            }
            return(b);
        }