TraktPlugin.TraktSettings.PerformMaintenance C# (CSharp) Méthode

PerformMaintenance() static private méthode

Perform any maintenance tasks on the settings
static private PerformMaintenance ( ) : void
Résultat void
        internal static void PerformMaintenance()
        {
            TraktLogger.Info("Performing maintenance tasks");

            using (Settings xmlreader = new MPSettings())
            {
                int currentSettingsVersion = xmlreader.GetValueAsInt(cTrakt, cSettingsVersion, SettingsVersion);

                // check if any maintenance task is required
                if (currentSettingsVersion >= SettingsVersion) return;

                // upgrade settings for each version
                while (currentSettingsVersion < SettingsVersion)
                {
                    switch (currentSettingsVersion)
                    {
                        case 0:
                            xmlreader.RemoveEntry(cTrakt, cLastActivityLoad);
                            xmlreader.RemoveEntry(cTrakt, cLastTrendingMovies);
                            xmlreader.RemoveEntry(cTrakt, cLastTrendingShows);
                            xmlreader.RemoveEntry(cTrakt, cLastStatistics);
                            currentSettingsVersion++;
                            break;

                        case 1:
                            // trailers plugin now supports tvshows, seasons and episodes.
                            xmlreader.SetValueAsBool(cTrakt, "UseTrailersPlugin", true);
                            currentSettingsVersion++;
                            break;

                        case 2:
                            // Only use Trailers plugin now for Trailers functionality.
                            xmlreader.RemoveEntry(cTrakt, "UseTrailersPlugin");
                            xmlreader.RemoveEntry(cTrakt, "DefaultTVShowTrailerSite");
                            xmlreader.RemoveEntry(cTrakt, "DefaultMovieTrailerSite");

                            // Remove old activity settings
                            xmlreader.RemoveEntry(cTrakt, "ShowCommunityActivity");
                            xmlreader.RemoveEntry(cTrakt, "IncludeMeInFriendsActivity");

                            // Remove old category/filter node ids for MovingPictures (not needed)
                            xmlreader.RemoveEntry(cTrakt, "MovingPicturesCategoryId");
                            xmlreader.RemoveEntry(cTrakt, "MovingPicturesFilterId");

                            currentSettingsVersion++;
                            break;

                        case 3:
                            // Remove 4TR / My Anime plugin handlers (plugins no longer developed or superceded)
                            xmlreader.RemoveEntry(cTrakt, "ForTheRecordRecordings");
                            xmlreader.RemoveEntry(cTrakt, "ForTheRecordTVLive");
                            xmlreader.RemoveEntry(cTrakt, "MyAnime");

                            // Clear existing passwords as they're no longer hashed in new API v2
                            xmlreader.RemoveEntry(cTrakt, cPassword);
                            xmlreader.RemoveEntry(cTrakt, cUserLogins);

                            // Remove Advanced Rating setting, there is only one now
                            xmlreader.RemoveEntry(cTrakt, "ShowAdvancedRatingsDialog");

                            // Remove SkippedMovies and AlreadyExistMovies as data structures changed
                            xmlreader.RemoveEntry(cTrakt, "SkippedMovies");
                            xmlreader.RemoveEntry(cTrakt, "AlreadyExistMovies");

                            // Remove old show collection cache
                            xmlreader.RemoveEntry(cTrakt, "ShowsInCollection");

                            // Reset some defaults
                            xmlreader.RemoveEntry(cTrakt, cSyncRatings);
                            xmlreader.RemoveEntry(cTrakt, cDashboardActivityPollInterval);
                            xmlreader.RemoveEntry(cTrakt, cDashboardTrendingPollInterval);
                            xmlreader.RemoveEntry(cTrakt, cDashboardLoadDelay);
                            xmlreader.RemoveEntry(cTrakt, cShowRateDlgForPlaylists);
                            xmlreader.RemoveEntry(cTrakt, cSearchTypes);

                            // Remove any persisted data that has changed with with new API v2
                            try
                            {
                                if (File.Exists(cLastActivityFileCache)) File.Delete(cLastActivityFileCache);
                                if (File.Exists(cLastTrendingShowFileCache)) File.Delete(cLastTrendingShowFileCache);
                                if (File.Exists(cLastTrendingMovieFileCache)) File.Delete(cLastTrendingMovieFileCache);
                                if (File.Exists(cLastStatisticsFileCache)) File.Delete(cLastStatisticsFileCache);

                                // Remove old artwork - filenames have changed
                                string imagePath = Config.GetFolder(Config.Dir.Thumbs) + "\\Trakt";
                                if (Directory.Exists(imagePath))
                                {
                                    Directory.Delete(imagePath, true);
                                }
                            }
                            catch (Exception e)
                            {
                                TraktLogger.Error("Failed to remove v1 API persisted data from disk, Reason = '{0}'", e.Message);
                            }

                            currentSettingsVersion++;
                            break;

                        case 4:
                            try
                            {
                                // Fix bad upgrade from previous release
                                string dashboardPersistence = Config.GetFolder(Config.Dir.Config) + "\\Trakt\\Dashboard";
                                if (Directory.Exists(dashboardPersistence))
                                {
                                    Directory.Delete(dashboardPersistence, true);
                                }
                            }
                            catch (Exception e)
                            {
                                TraktLogger.Error("Failed to remove v1 API persisted data from disk, Reason = '{0}'", e.Message);
                            }
                            currentSettingsVersion++;
                            break;

                        case 5:
                            // Clear existing passwords, change of encryption/decryption technique
                            xmlreader.RemoveEntry(cTrakt, cPassword);
                            xmlreader.RemoveEntry(cTrakt, cUserLogins);
                            currentSettingsVersion++;
                            break;

                        case 6:
                            // Save Sync Interval in Hours from Milliseconds
                            int syncTimerLength = xmlreader.GetValueAsInt(cTrakt, cSyncTimerLength, 24);
                            if (syncTimerLength > 24)
                            {
                                // requires upgrade
                                xmlreader.SetValue(cTrakt, cSyncTimerLength, syncTimerLength / 3600000);
                            }
                            currentSettingsVersion++;
                            break;

                        case 7:
                            // upgrade last activity view
                            xmlreader.RemoveEntry(cTrakt, cActivityStreamView);

                            // remove last paused item processed - stored in last activities
                            xmlreader.RemoveEntry(cTrakt, "LastPausedItemProcessed");

                            currentSettingsVersion++;
                            break;

                        case 8:
                            // cleanup cached likes, API changed to include a user object for lists
                            // i.e. the user that owns the list
                            try
                            {
                                var folderName = Path.Combine(Config.GetFolder(Config.Dir.Config), @"Trakt");

                                var matches = Directory.GetFiles(folderName, "Liked.json", SearchOption.AllDirectories);
                                foreach (string file in matches)
                                {
                                    File.Delete(file);
                                }
                            }
                            catch (Exception e)
                            {
                                TraktLogger.Error("Failed to remove previously cached likes from disk, Reason = '{0}'", e.Message);
                            }
                            currentSettingsVersion++;
                            break;

                        case 9:
                            // remove old thumbs folder
                            try
                            {
                                DirectoryInfo di = new DirectoryInfo(Path.Combine(Config.GetFolder(Config.Dir.Thumbs), @"Trakt"));

                                foreach (FileInfo file in di.GetFiles())
                                {
                                    file.Delete();
                                }
                                foreach (DirectoryInfo dir in di.GetDirectories())
                                {
                                    dir.Delete(true);
                                }
                            }
                            catch (Exception e)
                            {
                                TraktLogger.Error("Failed to remove previously cached thumbs from disk, Reason = '{0}'", e.Message);
                            }

                            // update default sizes for requests so we dont hit any limits from TMDb by default
                            xmlreader.SetValue(cTrakt, cMaxAnticipatedMoviesRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxAnticipatedShowsRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxPopularMoviesRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxPopularShowsRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxRelatedMoviesUnWatchedRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxRelatedShowsUnWatchedRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxTrendingMoviesRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxTrendingShowsRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxUserWatchedEpisodesRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxUserWatchedMoviesRequest, 40);
                            xmlreader.SetValue(cTrakt, cMaxUserCommentsRequest, 40);

                            currentSettingsVersion++;
                            break;
                    }
                }
            }
            Settings.SaveCache();
        }

