Jelajahi Sumber

Always set update action when item does not exist (#14304)

JPVenson 1 Minggu lalu
induk
melakukan
4cd0a2ed8d
30 mengubah file dengan 171 tambahan dan 55 penghapusan
  1. 11 0
      Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
  2. 8 0
      MediaBrowser.Controller/Persistence/IItemRepository.cs
  3. 5 2
      MediaBrowser.Providers/Books/AudioBookMetadataService.cs
  4. 5 2
      MediaBrowser.Providers/Books/BookMetadataService.cs
  5. 5 2
      MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
  6. 5 2
      MediaBrowser.Providers/Channels/ChannelMetadataService.cs
  7. 5 2
      MediaBrowser.Providers/Folders/CollectionFolderMetadataService.cs
  8. 5 2
      MediaBrowser.Providers/Folders/FolderMetadataService.cs
  9. 5 2
      MediaBrowser.Providers/Folders/UserViewMetadataService.cs
  10. 5 2
      MediaBrowser.Providers/Genres/GenreMetadataService.cs
  11. 5 2
      MediaBrowser.Providers/LiveTv/LiveTvMetadataService.cs
  12. 4 0
      MediaBrowser.Providers/Manager/ItemImageProvider.cs
  13. 18 3
      MediaBrowser.Providers/Manager/MetadataService.cs
  14. 5 2
      MediaBrowser.Providers/Movies/MovieMetadataService.cs
  15. 5 2
      MediaBrowser.Providers/Movies/TrailerMetadataService.cs
  16. 5 2
      MediaBrowser.Providers/Music/AlbumMetadataService.cs
  17. 5 2
      MediaBrowser.Providers/Music/ArtistMetadataService.cs
  18. 5 2
      MediaBrowser.Providers/Music/AudioMetadataService.cs
  19. 5 2
      MediaBrowser.Providers/Music/MusicVideoMetadataService.cs
  20. 5 2
      MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs
  21. 5 2
      MediaBrowser.Providers/People/PersonMetadataService.cs
  22. 5 2
      MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs
  23. 5 2
      MediaBrowser.Providers/Photos/PhotoMetadataService.cs
  24. 5 2
      MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs
  25. 5 2
      MediaBrowser.Providers/Studios/StudioMetadataService.cs
  26. 5 2
      MediaBrowser.Providers/TV/EpisodeMetadataService.cs
  27. 5 2
      MediaBrowser.Providers/TV/SeasonMetadataService.cs
  28. 5 2
      MediaBrowser.Providers/TV/SeriesMetadataService.cs
  29. 5 2
      MediaBrowser.Providers/Videos/VideoMetadataService.cs
  30. 5 2
      MediaBrowser.Providers/Years/YearMetadataService.cs

+ 11 - 0
Jellyfin.Server.Implementations/Item/BaseItemRepository.cs

@@ -14,6 +14,7 @@ using System.Reflection;
 using System.Text;
 using System.Text;
 using System.Text.Json;
 using System.Text.Json;
 using System.Threading;
 using System.Threading;
+using System.Threading.Tasks;
 using Jellyfin.Data.Enums;
 using Jellyfin.Data.Enums;
 using Jellyfin.Database.Implementations;
 using Jellyfin.Database.Implementations;
 using Jellyfin.Database.Implementations.Entities;
 using Jellyfin.Database.Implementations.Entities;
@@ -2353,4 +2354,14 @@ public sealed class BaseItemRepository
 
 
         return baseQuery;
         return baseQuery;
     }
     }
+
+    /// <inheritdoc/>
+    public async Task<bool> ItemExistsAsync(Guid id)
+    {
+        var dbContext = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false);
+        await using (dbContext.ConfigureAwait(false))
+        {
+            return await dbContext.BaseItems.AnyAsync(f => f.Id == id).ConfigureAwait(false);
+        }
+    }
 }
 }

+ 8 - 0
MediaBrowser.Controller/Persistence/IItemRepository.cs

@@ -5,6 +5,7 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Threading;
 using System.Threading;
+using System.Threading.Tasks;
 using Jellyfin.Data.Enums;
 using Jellyfin.Data.Enums;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Dto;
@@ -102,4 +103,11 @@ public interface IItemRepository
     IReadOnlyList<string> GetGenreNames();
     IReadOnlyList<string> GetGenreNames();
 
 
     IReadOnlyList<string> GetAllArtistNames();
     IReadOnlyList<string> GetAllArtistNames();
