public void DeleteFileEntries(HashSet <FileEntry> fileEntries) { List <FileEntry> fileEntriesList = new List <FileEntry>(fileEntries); List <FileEntryBroker> fileEntryBrokersExifTool = new List <FileEntryBroker>(); List <FileEntryBroker> fileEntryBrokersMicrosoftPhotos = new List <FileEntryBroker>(); List <FileEntryBroker> fileEntryBrokersWindowsPhotoGallary = new List <FileEntryBroker>(); foreach (FileEntry fileEntry in fileEntries) { fileEntryBrokersExifTool.Add(new FileEntryBroker(fileEntry, MetadataBrokerType.ExifTool)); fileEntryBrokersExifTool.Add(new FileEntryBroker(fileEntry, MetadataBrokerType.ExifTool | MetadataBrokerType.ExifToolWriteError)); fileEntryBrokersExifTool.Add(new FileEntryBroker(fileEntry, MetadataBrokerType.UserSavedData)); fileEntryBrokersMicrosoftPhotos.Add(new FileEntryBroker(fileEntry, MetadataBrokerType.MicrosoftPhotos)); fileEntryBrokersWindowsPhotoGallary.Add(new FileEntryBroker(fileEntry, MetadataBrokerType.WindowsLivePhotoGallery)); } databaseAndCacheMetadataExiftool.MetadataCacheRemove(fileEntryBrokersExifTool); databaseAndCacheMetadataExiftool.DeleteFileEntries(fileEntryBrokersExifTool); //Also delete When Broker = @Broker databaseAndCacheMetadataMicrosoftPhotos.MetadataCacheRemove(fileEntryBrokersMicrosoftPhotos); databaseAndCacheMetadataMicrosoftPhotos.DeleteFileEntries(fileEntryBrokersMicrosoftPhotos); databaseAndCacheMetadataWindowsLivePhotoGallery.MetadataCacheRemove(fileEntryBrokersWindowsPhotoGallary); databaseAndCacheMetadataWindowsLivePhotoGallery.DeleteFileEntries(fileEntryBrokersWindowsPhotoGallary); databaseExiftoolData.DeleteFileEntriesFromMediaExiftoolTags(fileEntriesList); databaseExiftoolWarning.DeleteFileEntriesFromMediaExiftoolTagsWarning(fileEntriesList); databaseAndCacheThumbnail.DeleteThumbnails(fileEntriesList); }
private void kryptonButtonDatabaseCleanerExiftoolData_Click(object sender, EventArgs e) { DatabaseAndCacheMetadataExiftool.OnRecordReadToCacheParameter += DatabaseAndCacheMetadataExiftool_OnRecordReadToCacheParameter; DatabaseAndCacheMetadataExiftool.ReadToCacheAllMetadatas(); DatabaseAndCacheMetadataExiftool.OnRecordReadToCacheParameter -= DatabaseAndCacheMetadataExiftool_OnRecordReadToCacheParameter; List <FileEntryBroker> fileEntryBrokers = DatabaseAndCacheMetadataExiftool.GetAllCacheData(); List <FileEntryBroker> fileEntryBrokersDelete = new List <FileEntryBroker>(); foreach (FileEntryBroker fileEntryBroker in fileEntryBrokers) { if (fileEntryBroker.Broker == MetadataBrokerType.ExifTool) { if (!File.Exists(fileEntryBroker.FileFullPath)) { fileEntryBrokersDelete.Add(fileEntryBroker); } else { Metadata metadata = DatabaseAndCacheMetadataExiftool.ReadMetadataFromCacheOnly(fileEntryBroker); if (metadata != null && (metadata.FileMimeType == null || metadata.FileMimeType == CorruptFile)) { fileEntryBrokersDelete.Add(fileEntryBroker); } } UpdateStatus("Needs cleaning: " + fileEntryBrokersDelete.Count); } } DatabaseAndCacheMetadataExiftool.OnDeleteRecord += DatabaseAndCacheMetadataExiftool_OnDeleteRecord; DatabaseAndCacheMetadataExiftool.DeleteFileEntries(fileEntryBrokersDelete); DatabaseAndCacheMetadataExiftool.OnDeleteRecord -= DatabaseAndCacheMetadataExiftool_OnDeleteRecord; kryptonLabelStatus.Text = "Done cleaning..."; }