Usage Example

Exemple #1
0
        public Configuration()
        {
            InitializeComponent();
            this.Text = "Trakt Configuration v" + TraktSettings.Version;

            TraktSettings.PerformMaintenance();
            TraktSettings.LoadSettings();

            #region load settings
            tbUsername.Text = TraktSettings.Username;
            // since password is Sha1, just show a dummy password
            tbPassword.Text = string.IsNullOrEmpty(TraktSettings.Password) ? string.Empty : TraktSettings.Password.Substring(0, 10);

            List <KeyValuePair <int, string> > items = new List <KeyValuePair <int, string> >();
            items.Add(new KeyValuePair <int, string>(TraktSettings.MovingPictures, "Moving Pictures"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.TVSeries, "MP-TVSeries"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.MyVideos, "My Videos"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.MyFilms, "My Films"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.OnlineVideos, "OnlineVideos"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.MyAnime, "My Anime"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.MyTVRecordings, "My TV Recordings"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.MyTVLive, "My TV Live"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.ForTheRecordRecordings, "4TR TV Recordings"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.ForTheRecordTVLive, "4TR TV Live"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.ArgusRecordings, "Argus TV Recordings"));
            items.Add(new KeyValuePair <int, string>(TraktSettings.ArgusTVLive, "Argus TV Live"));

            // add enabled ones to top of list, sort by priority
            foreach (var item in items.Where(p => p.Key >= 0).OrderBy(p => p.Key))
            {
                clbPlugins.Items.Add(item.Value, true);
            }
            // add disabled ones last, sort by name
            foreach (var item in items.Where(p => p.Key < 0).OrderBy(p => p.Value))
            {
                clbPlugins.Items.Add(item.Value, false);
            }

            cbTraktSyncLength.SelectedItem     = (TraktSettings.SyncTimerLength / 3600000).ToString();
            cbMovingPicturesCategories.Checked = TraktSettings.MovingPicturesCategories;
            cbMovingPicturesFilters.Checked    = TraktSettings.MovingPicturesFilters;
            cbMyFilmsCategories.Checked        = TraktSettings.MyFilmsCategories;
            cbKeepInSync.Checked  = TraktSettings.KeepTraktLibraryClean;
            cbSyncLibrary.Checked = TraktSettings.SyncLibrary;
            cbSyncRatings.Checked = TraktSettings.SyncRatings;

            // disable controls if not applicable
            if (!TraktSettings.SyncLibrary)
            {
                cbKeepInSync.Enabled  = false;
                cbSyncRatings.Enabled = false;
            }

            #endregion

            // handle events now that we have populated default settings
            clbPlugins.ItemCheck   += new ItemCheckEventHandler(this.clbPlugins_ItemCheck);
            tbPassword.TextChanged += new EventHandler(this.tbPassword_TextChanged);
        }
All Usage Examples Of TraktPlugin.TraktSettings::PerformMaintenance