Example #1
0
        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();
        }
Example #2
0
 public void Update(CachedMovieInfo si)
 {
     lock (MOVIE_LOCK)
     {
         Movies[si.TmdbCode] = si;
     }
 }
Example #3
0
 private void AddPlaceholderMovie(int tvdb, int tvmaze, int tmdb, string customLanguageCode)
 {
     lock (MOVIE_LOCK)
     {
         Movies[tmdb] = new CachedMovieInfo(tvdb, tvmaze, tmdb, customLanguageCode)
         {
             Dirty = true
         };
     }
 }
Example #4
0
 private void AddPlaceholderMovie(int tvdb, int tvmaze, int tmdb)
 {
     lock (MOVIE_LOCK)
     {
         Movies[tmdb] = new CachedMovieInfo(tvdb, tvmaze, tmdb)
         {
             Dirty = true
         };
     }
 }
Example #5
0
        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);
 }
Example #7
0
 private void File(CachedMovieInfo cachedMovie)
 {
     lock (MOVIE_LOCK)
     {
         if (Movies.ContainsKey(cachedMovie.TmdbCode))
         {
             Movies[cachedMovie.TmdbCode].Merge(cachedMovie);
         }
         else
         {
             Movies[cachedMovie.TmdbCode] = cachedMovie;
         }
     }
 }
Example #8
0
        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;
                }
            }
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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();
            }
        }
Example #12
0
        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);
        }
Example #13
0
        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.");
            }
        }