private async void OnPlayUserTracksCommand(Audio track) { if (track.Title == VKSAVER_SEE_ALSO_TEXT) { OnGoToUserContentCommand("audios"); return; } List <IPlayerTrack> tracksToPlay = null; await Task.Run(() => { #if WINDOWS_UWP tracksToPlay = new List <IPlayerTrack>(UserTracks .Where(a => a.Title != VKSAVER_SEE_ALSO_TEXT) .Select(a => a.ToPlayerTrack())); #else tracksToPlay = new List <IPlayerTrack>(UserTracks.Count + 1); tracksToPlay.Add(FirstTrack.VKTrack.ToPlayerTrack()); tracksToPlay.AddRange(UserTracks.Select(a => a.ToPlayerTrack())); #endif }); if (tracksToPlay == null) { return; } IPlayerTrack plTrack = track.ToPlayerTrack(); await _playerService.PlayNewTracks(tracksToPlay, tracksToPlay.IndexOf(plTrack)); #if !WINDOWS_UWP _navigationService.Navigate("PlayerView", null); #endif }
/// <summary> /// Обновить системные кнопки управления проигрывателем при старте нового трека. /// </summary> /// <param name="newTrack">Новый трек.</param> private void UpdateControlsOnNewTrack(IPlayerTrack newTrack) { _controls.DisplayUpdater.Type = MediaPlaybackType.Music; _controls.DisplayUpdater.MusicProperties.Title = newTrack.Title; _controls.DisplayUpdater.MusicProperties.Artist = newTrack.Artist; _controls.DisplayUpdater.Update(); }
public bool Equals(IPlayerTrack other) { if (ReferenceEquals(this, other)) { return(true); } return(this.Title == other.Title && this.Artist == other.Artist && this.Source == other.Source); }
public static VKSaverAudio ToVKSaverAudio(this IPlayerTrack track) { return(new VKSaverAudio { Track = new VKSaverAudioTrackInfo { Title = track.Title, Artist = track.Artist }, VK = track.VKInfo }); }
private async void UpdateTileOnNewTrack(IPlayerTrack track) { try { string artistImage = await _imagesCacheService.GetCachedArtistImage(track.Artist); var images = await _imagesCacheService.GetCachedAlbumsImages(3); if (images.Count == 1) { images.Add("ms-appx:///Assets/Images/PlayerLogo2.png"); } int count = 5 - images.Count; for (int i = 1; i <= count; i++) { images.Add($"ms-appx:///Assets/Images/PlayerLogo{i}.png"); } var wideTile = TileContentFactory.CreateTileWide310x150PeekImageCollection01(); wideTile.TextBodyWrap.Text = track.Title; wideTile.TextHeading.Text = track.Artist; wideTile.ImageMain.Src = images[0]; wideTile.ImageSmallColumn1Row1.Src = images[1]; wideTile.ImageSmallColumn1Row2.Src = images[2]; wideTile.ImageSmallColumn2Row1.Src = images[3]; wideTile.ImageSmallColumn2Row2.Src = images[4]; var squareTile = TileContentFactory.CreateTileSquare150x150PeekImageAndText02(); squareTile.TextBodyWrap.Text = track.Title; squareTile.TextHeading.Text = track.Artist; squareTile.Image.Src = String.IsNullOrEmpty(artistImage) ? images[0] : artistImage; wideTile.RequireSquare150x150Content = true; wideTile.Square150x150Content = squareTile; var tileNotification = wideTile.CreateNotification(); if (_manager.CurrentTrack.Equals(track)) { TileUpdateManager.CreateTileUpdaterForApplication("App").Update(tileNotification); } } catch (Exception ex) { _logService.LogText($"Tile update exception: {ex.ToString()}"); } }
private async void LoadTrackImage(IPlayerTrack track) { string imagePath = await _imagesCacheService.GetCachedAlbumImage(track.Title); if (imagePath == null) { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => TrackImage = null); imagePath = await _imagesCacheService.CacheAndGetAlbumImage(track.Title, track.Artist); } if (imagePath != null && ReferenceEquals(CurrentTrack.Track, track)) { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => TrackImage = new BitmapImage(new Uri(imagePath))); } }
private async void ScrobbleTrack(IPlayerTrack track) { try { if (!_isScrobbleMode || track == null || _scrobbler == null) { return; } else if (_player.Position.TotalSeconds < _player.NaturalDuration.TotalSeconds / 1.5) { return; } var response = await _scrobbler.ScrobbleAsync( new Scrobble(track.Artist, null, track.Title, DateTimeOffset.Now)); } catch (Exception ex) { _logService.LogException(ex); } }
public void ShuffleTracks(IList <IPlayerTrack> tracks, int currentID) { IPlayerTrack temp = null; temp = tracks[0]; tracks[0] = tracks[currentID]; tracks[currentID] = temp; for (int i = 1; i < tracks.Count; i++) { int id = _random.Next(1, tracks.Count); if (id == i) { continue; } temp = tracks[i]; tracks[i] = tracks[id]; tracks[id] = temp; } }
private async void LoadArtistImage(IPlayerTrack track) { string imagePath = await _imagesCacheService.GetCachedArtistImage(track.Artist); if (imagePath == null) { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => ArtistImage = new BitmapImage(new Uri(AppConstants.DEFAULT_PLAYER_BACKGROUND_IMAGE))); _artistImageUrl = AppConstants.DEFAULT_PLAYER_BACKGROUND_IMAGE; imagePath = await _imagesCacheService.CacheAndGetArtistImage(track.Artist); } if (imagePath != null && ReferenceEquals(CurrentTrack.Track, track)) { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => ArtistImage = new BitmapImage(new Uri(imagePath))); _artistImageUrl = imagePath; } }
internal ManagerTrackChangedEventArgs(IPlayerTrack track, int id) { Track = track; TrackID = id; }
public MediaStreamSourceWorker(IPlayerTrack track, IMusicCacheService musicCacheService, StorageFile file) : this(track, musicCacheService) { _file = file; }
/// <summary> /// Инициализирует новый экземпляр класса <see cref="MediaStreamSourceWorker"/> /// для указанного аудио трека. /// </summary> /// <param name="track">Аудио трек.</param> public MediaStreamSourceWorker(IPlayerTrack track, IMusicCacheService musicCacheService) { Track = track; _musicCacheService = musicCacheService; }