+
+    /// <summary>
+    /// Checks if an item has been persisted to the database.
+    /// </summary>
+    /// <param name="id">The id to check.</param>
+    /// <returns>True if the item exists, otherwise false.</returns>
+    Task<bool> ItemExistsAsync(Guid id);
 }
 }

+ 5 - 2
MediaBrowser.Providers/Books/AudioBookMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -24,14 +25,16 @@ public class AudioBookMetadataService : MetadataService<AudioBook, SongInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public AudioBookMetadataService(
     public AudioBookMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<AudioBookMetadataService> logger,
         ILogger<AudioBookMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Books/BookMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -24,14 +25,16 @@ public class BookMetadataService : MetadataService<Book, BookInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public BookMetadataService(
     public BookMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<BookMetadataService> logger,
         ILogger<BookMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs

@@ -5,6 +5,7 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -27,14 +28,16 @@ public class BoxSetMetadataService : MetadataService<BoxSet, BoxSetInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public BoxSetMetadataService(
     public BoxSetMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<BoxSetMetadataService> logger,
         ILogger<BoxSetMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Channels/ChannelMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Channels;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class ChannelMetadataService : MetadataService<Channel, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public ChannelMetadataService(
     public ChannelMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<ChannelMetadataService> logger,
         ILogger<ChannelMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/Folders/CollectionFolderMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class CollectionFolderMetadataService : MetadataService<CollectionFolder,
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public CollectionFolderMetadataService(
     public CollectionFolderMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<CollectionFolderMetadataService> logger,
         ILogger<CollectionFolderMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/Folders/FolderMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class FolderMetadataService : MetadataService<Folder, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public FolderMetadataService(
     public FolderMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<FolderMetadataService> logger,
         ILogger<FolderMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Folders/UserViewMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class UserViewMetadataService : MetadataService<UserView, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public UserViewMetadataService(
     public UserViewMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<UserViewMetadataService> logger,
         ILogger<UserViewMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/Genres/GenreMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class GenreMetadataService : MetadataService<Genre, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public GenreMetadataService(
     public GenreMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<GenreMetadataService> logger,
         ILogger<GenreMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/LiveTv/LiveTvMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.LiveTv;
 using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class LiveTvMetadataService : MetadataService<LiveTvChannel, ItemLookupIn
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public LiveTvMetadataService(
     public LiveTvMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<LiveTvMetadataService> logger,
         ILogger<LiveTvMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 4 - 0
MediaBrowser.Providers/Manager/ItemImageProvider.cs

@@ -377,6 +377,10 @@ namespace MediaBrowser.Providers.Manager
                     {
                     {
                         // Nothing to do, already gone
                         // Nothing to do, already gone
                     }
                     }
+                    catch (DirectoryNotFoundException)
+                    {
+                        // Nothing to do, already gone
+                    }
                     catch (UnauthorizedAccessException ex)
                     catch (UnauthorizedAccessException ex)
                     {
                     {
                         _logger.LogWarning(ex, "Unable to delete {Image}", image.Path);
                         _logger.LogWarning(ex, "Unable to delete {Image}", image.Path);

+ 18 - 3
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -14,6 +14,7 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
@@ -33,7 +34,8 @@ namespace MediaBrowser.Providers.Manager
             IProviderManager providerManager,
             IProviderManager providerManager,
             IFileSystem fileSystem,
             IFileSystem fileSystem,
             ILibraryManager libraryManager,
             ILibraryManager libraryManager,
-            IExternalDataManager externalDataManager)
+            IExternalDataManager externalDataManager,
+            IItemRepository itemRepository)
         {
         {
             ServerConfigurationManager = serverConfigurationManager;
             ServerConfigurationManager = serverConfigurationManager;
             Logger = logger;
             Logger = logger;
@@ -41,6 +43,7 @@ namespace MediaBrowser.Providers.Manager
             FileSystem = fileSystem;
             FileSystem = fileSystem;
             LibraryManager = libraryManager;
             LibraryManager = libraryManager;
             ExternalDataManager = externalDataManager;
             ExternalDataManager = externalDataManager;
+            ItemRepository = itemRepository;
             ImageProvider = new ItemImageProvider(Logger, ProviderManager, FileSystem);
             ImageProvider = new ItemImageProvider(Logger, ProviderManager, FileSystem);
         }
         }
 
 
@@ -58,6 +61,8 @@ namespace MediaBrowser.Providers.Manager
 
 
         protected IExternalDataManager ExternalDataManager { get; }
         protected IExternalDataManager ExternalDataManager { get; }
 
 
+        protected IItemRepository ItemRepository { get; }
+
         protected virtual bool EnableUpdatingPremiereDateFromChildren => false;
         protected virtual bool EnableUpdatingPremiereDateFromChildren => false;
 
 
         protected virtual bool EnableUpdatingGenresFromChildren => false;
         protected virtual bool EnableUpdatingGenresFromChildren => false;
@@ -85,6 +90,7 @@ namespace MediaBrowser.Providers.Manager
         {
         {
             var itemOfType = (TItemType)item;
             var itemOfType = (TItemType)item;
             var updateType = ItemUpdateType.None;
             var updateType = ItemUpdateType.None;
+
             var libraryOptions = LibraryManager.GetLibraryOptions(item);
             var libraryOptions = LibraryManager.GetLibraryOptions(item);
             var isFirstRefresh = item.DateLastRefreshed.Date == DateTime.MinValue.Date;
             var isFirstRefresh = item.DateLastRefreshed.Date == DateTime.MinValue.Date;
             var hasRefreshedMetadata = true;
             var hasRefreshedMetadata = true;
@@ -141,7 +147,8 @@ namespace MediaBrowser.Providers.Manager
                 Item = itemOfType
                 Item = itemOfType
             };
             };
 
 
-            var beforeSaveResult = BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType);
+            var beforeSaveResult = await BeforeSave(itemOfType, isFirstRefresh || refreshOptions.ReplaceAllMetadata || refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || requiresRefresh || refreshOptions.ForceSave, updateType)
+                .ConfigureAwait(false);
             updateType |= beforeSaveResult;
             updateType |= beforeSaveResult;
 
 
             updateType = await SaveInternal(item, refreshOptions, updateType, isFirstRefresh, requiresRefresh, metadataResult, cancellationToken).ConfigureAwait(false);
             updateType = await SaveInternal(item, refreshOptions, updateType, isFirstRefresh, requiresRefresh, metadataResult, cancellationToken).ConfigureAwait(false);
@@ -284,12 +291,20 @@ namespace MediaBrowser.Providers.Manager
         /// <param name="isFullRefresh">if set to <c>true</c> [is full refresh].</param>
         /// <param name="isFullRefresh">if set to <c>true</c> [is full refresh].</param>
         /// <param name="currentUpdateType">Type of the current update.</param>
         /// <param name="currentUpdateType">Type of the current update.</param>
         /// <returns>ItemUpdateType.</returns>
         /// <returns>ItemUpdateType.</returns>
-        private ItemUpdateType BeforeSave(TItemType item, bool isFullRefresh, ItemUpdateType currentUpdateType)
+        private async Task<ItemUpdateType> BeforeSave(TItemType item, bool isFullRefresh, ItemUpdateType currentUpdateType)
         {
         {
             var updateType = BeforeSaveInternal(item, isFullRefresh, currentUpdateType);
             var updateType = BeforeSaveInternal(item, isFullRefresh, currentUpdateType);
 
 
             updateType |= item.OnMetadataChanged();
             updateType |= item.OnMetadataChanged();
 
 
+            if (updateType == ItemUpdateType.None)
+            {
+                if (!await ItemRepository.ItemExistsAsync(item.Id).ConfigureAwait(false))
+                {
+                    return ItemUpdateType.MetadataImport;
+                }
+            }
+
             return updateType;
             return updateType;
         }
         }
 
 

+ 5 - 2
MediaBrowser.Providers/Movies/MovieMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -24,14 +25,16 @@ public class MovieMetadataService : MetadataService<Movie, MovieInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public MovieMetadataService(
     public MovieMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<MovieMetadataService> logger,
         ILogger<MovieMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Movies/TrailerMetadataService.cs

@@ -3,6 +3,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -25,14 +26,16 @@ public class TrailerMetadataService : MetadataService<Trailer, TrailerInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public TrailerMetadataService(
     public TrailerMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<TrailerMetadataService> logger,
         ILogger<TrailerMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Music/AlbumMetadataService.cs

@@ -9,6 +9,7 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -31,14 +32,16 @@ public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public AlbumMetadataService(
     public AlbumMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<AlbumMetadataService> logger,
         ILogger<AlbumMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Music/ArtistMetadataService.cs

@@ -4,6 +4,7 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -25,14 +26,16 @@ public class ArtistMetadataService : MetadataService<MusicArtist, ArtistInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public ArtistMetadataService(
     public ArtistMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<ArtistMetadataService> logger,
         ILogger<ArtistMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Music/AudioMetadataService.cs

@@ -4,6 +4,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -26,14 +27,16 @@ public class AudioMetadataService : MetadataService<Audio, SongInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public AudioMetadataService(
     public AudioMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<AudioMetadataService> logger,
         ILogger<AudioMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Music/MusicVideoMetadataService.cs

@@ -4,6 +4,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -26,14 +27,16 @@ public class MusicVideoMetadataService : MetadataService<MusicVideo, MusicVideoI
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public MusicVideoMetadataService(
     public MusicVideoMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<MusicVideoMetadataService> logger,
         ILogger<MusicVideoMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class MusicGenreMetadataService : MetadataService<MusicGenre, ItemLookupI
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public MusicGenreMetadataService(
     public MusicGenreMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<MusicGenreMetadataService> logger,
         ILogger<MusicGenreMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/People/PersonMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class PersonMetadataService : MetadataService<Person, PersonLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public PersonMetadataService(
     public PersonMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<PersonMetadataService> logger,
         ILogger<PersonMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class PhotoAlbumMetadataService : MetadataService<PhotoAlbum, ItemLookupI
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public PhotoAlbumMetadataService(
     public PhotoAlbumMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<PhotoAlbumMetadataService> logger,
         ILogger<PhotoAlbumMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/Photos/PhotoMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class PhotoMetadataService : MetadataService<Photo, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public PhotoMetadataService(
     public PhotoMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<PhotoMetadataService> logger,
         ILogger<PhotoMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs

@@ -4,6 +4,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Playlists;
 using MediaBrowser.Controller.Playlists;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
@@ -27,14 +28,16 @@ public class PlaylistMetadataService : MetadataService<Playlist, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public PlaylistMetadataService(
     public PlaylistMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<PlaylistMetadataService> logger,
         ILogger<PlaylistMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Studios/StudioMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class StudioMetadataService : MetadataService<Studio, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public StudioMetadataService(
     public StudioMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<StudioMetadataService> logger,
         ILogger<StudioMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }

+ 5 - 2
MediaBrowser.Providers/TV/EpisodeMetadataService.cs

@@ -3,6 +3,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -25,14 +26,16 @@ public class EpisodeMetadataService : MetadataService<Episode, EpisodeInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public EpisodeMetadataService(
     public EpisodeMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<EpisodeMetadataService> logger,
         ILogger<EpisodeMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/TV/SeasonMetadataService.cs

@@ -6,6 +6,7 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
@@ -28,14 +29,16 @@ public class SeasonMetadataService : MetadataService<Season, SeasonInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public SeasonMetadataService(
     public SeasonMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<SeasonMetadataService> logger,
         ILogger<SeasonMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/TV/SeriesMetadataService.cs

@@ -10,6 +10,7 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Globalization;
 using MediaBrowser.Model.Globalization;
@@ -36,6 +37,7 @@ public class SeriesMetadataService : MetadataService<Series, SeriesInfo>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="localizationManager">Instance of the <see cref="ILocalizationManager"/> interface.</param>
     /// <param name="localizationManager">Instance of the <see cref="ILocalizationManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public SeriesMetadataService(
     public SeriesMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<SeriesMetadataService> logger,
         ILogger<SeriesMetadataService> logger,
@@ -43,8 +45,9 @@ public class SeriesMetadataService : MetadataService<Series, SeriesInfo>
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
         ILocalizationManager localizationManager,
         ILocalizationManager localizationManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
         _localizationManager = localizationManager;
         _localizationManager = localizationManager;
     }
     }

+ 5 - 2
MediaBrowser.Providers/Videos/VideoMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class VideoMetadataService : MetadataService<Video, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public VideoMetadataService(
     public VideoMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<VideoMetadataService> logger,
         ILogger<VideoMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 
 

+ 5 - 2
MediaBrowser.Providers/Years/YearMetadataService.cs

@@ -2,6 +2,7 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Providers.Manager;
 using MediaBrowser.Providers.Manager;
@@ -23,14 +24,16 @@ public class YearMetadataService : MetadataService<Year, ItemLookupInfo>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
     /// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+    /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
     public YearMetadataService(
     public YearMetadataService(
         IServerConfigurationManager serverConfigurationManager,
         IServerConfigurationManager serverConfigurationManager,
         ILogger<YearMetadataService> logger,
         ILogger<YearMetadataService> logger,
         IProviderManager providerManager,
         IProviderManager providerManager,
         IFileSystem fileSystem,
         IFileSystem fileSystem,
         ILibraryManager libraryManager,
         ILibraryManager libraryManager,
-        IExternalDataManager externalDataManager)
-        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+        IExternalDataManager externalDataManager,
+        IItemRepository itemRepository)
+        : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
     {
     {
     }
     }
 }
 }