Пример #1
0
        public void Update(DBMovieInfo movie)
        {
            List <DBSourceInfo> sources;

            lock (detailSources) sources = new List <DBSourceInfo>(detailSources);

            // unlock the movie fields for the first iteration
            movie.ProtectExistingValuesFromCopy(false);

            // first update from the primary source of this data
            int providerCount = 0;

            if (movie.PrimarySource != null && movie.PrimarySource.Provider != null)
            {
                UpdateResults success = movie.PrimarySource.Provider.Update(movie);
                logger.Debug("UPDATE: Title='{0}', Provider='{1}', Version={2}, Result={3}", movie.Title, movie.PrimarySource.Provider.Name, movie.PrimarySource.Provider.Version, success.ToString());
                providerCount++;
            }

            foreach (DBSourceInfo currSource in sources)
            {
                if (movie.IsFullyPopulated())
                {
                    logger.Debug("UPDATE: All fields are populated. Done updating '" + movie.Title + "'.");
                    break;
                }

                if (currSource.IsDisabled(DataType.DETAILS))
                {
                    continue;
                }

                if (currSource == movie.PrimarySource)
                {
                    continue;
                }

                providerCount++;

                if (providerCount <= MovingPicturesCore.Settings.DataProviderRequestLimit || MovingPicturesCore.Settings.DataProviderRequestLimit == 0)
                {
                    UpdateResults success = currSource.Provider.Update(movie);
                    logger.Debug("UPDATE: Title='{0}', Provider='{1}', Version={2}, Result={3}", movie.Title, currSource.Provider.Name, currSource.Provider.Version, success.ToString());
                }
                else
                {
                    // stop update
                    break;
                }

                if (MovingPicturesCore.Settings.UseTranslator)
                {
                    movie.Translate();
                }
            }
        }