private void AddToLibrary(CachedMovieInfo si) { // need to add a new showitem MovieConfiguration found = new MovieConfiguration(si.TmdbCode, TVDoc.ProviderType.TMDB); QuickLocateForm f = new QuickLocateForm(si.Name, MediaConfiguration.MediaType.movie); if (f.ShowDialog(this) != DialogResult.OK) { return; } if (found.ConfigurationProvider == TVSettings.Instance.DefaultMovieProvider) { found.ConfigurationProvider = TVDoc.ProviderType.libraryDefault; } if (f.FolderNameChanged) { found.UseAutomaticFolders = false; found.UseManualLocations = true; found.ManualLocations.Add(f.DirectoryFullPath); } else if (f.RootDirectory.HasValue()) { found.AutomaticFolderRoot = f.RootDirectory !; found.UseAutomaticFolders = true; } mDoc.Add(found); mDoc.SetDirty(); mDoc.ExportMovieInfo(); }
public void Update(CachedMovieInfo si) { lock (MOVIE_LOCK) { Movies[si.TmdbCode] = si; } }
private void AddPlaceholderMovie(int tvdb, int tvmaze, int tmdb, string customLanguageCode) { lock (MOVIE_LOCK) { Movies[tmdb] = new CachedMovieInfo(tvdb, tvmaze, tmdb, customLanguageCode) { Dirty = true }; } }
private void AddPlaceholderMovie(int tvdb, int tvmaze, int tmdb) { lock (MOVIE_LOCK) { Movies[tmdb] = new CachedMovieInfo(tvdb, tvmaze, tmdb) { Dirty = true }; } }
internal CachedMovieInfo DownloadMovieNow(int id, bool showErrorMsgBox) { Movie downloadedMovie = Client.GetMovieAsync(id, MovieMethods.ExternalIds | MovieMethods.Images | MovieMethods.AlternativeTitles | MovieMethods.ReleaseDates | MovieMethods.Changes | MovieMethods.Videos | MovieMethods.Credits).Result; if (downloadedMovie is null) { throw new ShowNotFoundException(id, "TMDB no longer has this movie", TVDoc.ProviderType.TMDB, TVDoc.ProviderType.TMDB); } CachedMovieInfo m = new CachedMovieInfo { Imdb = downloadedMovie.ExternalIds.ImdbId, TmdbCode = downloadedMovie.Id, Name = downloadedMovie.Title, Runtime = downloadedMovie.Runtime.ToString(), FirstAired = downloadedMovie.ReleaseDate, Genres = downloadedMovie.Genres.Select(genre => genre.Name).ToList(), Overview = downloadedMovie.Overview, Network = downloadedMovie.ProductionCompanies.FirstOrDefault()?.Name, Status = downloadedMovie.Status, ShowLanguage = downloadedMovie.OriginalLanguage, SiteRating = (float)downloadedMovie.VoteAverage, SiteRatingVotes = downloadedMovie.VoteCount, PosterUrl = ImageUrl(downloadedMovie.PosterPath), SrvLastUpdated = DateTime.UtcNow.Date.ToUnixTime(), CollectionName = downloadedMovie.BelongsToCollection?.Name, CollectionId = downloadedMovie.BelongsToCollection?.Id, TagLine = downloadedMovie.Tagline, Popularity = downloadedMovie.Popularity, TwitterId = downloadedMovie.ExternalIds.TwitterId, InstagramId = downloadedMovie.ExternalIds.InstagramId, FacebookId = downloadedMovie.ExternalIds.InstagramId, FanartUrl = ImageUrl(downloadedMovie.BackdropPath), ContentRating = GetCertification(downloadedMovie, "AU") ?? GetCertification(downloadedMovie, "US") ?? string.Empty,// todo allow user to choose OfficialUrl = downloadedMovie.Homepage, TrailerUrl = GetYouTubeUrl(downloadedMovie), Dirty = false, }; foreach (string?s in downloadedMovie.AlternativeTitles.Titles.Select(title => title.Title)) { m.AddAlias(s); } foreach (Cast?s in downloadedMovie.Credits.Cast) { m.AddActor(new Actor(s.Id, s.ProfilePath, s.Name, s.Character, s.CastId, s.Order)); } foreach (TMDbLib.Objects.General.Crew?s in downloadedMovie.Credits.Crew) { m.AddCrew(new Crew(s.Id, s.ProfilePath, s.Name, s.Job, s.Department, s.CreditId)); } File(m); return(m); }
private bool Match(CachedMovieInfo newSi, CachedMovieInfo si) { if (newSi.CollectionName != si.CollectionName) { return(false); } if (newSi.Overview != si.Overview) { return(false); } //TODO - Check More fields return(true); }
private void File(CachedMovieInfo cachedMovie) { lock (MOVIE_LOCK) { if (Movies.ContainsKey(cachedMovie.TmdbCode)) { Movies[cachedMovie.TmdbCode].Merge(cachedMovie); } else { Movies[cachedMovie.TmdbCode] = cachedMovie; } } }
private void AddMovieToCache([NotNull] CachedMovieInfo si) { int id = si.TmdbCode; lock (MOVIE_LOCK) { if (Movies.ContainsKey(id)) { Movies[id].Merge(si); } else { Movies[id] = si; } } }
private bool EnsureMovieUpdated(int id, string name, bool showErrorMsgBox) { lock (MOVIE_LOCK) { if (Movies.ContainsKey(id) && !Movies[id].Dirty) { return(true); } } Say($"{name} from TMDB"); try { CachedMovieInfo downloadedSi = DownloadMovieNow(id, showErrorMsgBox); if (downloadedSi.TmdbCode != id && id == -1) { lock (MOVIE_LOCK) { Movies.TryRemove(-1, out _); } } lock (MOVIE_LOCK) { AddMovieToCache(downloadedSi); } } catch (SourceConnectivityException conex) { LastErrorMessage = conex.Message; return(true); } catch (SourceConsistencyException sce) { LOGGER.Error(sce.Message); LastErrorMessage = sce.Message; return(true); } finally { SayNothing(); } return(true); }
public Dictionary <int, CachedMovieInfo> GetMovieIdsFromCollection(int collectionId) { Dictionary <int, CachedMovieInfo>?returnValue = new Dictionary <int, CachedMovieInfo>(); TMDbLib.Objects.Collections.Collection collection = Client.GetCollectionAsync(collectionId).Result; if (collection == null) { return(returnValue); } foreach (var m in collection.Parts) { int id = m.Id; CachedMovieInfo info = File(m); returnValue.Add(id, info); } return(returnValue); }
private void AddToLibrary(CachedMovieInfo si) { // need to add a new showitem MovieConfiguration found = new MovieConfiguration(si.TmdbCode, TVDoc.ProviderType.TMDB); QuickLocateForm f = new QuickLocateForm(si.Name, MediaConfiguration.MediaType.movie); if (f.ShowDialog(this) == DialogResult.OK) { if (f.RootDirectory.HasValue()) { found.AutomaticFolderRoot = f.RootDirectory !; found.UseAutomaticFolders = true; } ///TODO put UI to get folder - check they have not adjusted path - if so add as manual folders mDoc.Add(found); mDoc.SetDirty(); mDoc.ExportMovieInfo(); } }
private CachedMovieInfo File(SearchMovie result) { CachedMovieInfo m = new CachedMovieInfo { TmdbCode = result.Id, Name = result.Title, FirstAired = result.ReleaseDate, Overview = result.Overview, ShowLanguage = result.OriginalLanguage, SiteRating = (float)result.VoteAverage, SiteRatingVotes = result.VoteCount, PosterUrl = ImageURL(result.PosterPath), FanartUrl = ImageURL(result.BackdropPath), IsSearchResultOnly = true, Dirty = false, }; File(m); return(m); }
public void ServerAccuracyCheck([NotNull] CachedMovieInfo si) { int tvdbId = si.TmdbCode; try { CachedMovieInfo newSi = lc.DownloadMovieNow(tvdbId, si.LanguageCodeToUse(TVDoc.ProviderType.TMDB), false); if (!Match(newSi, si)) { Issues.Add( $"{si.Name} is not up to date: Local is { DateTimeOffset.FromUnixTimeSeconds(si.SrvLastUpdated)} ({si.SrvLastUpdated}) server is { DateTimeOffset.FromUnixTimeSeconds(newSi.SrvLastUpdated)} ({newSi.SrvLastUpdated})"); si.Dirty = true; if (!ShowsToUpdate.Contains(si)) { ShowsToUpdate.Add(si); } } } catch (SourceConnectivityException) { Issues.Add($"Failed to compare {si.Name} as we could not download the cachedSeries details."); } }