public async void Play() { try { var item = _item; if (item.IsVideo && (item.Chapters == null || item.MediaStreams == null)) { item = await _apiClient.GetItemAsync(item.Id, _apiClient.CurrentUserId); } else if (item.IsAudio && (item.MediaStreams == null)) { item = await _apiClient.GetItemAsync(item.Id, _apiClient.CurrentUserId); } else if (string.IsNullOrEmpty(item.Path)) { item = await _apiClient.GetItemAsync(item.Id, _apiClient.CurrentUserId); } await _playbackManager.Play(new PlayOptions(item)); } catch (Exception) { _presentation.ShowDefaultErrorMessage(); } }
public Task Play() { return(_playbackManager.Play(new PlayOptions(_item) { StartPositionTicks = Chapter.StartPositionTicks })); }
async void _apiWebSocket_PlayCommand(object sender, PlayRequestEventArgs e) { if (_session.CurrentUser == null) { OnAnonymousRemoteControlCommand(); return; } try { var result = await _apiClient.GetItemsAsync(new ItemQuery { Ids = e.Request.ItemIds, UserId = _session.CurrentUser.Id, Fields = new[] { ItemFields.Chapters, ItemFields.MediaStreams, ItemFields.Path } }); await _playbackManager.Play(new PlayOptions { StartPositionTicks = e.Request.StartPositionTicks ?? 0, GoFullScreen = true, Items = result.Items.ToList() }); } catch (Exception ex) { _logger.ErrorException("Error processing play command", ex); } }
private async void PlayAllFromHere(object commandParameter) { var itemViewModel = commandParameter as ItemViewModel; if (itemViewModel != null) { try { var items = _listItems.SkipWhile(i => i != itemViewModel) .Where(i => _playbackManager.CanPlay(i.Item)) .ToList(); if (items.Count > 0) { var result = await _apiClient.GetItemsAsync(new ItemQuery { UserId = _apiClient.CurrentUserId, Fields = new[] { ItemFields.Path, ItemFields.Chapters, ItemFields.MediaSources, ItemFields.ParentId }, Ids = items.Select(i => i.Item.Id).ToArray() }); await _playbackManager.Play(new PlayOptions(result.Items)); } } catch (Exception) { _presentationManager.ShowDefaultErrorMessage(); } } }
private Task Play(IEnumerable <BaseItemDto> items) { return(_playback.Play(new PlayOptions { GoFullScreen = false, Items = items.ToList() })); }
private async Task playChannel(string uri) { if (null == uri) { _bot.SendMessage("Play Track failed due to null track"); return; } _bot.SendMessage("Play " + uri); _radioPlaybackManager.Play(new Uri(uri)); }
public ItemOverviewViewModel(BaseItemDto item, IApiClient apiClient, IImageManager imageManager, IPlaybackManager playbackManager, ISessionManager sessionManager) { _item = item; Artwork = new ItemArtworkViewModel(item, apiClient, imageManager) { DesiredImageHeight = 700 }; Info = new ItemInfoViewModel(item); if (item.Type == "Episode") Artwork.PreferredImageTypes = new[] { ImageType.Screenshot, ImageType.Art, ImageType.Primary }; Artwork.PropertyChanged += (s, e) => { if (e.PropertyName == "Size") { OnPropertyChanged("Size"); } }; PlayCommand = new RelayCommand(o => playbackManager.Play(new PlayOptions(item) { GoFullScreen = true, EnableCustomPlayers = true, Resume = false })); ResumeCommand = new RelayCommand(o => playbackManager.Play(new PlayOptions(item) { GoFullScreen = true, EnableCustomPlayers = true, Resume = true })); PlayAllCommand = new RelayCommand(async o => { var items = await apiClient.GetItemsAsync(new Model.Querying.ItemQuery { ParentId = item.Id, UserId = sessionManager.CurrentUser.Id, Recursive = true, IncludeItemTypes = new[] { "Movie", "Episode", "Track" } }); await playbackManager.Play(new PlayOptions(items.Items) { EnableCustomPlayers = true, GoFullScreen = true }); }); }
private async void Play(object commandParameter) { var chapter = (ChapterInfoViewModel)commandParameter; try { await _playback.Play(new PlayOptions { Items = new List <BaseItemDto>() { Item }, StartPositionTicks = chapter.Chapter.StartPositionTicks }); } catch { _presentationManager.ShowDefaultErrorMessage(); } }
async void _apiWebSocket_PlayCommand(object sender, GenericEventArgs <PlayRequest> e) { _logger.Debug("_apiWebSocket_PlayCommand {0} {1}", e.Argument.ItemIds, e.Argument.StartPositionTicks); if (_sessionManager.LocalUserId == null) { OnAnonymousRemoteControlCommand(); return; } try { var apiClient = _sessionManager.ActiveApiClient; var result = await apiClient.GetItemsAsync(new ItemQuery { Ids = e.Argument.ItemIds, UserId = _sessionManager.LocalUserId, Fields = new[] { ItemFields.Chapters, ItemFields.MediaStreams, ItemFields.Overview, ItemFields.Path, ItemFields.People, ItemFields.MediaSources } }, CancellationToken.None); await _playbackManager.Play(new PlayOptions { StartPositionTicks = e.Argument.StartPositionTicks ?? 0, GoFullScreen = true, Items = result.Items.ToList() }); } catch (Exception ex) { _logger.ErrorException("Error processing play command", ex); } }
public ItemTileViewModel(IApiClient apiClient, IImageManager imageManager, IServerEvents serverEvents, INavigator navigator, IPlaybackManager playbackManager, BaseItemDto item) { _imageManager = imageManager; _navigator = navigator; _playbackManager = playbackManager; _item = item; Image = new ItemArtworkViewModel(item, apiClient, imageManager); Image.PreferredImageTypes = new[] { ImageType.Primary, ImageType.Thumb, ImageType.Backdrop }; Image.EnforcePreferredImageAspectRatio = true; Image.PropertyChanged += (senger, args) => { if (args.PropertyName == "Size") { OnPropertyChanged("Size"); OnPropertyChanged("ShowDisplayName"); } }; DisplayNameGenerator = GetDisplayNameWithAiredSpecial; GoToDetailsCommand = new RelayCommand(async o => navigator.Navigate(Go.To.Item(Item))); PlayCommand = new RelayCommand(o => _playbackManager.Play(new PlayOptions(Item) { GoFullScreen = true, EnableCustomPlayers = true, Resume = true })); serverEvents.UserDataChanged += serverEvents_UserDataChanged; }