public async Task <List <MovieContainer> > GetMovieIMDbTop250ListAsync(string language, CancellationToken cancellationToken) { var tmdbResult = await TMDbClient.GetListAsync(listId : "10265", language : language, cancellationToken : cancellationToken); List <MovieContainer> result = new List <MovieContainer>(tmdbResult.ItemCount); for (int i = 0; i < tmdbResult.Items.Count; i++) { if (tmdbResult.Items[i] is SearchMovie movie) { MovieContainer container = GetContainer(movie); result.Add(container); if (container.TopRating != i + 1) { container.TopRating = i + 1; if (container.IsAdded) { Movies.Update(container); } } } } return(result); }
public async Task <MovieContainer> GetMovieAsync(int movieId, CancellationToken cancellationToken) { MovieContainer container = Movies.FindById(movieId); if (container != null) { return(container); } MovieMethods methods = MovieMethods.Credits | MovieMethods.Images | MovieMethods.Videos | MovieMethods.Translations | MovieMethods.Keywords; Movie tmdbResult = await TMDbClient.GetMovieAsync(movieId, methods, cancellationToken); container = new MovieContainer(tmdbResult); ImdbHelper.GetImdbInfo(tmdbResult.ImdbId).ContinueWith(x => { if (x.IsCompleted && !x.IsFaulted && x.Result != null) { container.Votes = x.Result.Resource.RatingCount; container.TopRating = x.Result.Resource.TopRank; container.ImdbRating = x.Result.Resource.Rating; } }, TaskScheduler.FromCurrentSynchronizationContext()).LogIfFaulted(); return(container); }
public void UpdatePairedListForGenre(IList <String> genres) { IList <string> filteredMovies = preferences.GetFilters(); ObservableCollection <Movie> likedMoviesInGenre = new ObservableCollection <Movie>(GetPreferencesInGenres(filteredMovies)); try { pairedMovieList.Clear(); for (int i = 0; i < likedMoviesInGenre.Count; i += 2) { MovieContainer container = null; if (i + 1 < likedMoviesInGenre.Count) { container = new MovieContainer(new MovieDetailViewModel(likedMoviesInGenre[i], preferences), new MovieDetailViewModel(likedMoviesInGenre[i + 1], preferences)); } else { container = new MovieContainer(new MovieDetailViewModel(likedMoviesInGenre[i], preferences)); } pairedMovieList.Add(container); } } catch (BadBackendRequestException ex) { errorHandler(ex); } }
public void UpdatePairedList() { try { IList <Movie> preferredMovies = GetPreferencesInGenres(preferences.GetFilters()); pairedMovieList.Clear(); for (int i = 0; i < preferredMovies.Count; i += 2) { MovieContainer container = null; if (i + 1 < preferredMovies.Count) { container = new MovieContainer(new MovieDetailViewModel(preferredMovies[i], preferences), new MovieDetailViewModel(preferredMovies[i + 1], preferences)); } else { container = new MovieContainer(new MovieDetailViewModel(preferredMovies[i], preferences)); } pairedMovieList.Add(container); } } catch (BadBackendRequestException ex) { errorHandler(ex); } }
private void OnLoadedTrailer(object sender, TrailerLoadedEventArgs e) { if (!e.InError) { DispatcherHelper.CheckBeginInvokeOnUI(() => { #region Fade in opacity DoubleAnimationUsingKeyFrames opacityAnimation = new DoubleAnimationUsingKeyFrames(); opacityAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.5)); PowerEase opacityEasingFunction = new PowerEase(); opacityEasingFunction.EasingMode = EasingMode.EaseInOut; EasingDoubleKeyFrame startOpacityEasing = new EasingDoubleKeyFrame(1.0, KeyTime.FromPercent(0)); EasingDoubleKeyFrame endOpacityEasing = new EasingDoubleKeyFrame(0.0, KeyTime.FromPercent(1.0), opacityEasingFunction); opacityAnimation.KeyFrames.Add(startOpacityEasing); opacityAnimation.KeyFrames.Add(endOpacityEasing); MovieContainer.BeginAnimation(OpacityProperty, opacityAnimation); #endregion }); TrailerPlayer.Source = new Uri(e.TrailerUrl); TrailerPlayer.Play(); } }
private MovieContainer GetContainer(SearchMovie item) { MovieContainer container = Movies.FindById(item.Id); if (container == null) { container = new MovieContainer(item); } return(container); }
public async Task UpdateMovieAsync(MovieContainer container, CancellationToken cancellationToken) { MovieMethods methods = MovieMethods.Credits | MovieMethods.Images | MovieMethods.Videos | MovieMethods.Translations | MovieMethods.Keywords; Movie tmdbResult = await TMDbClient.GetMovieAsync(container.Id, methods, cancellationToken); container.Item = tmdbResult; ImdbInfo imdbInfo = await ImdbHelper.GetImdbInfo(tmdbResult.ImdbId); container.Votes = imdbInfo.Resource.RatingCount; container.TopRating = imdbInfo.Resource.TopRank; container.ImdbRating = imdbInfo.Resource.Rating; Movies.Update(container); }
public async void GetSearchResults(string userInput, string pageNumber) { Contract.Requires(userInput != null); Contract.Requires(pageNumber != null); try { searchedMovies = await backend.getSearchResults(userInput, pageNumber).ConfigureAwait(true); pairedMovieList.Clear(); searchedMovies.ToList(); if (searchedMovies.Count < 1 || userInput.Length == 0) { NoResultsMessage = true; } else { NoResultsMessage = false; for (int i = 0; i < searchedMovies.Count; i++) { if (searchedMovies[i].ImageUrl == null) { searchedMovies[i].ImageUrl = "default_image.png"; } } for (int i = 0; i < searchedMovies.Count; i += 2) { MovieContainer container = null; if (i + 1 < searchedMovies.Count()) { container = new MovieContainer(new MovieDetailViewModel(searchedMovies[i], preferences), new MovieDetailViewModel(searchedMovies[i + 1], preferences)); } else { container = new MovieContainer(new MovieDetailViewModel(searchedMovies[i], preferences)); } pairedMovieList.Add(container); } } } catch (BadBackendRequestException ex) { errorHandler(ex); } }
public void CreateMovieContainerView(MovieContainer container) { if (container == null) { return; } string documentType = "MovieSingleView"; string documentId = String.Format("{0}:{1}", documentType, container.Id); if (ShowDocument(String.Empty, documentId)) { return; } CreateDocument(() => container.GetTitle(Settings.Default.Language), documentType, container, documentId); }
public async Task LoadMovies(MovieContainer container) { // Create a collection var databaseUri = UriFactory.CreateDatabaseUri(DatabaseId); var movieCollection = await _documentClient.CreateDocumentCollectionIfNotExistsAsync(databaseUri, new DocumentCollection { Id = MovieCollectionId }, new RequestOptions { OfferThroughput = 1000 }); // Clean collection Execute(movieCollection, "g.V().drop()").Wait(); // Add Vertexes var i = 0; foreach (var movie in container.Movies) { i += 1; await AddVertex(movieCollection, movie, "tmdbId", i); } foreach (var person in container.Persons) { i += 1; await AddVertex(movieCollection, person, "tmdbId", i); } // Add Edges i = 0; foreach (var actorRelation in container.ActorRelations) { i += 1; await AddRelation(movieCollection, actorRelation, "actedIn", i); } foreach (var directorRelation in container.DirectorRelations) { i += 1; await AddRelation(movieCollection, directorRelation, "directed", i); } foreach (var producerRelations in container.ProducerRelations) { i += 1; await AddRelation(movieCollection, producerRelations, "produced", i); } foreach (var writerRelation in container.WriterRelations) { i += 1; await AddRelation(movieCollection, writerRelation, "wrote", i); } }
public async Task CreateMovieView(int movieId) { string documentType = "MovieSingleView"; string documentId = String.Format("{0}:{1}", documentType, movieId); if (ShowDocument(String.Empty, documentId)) { return; } CancellationTokenSource tokenSource = this.GetAsyncCommand(x => x.CreateMovieView(movieId)).CancellationTokenSource; MovieContainer container = await RunAsync(() => App.Repository.GetMovieAsync(movieId, tokenSource.Token)); if (container != null) { CreateDocument(() => container.GetTitle(Settings.Default.Language), documentType, container, documentId); } }
/// <summary> /// Show content and hide progress when a movie is loaded /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">EventArgs</param> void OnLoadedMovie(object sender, EventArgs e) { DispatcherHelper.CheckBeginInvokeOnUI(() => { MovieProgressBar.Visibility = Visibility.Collapsed; MovieContainer.Visibility = Visibility.Visible; #region Fade in opacity DoubleAnimationUsingKeyFrames opacityAnimation = new DoubleAnimationUsingKeyFrames(); opacityAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.5)); PowerEase opacityEasingFunction = new PowerEase(); opacityEasingFunction.EasingMode = EasingMode.EaseInOut; EasingDoubleKeyFrame startOpacityEasing = new EasingDoubleKeyFrame(0.0, KeyTime.FromPercent(0)); EasingDoubleKeyFrame endOpacityEasing = new EasingDoubleKeyFrame(1.0, KeyTime.FromPercent(1.0), opacityEasingFunction); opacityAnimation.KeyFrames.Add(startOpacityEasing); opacityAnimation.KeyFrames.Add(endOpacityEasing); MovieContainer.BeginAnimation(OpacityProperty, opacityAnimation); #endregion }); }
public async Task CreateImportView(MediaType mediaType) { ImportViewModel viewModel = ViewModelSource.Create <ImportViewModel>(); viewModel.ParentViewModel = this; viewModel.MediaType = mediaType; DialogService.ShowDialog(null, Properties.Resources.Import, "ImportView", viewModel); if (viewModel.SelectedMediaFileInfoList != null) { try { BeginProgress(); IAsyncCommand command = this.GetAsyncCommand(x => x.CreateImportView(mediaType)); CancellationToken cancellationToken = command.CancellationTokenSource.Token; BackgroundOperation.Register(Properties.Resources.ImportWizard, command.CancelCommand); List <ContainerBase> newItems = new List <ContainerBase>(); List <ContainerBase> existingItems = new List <ContainerBase>(); if (viewModel.MediaType == MediaType.Movie) { foreach (MediaFileInfo info in viewModel.SelectedMediaFileInfoList) { if (cancellationToken.IsCancellationRequested) { break; } SearchBase selectedItem = info.SelectedMediaItem as SearchBase; if (selectedItem != null) { MovieContainer container = await App.Repository.GetMovieAsync(selectedItem.Id, cancellationToken); if (container != null) { container.Seen = info.PersonalInfo.Seen; container.Favorite = info.PersonalInfo.Favorite; container.Watchlist = info.PersonalInfo.Watchlist; container.LocalPath = info.PersonalInfo.LocalPath; container.PersonalRating = info.PersonalInfo.PersonalRating; if (container.IsAdded == false) { newItems.Add(container); } else { existingItems.Add(container); } } } } foreach (MovieContainer movieContainer in newItems) { App.Repository.Movies.Add(movieContainer); } foreach (MovieContainer movieContainer in existingItems) { App.Repository.Movies.Update(movieContainer); } } else if (viewModel.MediaType == MediaType.Tv) { foreach (MediaFileInfo info in viewModel.SelectedMediaFileInfoList) { if (cancellationToken.IsCancellationRequested) { break; } SearchBase selectedItem = info.SelectedMediaItem as SearchBase; if (selectedItem != null) { TvShowContainer container = await App.Repository.GetTvShowAsync(selectedItem.Id, cancellationToken); if (container != null) { container.Seen = info.PersonalInfo.Seen; container.Favorite = info.PersonalInfo.Favorite; container.Watchlist = info.PersonalInfo.Watchlist; container.LocalPath = info.PersonalInfo.LocalPath; container.PersonalRating = info.PersonalInfo.PersonalRating; if (container.IsAdded == false) { newItems.Add(container); } else { existingItems.Add(container); } } } } foreach (TvShowContainer tvShowContainer in newItems) { App.Repository.TvShows.Add(tvShowContainer); } foreach (TvShowContainer tvShowContainer in existingItems) { App.Repository.TvShows.Update(tvShowContainer); } } else if (viewModel.MediaType == MediaType.Person) { foreach (MediaFileInfo info in viewModel.SelectedMediaFileInfoList) { if (cancellationToken.IsCancellationRequested) { break; } SearchBase selectedItem = info.SelectedMediaItem as SearchBase; if (selectedItem != null) { PersonContainer container = await App.Repository.GetPersonAsync(selectedItem.Id, cancellationToken); if (container != null) { container.Favorite = info.PersonalInfo.Favorite; container.LocalPath = info.PersonalInfo.LocalPath; if (container.IsAdded == false) { newItems.Add(container); } else { existingItems.Add(container); } } } } foreach (PersonContainer personContainer in newItems) { App.Repository.People.Add(personContainer); } foreach (PersonContainer personContainer in existingItems) { App.Repository.People.Update(personContainer); } } } finally { EndProgress(); BackgroundOperation.UnRegister(Properties.Resources.ImportWizard); } } }