aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers')
-rw-r--r--MediaBrowser.Providers/Books/BookMetadataService.cs16
-rw-r--r--MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs43
-rw-r--r--MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs12
-rw-r--r--MediaBrowser.Providers/Channels/ChannelMetadataService.cs12
-rw-r--r--MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs12
-rw-r--r--MediaBrowser.Providers/Folders/FolderMetadataService.cs20
-rw-r--r--MediaBrowser.Providers/Folders/UserViewMetadataService.cs13
-rw-r--r--MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs12
-rw-r--r--MediaBrowser.Providers/Games/GameMetadataService.cs23
-rw-r--r--MediaBrowser.Providers/Games/GameSystemMetadataService.cs19
-rw-r--r--MediaBrowser.Providers/Genres/GenreMetadataService.cs12
-rw-r--r--MediaBrowser.Providers/LiveTv/AudioRecordingService.cs11
-rw-r--r--MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs7
-rw-r--r--MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs16
-rw-r--r--MediaBrowser.Providers/LiveTv/VideoRecordingService.cs11
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs52
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs19
-rw-r--r--MediaBrowser.Providers/Manager/ProviderUtils.cs13
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs19
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs10
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs48
-rw-r--r--MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs36
-rw-r--r--MediaBrowser.Providers/Movies/MovieMetadataService.cs33
-rw-r--r--MediaBrowser.Providers/Music/AlbumMetadataService.cs33
-rw-r--r--MediaBrowser.Providers/Music/ArtistMetadataService.cs25
-rw-r--r--MediaBrowser.Providers/Music/AudioMetadataService.cs23
-rw-r--r--MediaBrowser.Providers/Music/MusicVideoMetadataService.cs23
-rw-r--r--MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs12
-rw-r--r--MediaBrowser.Providers/Omdb/OmdbItemProvider.cs4
-rw-r--r--MediaBrowser.Providers/Omdb/OmdbProvider.cs8
-rw-r--r--MediaBrowser.Providers/People/PersonMetadataService.cs19
-rw-r--r--MediaBrowser.Providers/People/TvdbPersonImageProvider.cs16
-rw-r--r--MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs13
-rw-r--r--MediaBrowser.Providers/Photos/PhotoMetadataService.cs12
-rw-r--r--MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs23
-rw-r--r--MediaBrowser.Providers/Studios/StudioMetadataService.cs11
-rw-r--r--MediaBrowser.Providers/TV/DummySeasonProvider.cs3
-rw-r--r--MediaBrowser.Providers/TV/EpisodeMetadataService.cs43
-rw-r--r--MediaBrowser.Providers/TV/MissingEpisodeProvider.cs3
-rw-r--r--MediaBrowser.Providers/TV/SeasonMetadataService.cs20
-rw-r--r--MediaBrowser.Providers/TV/SeriesMetadataService.cs84
-rw-r--r--MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs71
-rw-r--r--MediaBrowser.Providers/TV/TvdbSeriesProvider.cs22
-rw-r--r--MediaBrowser.Providers/Users/UserMetadataService.cs12
-rw-r--r--MediaBrowser.Providers/Videos/VideoMetadataService.cs22
-rw-r--r--MediaBrowser.Providers/Years/YearMetadataService.cs12
46 files changed, 414 insertions, 569 deletions
diff --git a/MediaBrowser.Providers/Books/BookMetadataService.cs b/MediaBrowser.Providers/Books/BookMetadataService.cs
index 53e2af3a5..311082d96 100644
--- a/MediaBrowser.Providers/Books/BookMetadataService.cs
+++ b/MediaBrowser.Providers/Books/BookMetadataService.cs
@@ -12,25 +12,17 @@ namespace MediaBrowser.Providers.Books
{
public class BookMetadataService : MetadataService<Book, BookInfo>
{
- public BookMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public BookMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Book source, Book target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Book> source, MetadataResult<Book> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- if (replaceData || string.IsNullOrEmpty(target.SeriesName))
+ if (replaceData || string.IsNullOrEmpty(target.Item.SeriesName))
{
- target.SeriesName = source.SeriesName;
+ target.Item.SeriesName = source.Item.SeriesName;
}
}
}
diff --git a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
index 69b78b5f1..8b405302e 100644
--- a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
+++ b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
@@ -15,33 +15,10 @@ namespace MediaBrowser.Providers.BoxSets
{
public class BoxSetMetadataService : MetadataService<BoxSet, BoxSetInfo>
{
- public BoxSetMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public BoxSetMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(BoxSet source, BoxSet target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
- {
- ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
-
- if (mergeMetadataSettings)
- {
- var list = source.LinkedChildren.Where(i => i.Type != LinkedChildType.Manual).ToList();
-
- list.AddRange(target.LinkedChildren.Where(i => i.Type == LinkedChildType.Manual));
-
- target.LinkedChildren = list;
- target.Shares = source.Shares;
- }
- }
-
protected override async Task<ItemUpdateType> BeforeSave(BoxSet item, bool isFullRefresh, ItemUpdateType currentUpdateType)
{
var updateType = await base.BeforeSave(item, isFullRefresh, currentUpdateType).ConfigureAwait(false);
@@ -59,5 +36,23 @@ namespace MediaBrowser.Providers.BoxSets
return updateType;
}
+
+ protected override void MergeData(MetadataResult<BoxSet> source, MetadataResult<BoxSet> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ {
+ ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (mergeMetadataSettings)
+ {
+ var list = sourceItem.LinkedChildren.Where(i => i.Type != LinkedChildType.Manual).ToList();
+
+ list.AddRange(targetItem.LinkedChildren.Where(i => i.Type == LinkedChildType.Manual));
+
+ targetItem.LinkedChildren = list;
+ targetItem.Shares = sourceItem.Shares;
+ }
+ }
}
}
diff --git a/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs b/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs
index 70a72fba5..9d80559f1 100644
--- a/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs
+++ b/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs
@@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Channels
{
public class AudioChannelItemMetadataService : MetadataService<ChannelAudioItem, ItemLookupInfo>
{
- public AudioChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public AudioChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(ChannelAudioItem source, ChannelAudioItem target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<ChannelAudioItem> source, MetadataResult<ChannelAudioItem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Channels/ChannelMetadataService.cs b/MediaBrowser.Providers/Channels/ChannelMetadataService.cs
index 957fc2d93..faa35b379 100644
--- a/MediaBrowser.Providers/Channels/ChannelMetadataService.cs
+++ b/MediaBrowser.Providers/Channels/ChannelMetadataService.cs
@@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Channels
{
public class ChannelMetadataService : MetadataService<Channel, ItemLookupInfo>
{
- public ChannelMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public ChannelMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Channel source, Channel target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Channel> source, MetadataResult<Channel> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs b/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs
index b815f3ccd..1e7b5aca8 100644
--- a/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs
+++ b/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs
@@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Channels
{
public class VideoChannelItemMetadataService : MetadataService<ChannelVideoItem, ChannelItemLookupInfo>
{
- public VideoChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public VideoChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(ChannelVideoItem source, ChannelVideoItem target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<ChannelVideoItem> source, MetadataResult<ChannelVideoItem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Folders/FolderMetadataService.cs b/MediaBrowser.Providers/Folders/FolderMetadataService.cs
index 3f4691aa0..d54093da6 100644
--- a/MediaBrowser.Providers/Folders/FolderMetadataService.cs
+++ b/MediaBrowser.Providers/Folders/FolderMetadataService.cs
@@ -12,23 +12,10 @@ namespace MediaBrowser.Providers.Folders
{
public class FolderMetadataService : MetadataService<Folder, ItemLookupInfo>
{
- public FolderMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public FolderMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Folder source, Folder target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
- {
- ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- }
-
public override int Order
{
get
@@ -37,5 +24,10 @@ namespace MediaBrowser.Providers.Folders
return 10;
}
}
+
+ protected override void MergeData(MetadataResult<Folder> source, MetadataResult<Folder> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ {
+ ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+ }
}
}
diff --git a/MediaBrowser.Providers/Folders/UserViewMetadataService.cs b/MediaBrowser.Providers/Folders/UserViewMetadataService.cs
index 97ac78a82..1dc09e01d 100644
--- a/MediaBrowser.Providers/Folders/UserViewMetadataService.cs
+++ b/MediaBrowser.Providers/Folders/UserViewMetadataService.cs
@@ -12,20 +12,11 @@ namespace MediaBrowser.Providers.Folders
{
public class UserViewMetadataService : MetadataService<UserView, ItemLookupInfo>
{
- public UserViewMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager)
- : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public UserViewMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(UserView source, UserView target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<UserView> source, MetadataResult<UserView> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs b/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs
index 3e94de95a..957596a30 100644
--- a/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs
+++ b/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs
@@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.GameGenres
{
public class GameGenreMetadataService : MetadataService<GameGenre, ItemLookupInfo>
{
- public GameGenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public GameGenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(GameGenre source, GameGenre target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<GameGenre> source, MetadataResult<GameGenre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Games/GameMetadataService.cs b/MediaBrowser.Providers/Games/GameMetadataService.cs
index 46715fcbd..b9403aaa6 100644
--- a/MediaBrowser.Providers/Games/GameMetadataService.cs
+++ b/MediaBrowser.Providers/Games/GameMetadataService.cs
@@ -12,30 +12,25 @@ namespace MediaBrowser.Providers.Games
{
public class GameMetadataService : MetadataService<Game, GameInfo>
{
- public GameMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public GameMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Game source, Game target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Game> source, MetadataResult<Game> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- if (replaceData || string.IsNullOrEmpty(target.GameSystem))
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || string.IsNullOrEmpty(targetItem.GameSystem))
{
- target.GameSystem = source.GameSystem;
+ targetItem.GameSystem = sourceItem.GameSystem;
}
- if (replaceData || !target.PlayersSupported.HasValue)
+ if (replaceData || !targetItem.PlayersSupported.HasValue)
{
- target.PlayersSupported = source.PlayersSupported;
+ targetItem.PlayersSupported = sourceItem.PlayersSupported;
}
}
}
diff --git a/MediaBrowser.Providers/Games/GameSystemMetadataService.cs b/MediaBrowser.Providers/Games/GameSystemMetadataService.cs
index 963b2e49f..24786034d 100644
--- a/MediaBrowser.Providers/Games/GameSystemMetadataService.cs
+++ b/MediaBrowser.Providers/Games/GameSystemMetadataService.cs
@@ -14,25 +14,20 @@ namespace MediaBrowser.Providers.Games
{
public class GameSystemMetadataService : MetadataService<GameSystem, GameSystemInfo>
{
- public GameSystemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public GameSystemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(GameSystem source, GameSystem target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<GameSystem> source, MetadataResult<GameSystem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- if (replaceData || string.IsNullOrEmpty(target.GameSystemName))
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || string.IsNullOrEmpty(targetItem.GameSystemName))
{
- target.GameSystemName = source.GameSystemName;
+ targetItem.GameSystemName = sourceItem.GameSystemName;
}
}
}
diff --git a/MediaBrowser.Providers/Genres/GenreMetadataService.cs b/MediaBrowser.Providers/Genres/GenreMetadataService.cs
index abe025577..5cdd6d847 100644
--- a/MediaBrowser.Providers/Genres/GenreMetadataService.cs
+++ b/MediaBrowser.Providers/Genres/GenreMetadataService.cs
@@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Genres
{
public class GenreMetadataService : MetadataService<Genre, ItemLookupInfo>
{
- public GenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public GenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Genre source, Genre target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Genre> source, MetadataResult<Genre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs b/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs
index 4fc5ba40d..b3d9d6a72 100644
--- a/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs
+++ b/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs
@@ -14,18 +14,11 @@ namespace MediaBrowser.Providers.LiveTv
{
public class AudioRecordingService : MetadataService<LiveTvAudioRecording, ItemLookupInfo>
{
- public AudioRecordingService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public AudioRecordingService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- protected override void MergeData(LiveTvAudioRecording source, LiveTvAudioRecording target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<LiveTvAudioRecording> source, MetadataResult<LiveTvAudioRecording> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs b/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs
index 37bfe4107..231017cd9 100644
--- a/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs
+++ b/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs
@@ -14,14 +14,11 @@ namespace MediaBrowser.Providers.LiveTv
{
public class ChannelMetadataService : MetadataService<LiveTvChannel, ItemLookupInfo>
{
- public ChannelMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public ChannelMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- protected override void MergeData(LiveTvChannel source, LiveTvChannel target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<LiveTvChannel> source, MetadataResult<LiveTvChannel> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs
index f17389615..8576993fd 100644
--- a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs
+++ b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs
@@ -12,23 +12,11 @@ namespace MediaBrowser.Providers.LiveTv
{
public class ProgramMetadataService : MetadataService<LiveTvProgram, LiveTvProgramLookupInfo>
{
- public ProgramMetadataService(
- IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager,
- IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager)
- : base(
- serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public ProgramMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings"></param>
- protected override void MergeData(LiveTvProgram source, LiveTvProgram target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<LiveTvProgram> source, MetadataResult<LiveTvProgram> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs b/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs
index c47297d9c..4d8b27285 100644
--- a/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs
+++ b/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs
@@ -14,18 +14,11 @@ namespace MediaBrowser.Providers.LiveTv
{
public class VideoRecordingService : MetadataService<LiveTvVideoRecording, ItemLookupInfo>
{
- public VideoRecordingService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public VideoRecordingService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- protected override void MergeData(LiveTvVideoRecording source, LiveTvVideoRecording target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<LiveTvVideoRecording> source, MetadataResult<LiveTvVideoRecording> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index bc0b1bcb2..de41a0f96 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -24,8 +24,9 @@ namespace MediaBrowser.Providers.Manager
protected readonly IProviderRepository ProviderRepo;
protected readonly IFileSystem FileSystem;
protected readonly IUserDataManager UserDataManager;
+ protected readonly ILibraryManager LibraryManager;
- protected MetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager)
+ protected MetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager)
{
ServerConfigurationManager = serverConfigurationManager;
Logger = logger;
@@ -33,6 +34,7 @@ namespace MediaBrowser.Providers.Manager
ProviderRepo = providerRepo;
FileSystem = fileSystem;
UserDataManager = userDataManager;
+ LibraryManager = libraryManager;
}
/// <summary>
@@ -118,6 +120,11 @@ namespace MediaBrowser.Providers.Manager
refreshResult.AddStatus(ProviderRefreshStatus.Failure, ex.Message);
}
+ var metadataResult = new MetadataResult<TItemType>
+ {
+ Item = itemOfType
+ };
+
// Next run metadata providers
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
{
@@ -136,7 +143,7 @@ namespace MediaBrowser.Providers.Manager
{
var id = await CreateInitialLookupInfo(itemOfType, cancellationToken).ConfigureAwait(false);
- var result = await RefreshWithProviders(itemOfType, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false);
+ var result = await RefreshWithProviders(metadataResult, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false);
updateType = updateType | result.UpdateType;
refreshResult.AddStatus(result.Status, result.ErrorMessage);
@@ -174,7 +181,7 @@ namespace MediaBrowser.Providers.Manager
}
// Save to database
- await SaveItem(itemOfType, updateType, cancellationToken);
+ await SaveItem(metadataResult, updateType, cancellationToken).ConfigureAwait(false);
}
if (updateType > ItemUpdateType.None || refreshResult.IsDirty)
@@ -321,9 +328,14 @@ namespace MediaBrowser.Providers.Manager
return providers;
}
- protected Task SaveItem(TItemType item, ItemUpdateType reason, CancellationToken cancellationToken)
+ protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken)
{
- return item.UpdateToRepository(reason, cancellationToken);
+ await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false);
+
+ if (result.Item.SupportsPeople)
+ {
+ await LibraryManager.UpdatePeople(result.Item as BaseItem, result.People);
+ }
}
public bool CanRefresh(IHasMetadata item)
@@ -331,7 +343,7 @@ namespace MediaBrowser.Providers.Manager
return item is TItemType;
}
- protected virtual async Task<RefreshResult> RefreshWithProviders(TItemType item,
+ protected virtual async Task<RefreshResult> RefreshWithProviders(MetadataResult<TItemType> metadata,
TIdType id,
MetadataRefreshOptions options,
List<IMetadataProvider> providers,
@@ -344,6 +356,8 @@ namespace MediaBrowser.Providers.Manager
Providers = providers.Select(i => i.GetType().FullName.GetMD5()).ToList()
};
+ var item = metadata.Item;
+
var customProviders = providers.OfType<ICustomMetadataProvider<TItemType>>().ToList();
var logName = item.LocationType == LocationType.Remote ? item.Name ?? item.Path : item.Path ?? item.Name;
@@ -352,11 +366,16 @@ namespace MediaBrowser.Providers.Manager
await RunCustomProvider(provider, item, logName, options, refreshResult, cancellationToken).ConfigureAwait(false);
}
- var temp = CreateNew();
- temp.Path = item.Path;
+ var temp = new MetadataResult<TItemType>
+ {
+ Item = CreateNew()
+ };
+ temp.Item.Path = item.Path;
var successfulProviderCount = 0;
var failedProviderCount = 0;
+ var userDataList = new List<UserItemData>();
+
// If replacing all metadata, run internet providers first
if (options.ReplaceAllMetadata)
{
@@ -371,7 +390,6 @@ namespace MediaBrowser.Providers.Manager
}
var hasLocalMetadata = false;
- var userDataList = new List<UserItemData>();
foreach (var provider in providers.OfType<ILocalMetadataProvider<TItemType>>().ToList())
{
@@ -393,7 +411,7 @@ namespace MediaBrowser.Providers.Manager
userDataList = localItem.UserDataLIst;
- MergeData(localItem.Item, temp, new List<MetadataFields>(), !options.ReplaceAllMetadata, true);
+ MergeData(localItem, temp, new List<MetadataFields>(), !options.ReplaceAllMetadata, true);
refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport;
// Only one local provider allowed per item
@@ -452,10 +470,10 @@ namespace MediaBrowser.Providers.Manager
if (!hasLocalMetadata)
{
// TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields
- MergeData(item, temp, new List<MetadataFields>(), false, true);
+ MergeData(metadata, temp, new List<MetadataFields>(), false, true);
}
- MergeData(temp, item, item.LockedFields, true, true);
+ MergeData(temp, metadata, item.LockedFields, true, true);
}
}
@@ -526,7 +544,7 @@ namespace MediaBrowser.Providers.Manager
return new TItemType();
}
- private async Task<RefreshResult> ExecuteRemoteProviders(TItemType temp, string logName, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, CancellationToken cancellationToken)
+ private async Task<RefreshResult> ExecuteRemoteProviders(MetadataResult<TItemType> temp, string logName, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, CancellationToken cancellationToken)
{
var refreshResult = new RefreshResult();
@@ -537,7 +555,7 @@ namespace MediaBrowser.Providers.Manager
if (id != null)
{
- MergeNewData(temp, id);
+ MergeNewData(temp.Item, id);
}
try
@@ -548,7 +566,7 @@ namespace MediaBrowser.Providers.Manager
{
NormalizeRemoteResult(result.Item);
- MergeData(result.Item, temp, new List<MetadataFields>(), false, false);
+ MergeData(result, temp, new List<MetadataFields>(), false, false);
refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataDownload;
@@ -624,8 +642,8 @@ namespace MediaBrowser.Providers.Manager
}
}
- protected abstract void MergeData(TItemType source,
- TItemType target,
+ protected abstract void MergeData(MetadataResult<TItemType> source,
+ MetadataResult<TItemType> target,
List<MetadataFields> lockedFields,
bool replaceData,
bool mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 01a89bf26..14009a94f 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -150,6 +150,11 @@ namespace MediaBrowser.Providers.Manager
public Task SaveImage(IHasImages item, string source, string mimeType, ImageType type, int? imageIndex, string internalCacheKey, CancellationToken cancellationToken)
{
+ if (string.IsNullOrWhiteSpace(source))
+ {
+ throw new ArgumentNullException("source");
+ }
+
var fileStream = _fileSystem.GetFileStream(source, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true);
return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, internalCacheKey, cancellationToken);
@@ -480,12 +485,11 @@ namespace MediaBrowser.Providers.Manager
// Give it a dummy path just so that it looks like a file system item
var dummy = new T()
{
- Path = Path.Combine(_appPaths.InternalMetadataPath, "dummy"),
-
- // Dummy this up to fool the local trailer check
- Parent = new Folder()
+ Path = Path.Combine(_appPaths.InternalMetadataPath, "dummy")
};
+ dummy.SetParent(new Folder());
+
var options = GetMetadataOptions(dummy);
var summary = new MetadataPluginSummary
@@ -722,12 +726,11 @@ namespace MediaBrowser.Providers.Manager
// Give it a dummy path just so that it looks like a file system item
var dummy = new TItemType
{
- Path = Path.Combine(_appPaths.InternalMetadataPath, "dummy"),
-
- // Dummy this up to fool the local trailer check
- Parent = new Folder()
+ Path = Path.Combine(_appPaths.InternalMetadataPath, "dummy")
};
+ dummy.SetParent(new Folder());
+
var options = GetMetadataOptions(dummy);
var providers = GetMetadataProvidersInternal<TItemType>(dummy, options, searchInfo.IncludeDisabledProviders)
diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs
index 1c526b4db..a0a0493d5 100644
--- a/MediaBrowser.Providers/Manager/ProviderUtils.cs
+++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
@@ -8,12 +9,16 @@ namespace MediaBrowser.Providers.Manager
{
public static class ProviderUtils
{
- public static void MergeBaseItemData(BaseItem source,
- BaseItem target,
+ public static void MergeBaseItemData<T>(MetadataResult<T> sourceResult,
+ MetadataResult<T> targetResult,
List<MetadataFields> lockedFields,
bool replaceData,
bool mergeMetadataSettings)
+ where T : BaseItem
{
+ var source = sourceResult.Item;
+ var target = targetResult.Item;
+
if (source == null)
{
throw new ArgumentNullException("source");
@@ -100,9 +105,9 @@ namespace MediaBrowser.Providers.Manager
if (!lockedFields.Contains(MetadataFields.Cast))
{
- if (replaceData || target.People.Count == 0)
+ if (replaceData || targetResult.People.Count == 0)
{
- target.People = source.People;
+ targetResult.People = sourceResult.People;
}
}
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
index 33f35450d..f2f1663e4 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
@@ -8,6 +8,7 @@ using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Serialization;
+using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -22,15 +23,17 @@ namespace MediaBrowser.Providers.MediaInfo
private readonly IItemRepository _itemRepo;
private readonly IApplicationPaths _appPaths;
private readonly IJsonSerializer _json;
+ private readonly ILibraryManager _libraryManager;
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
- public FFProbeAudioInfo(IMediaEncoder mediaEncoder, IItemRepository itemRepo, IApplicationPaths appPaths, IJsonSerializer json)
+ public FFProbeAudioInfo(IMediaEncoder mediaEncoder, IItemRepository itemRepo, IApplicationPaths appPaths, IJsonSerializer json, ILibraryManager libraryManager)
{
_mediaEncoder = mediaEncoder;
_itemRepo = itemRepo;
_appPaths = appPaths;
_json = json;
+ _libraryManager = libraryManager;
}
public async Task<ItemUpdateType> Probe<T>(T item, CancellationToken cancellationToken)
@@ -96,7 +99,7 @@ namespace MediaBrowser.Providers.MediaInfo
/// <param name="cancellationToken">The cancellation token.</param>
/// <param name="mediaInfo">The media information.</param>
/// <returns>Task.</returns>
- protected Task Fetch(Audio audio, CancellationToken cancellationToken, Model.MediaInfo.MediaInfo mediaInfo)
+ protected async Task Fetch(Audio audio, CancellationToken cancellationToken, Model.MediaInfo.MediaInfo mediaInfo)
{
var mediaStreams = mediaInfo.MediaStreams;
@@ -110,9 +113,9 @@ namespace MediaBrowser.Providers.MediaInfo
var extension = (Path.GetExtension(audio.Path) ?? string.Empty).TrimStart('.');
audio.Container = extension;
- FetchDataFromTags(audio, mediaInfo);
+ await FetchDataFromTags(audio, mediaInfo).ConfigureAwait(false);
- return _itemRepo.SaveMediaStreams(audio.Id, mediaStreams, cancellationToken);
+ await _itemRepo.SaveMediaStreams(audio.Id, mediaStreams, cancellationToken).ConfigureAwait(false);
}
/// <summary>
@@ -120,7 +123,7 @@ namespace MediaBrowser.Providers.MediaInfo
/// </summary>
/// <param name="audio">The audio.</param>
/// <param name="data">The data.</param>
- private void FetchDataFromTags(Audio audio, Model.MediaInfo.MediaInfo data)
+ private async Task FetchDataFromTags(Audio audio, Model.MediaInfo.MediaInfo data)
{
// Only set Name if title was found in the dictionary
if (!string.IsNullOrEmpty(data.Title))
@@ -130,17 +133,19 @@ namespace MediaBrowser.Providers.MediaInfo
if (!audio.LockedFields.Contains(MetadataFields.Cast))
{
- audio.People.Clear();
+ var people = new List<PersonInfo>();
foreach (var person in data.People)
{
- audio.AddPerson(new PersonInfo
+ PeopleHelper.AddPerson(people, new PersonInfo
{
Name = person.Name,
Type = person.Type,
Role = person.Role
});
}
+
+ await _libraryManager.UpdatePeople(audio, people).ConfigureAwait(false);
}
audio.Album = data.Album;
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
index a6d3c0271..af7fc3df4 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
@@ -51,6 +51,7 @@ namespace MediaBrowser.Providers.MediaInfo
private readonly IServerConfigurationManager _config;
private readonly ISubtitleManager _subtitleManager;
private readonly IChapterManager _chapterManager;
+ private readonly ILibraryManager _libraryManager;
public string Name
{
@@ -92,7 +93,7 @@ namespace MediaBrowser.Providers.MediaInfo
return FetchAudioInfo(item, cancellationToken);
}
- public FFProbeProvider(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager)
+ public FFProbeProvider(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager, ILibraryManager libraryManager)
{
_logger = logger;
_isoManager = isoManager;
@@ -107,6 +108,7 @@ namespace MediaBrowser.Providers.MediaInfo
_config = config;
_subtitleManager = subtitleManager;
_chapterManager = chapterManager;
+ _libraryManager = libraryManager;
}
private readonly Task<ItemUpdateType> _cachedTask = Task.FromResult(ItemUpdateType.None);
@@ -138,8 +140,8 @@ namespace MediaBrowser.Providers.MediaInfo
FetchShortcutInfo(item);
return Task.FromResult(ItemUpdateType.MetadataEdit);
}
-
- var prober = new FFProbeVideoInfo(_logger, _isoManager, _mediaEncoder, _itemRepo, _blurayExaminer, _localization, _appPaths, _json, _encodingManager, _fileSystem, _config, _subtitleManager, _chapterManager);
+
+ var prober = new FFProbeVideoInfo(_logger, _isoManager, _mediaEncoder, _itemRepo, _blurayExaminer, _localization, _appPaths, _json, _encodingManager, _fileSystem, _config, _subtitleManager, _chapterManager, _libraryManager);
return prober.ProbeVideo(item, options, cancellationToken);
}
@@ -157,7 +159,7 @@ namespace MediaBrowser.Providers.MediaInfo
return _cachedTask;
}
- var prober = new FFProbeAudioInfo(_mediaEncoder, _itemRepo, _appPaths, _json);
+ var prober = new FFProbeAudioInfo(_mediaEncoder, _itemRepo, _appPaths, _json, _libraryManager);
return prober.Probe(item, cancellationToken);
}
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
index e1ee6ac5a..395d95cc5 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
@@ -46,10 +46,11 @@ namespace MediaBrowser.Providers.MediaInfo
private readonly IServerConfigurationManager _config;
private readonly ISubtitleManager _subtitleManager;
private readonly IChapterManager _chapterManager;
+ private readonly ILibraryManager _libraryManager;
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
- public FFProbeVideoInfo(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager)
+ public FFProbeVideoInfo(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager, ILibraryManager libraryManager)
{
_logger = logger;
_isoManager = isoManager;
@@ -64,6 +65,7 @@ namespace MediaBrowser.Providers.MediaInfo
_config = config;
_subtitleManager = subtitleManager;
_chapterManager = chapterManager;
+ _libraryManager = libraryManager;
}
public async Task<ItemUpdateType> ProbeVideo<T>(T item,
@@ -219,6 +221,7 @@ namespace MediaBrowser.Providers.MediaInfo
await AddExternalSubtitles(video, mediaStreams, options, cancellationToken).ConfigureAwait(false);
FetchEmbeddedInfo(video, mediaInfo, options);
+ await FetchPeople(video, mediaInfo, options).ConfigureAwait(false);
video.IsHD = mediaStreams.Any(i => i.Type == MediaStreamType.Video && i.Width.HasValue && i.Width.Value >= 1270);
@@ -370,24 +373,6 @@ namespace MediaBrowser.Providers.MediaInfo
}
}
- if (!video.LockedFields.Contains(MetadataFields.Cast))
- {
- if (video.People.Count == 0 || isFullRefresh)
- {
- video.People.Clear();
-
- foreach (var person in data.People)
- {
- video.AddPerson(new PersonInfo
- {
- Name = person.Name,
- Type = person.Type,
- Role = person.Role
- });
- }
- }
- }
-
if (!video.LockedFields.Contains(MetadataFields.Genres))
{
if (video.Genres.Count == 0 || isFullRefresh)
@@ -458,6 +443,31 @@ namespace MediaBrowser.Providers.MediaInfo
}
}
+ private async Task FetchPeople(Video video, Model.MediaInfo.MediaInfo data, MetadataRefreshOptions options)
+ {
+ var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh;
+
+ if (!video.LockedFields.Contains(MetadataFields.Cast))
+ {
+ if (isFullRefresh || _libraryManager.GetPeople(video).Count == 0)
+ {
+ var people = new List<PersonInfo>();
+
+ foreach (var person in data.People)
+ {
+ PeopleHelper.AddPerson(people, new PersonInfo
+ {
+ Name = person.Name,
+ Type = person.Type,
+ Role = person.Role
+ });
+ }
+
+ await _libraryManager.UpdatePeople(video, people);
+ }
+ }
+ }
+
private SubtitleOptions GetOptions()
{
return _config.GetConfiguration<SubtitleOptions>("subtitles");
diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
index c23ed3786..6854ff12b 100644
--- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
+++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
@@ -34,8 +34,6 @@ namespace MediaBrowser.Providers.Movies
public async Task<MetadataResult<T>> GetMetadata(ItemLookupInfo itemId, CancellationToken cancellationToken)
{
- var result = new MetadataResult<T>();
-
var tmdbId = itemId.GetProviderId(MetadataProviders.Tmdb);
var imdbId = itemId.GetProviderId(MetadataProviders.Imdb);
@@ -56,12 +54,10 @@ namespace MediaBrowser.Providers.Movies
{
cancellationToken.ThrowIfCancellationRequested();
- result.Item = await FetchMovieData(tmdbId, imdbId, itemId.MetadataLanguage, itemId.MetadataCountryCode, cancellationToken).ConfigureAwait(false);
-
- result.HasMetadata = result.Item != null;
+ return await FetchMovieData(tmdbId, imdbId, itemId.MetadataLanguage, itemId.MetadataCountryCode, cancellationToken).ConfigureAwait(false);
}
- return result;
+ return new MetadataResult<T>();
}
/// <summary>
@@ -73,8 +69,13 @@ namespace MediaBrowser.Providers.Movies
/// <param name="preferredCountryCode">The preferred country code.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{`0}.</returns>
- private async Task<T> FetchMovieData(string tmdbId, string imdbId, string language, string preferredCountryCode, CancellationToken cancellationToken)
+ private async Task<MetadataResult<T>> FetchMovieData(string tmdbId, string imdbId, string language, string preferredCountryCode, CancellationToken cancellationToken)
{
+ var item = new MetadataResult<T>
+ {
+ Item = new T()
+ };
+
string dataFilePath = null;
MovieDbProvider.CompleteMovieData movieInfo = null;
@@ -82,7 +83,7 @@ namespace MediaBrowser.Providers.Movies
if (string.IsNullOrEmpty(tmdbId))
{
movieInfo = await MovieDbProvider.Current.FetchMainResult(imdbId, false, language, cancellationToken).ConfigureAwait(false);
- if (movieInfo == null) return null;
+ if (movieInfo == null) return item;
tmdbId = movieInfo.id.ToString(_usCulture);
@@ -96,9 +97,8 @@ namespace MediaBrowser.Providers.Movies
dataFilePath = dataFilePath ?? MovieDbProvider.Current.GetDataFilePath(tmdbId, language);
movieInfo = movieInfo ?? _jsonSerializer.DeserializeFromFile<MovieDbProvider.CompleteMovieData>(dataFilePath);
- var item = new T();
-
ProcessMainInfo(item, preferredCountryCode, movieInfo);
+ item.HasMetadata = true;
return item;
}
@@ -106,11 +106,13 @@ namespace MediaBrowser.Providers.Movies
/// <summary>
/// Processes the main info.
/// </summary>
- /// <param name="movie">The movie.</param>
+ /// <param name="resultItem">The result item.</param>
/// <param name="preferredCountryCode">The preferred country code.</param>
/// <param name="movieData">The movie data.</param>
- private void ProcessMainInfo(T movie, string preferredCountryCode, MovieDbProvider.CompleteMovieData movieData)
+ private void ProcessMainInfo(MetadataResult<T> resultItem, string preferredCountryCode, MovieDbProvider.CompleteMovieData movieData)
{
+ var movie = resultItem.Item;
+
movie.Name = movieData.GetTitle() ?? movie.Name;
var hasOriginalTitle = movie as IHasOriginalTitle;
@@ -233,13 +235,19 @@ namespace MediaBrowser.Providers.Movies
//actors come from cast
if (movieData.casts != null && movieData.casts.cast != null)
{
- foreach (var actor in movieData.casts.cast.OrderBy(a => a.order)) movie.AddPerson(new PersonInfo { Name = actor.name.Trim(), Role = actor.character, Type = PersonType.Actor, SortOrder = actor.order });
+ foreach (var actor in movieData.casts.cast.OrderBy(a => a.order))
+ {
+ PeopleHelper.AddPerson(resultItem.People, new PersonInfo { Name = actor.name.Trim(), Role = actor.character, Type = PersonType.Actor, SortOrder = actor.order });
+ }
}
//and the rest from crew
if (movieData.casts != null && movieData.casts.crew != null)
{
- foreach (var person in movieData.casts.crew) movie.AddPerson(new PersonInfo { Name = person.name.Trim(), Role = person.job, Type = person.department });
+ foreach (var person in movieData.casts.crew)
+ {
+ PeopleHelper.AddPerson(resultItem.People, new PersonInfo { Name = person.name.Trim(), Role = person.job, Type = person.department });
+ }
}
if (movieData.keywords != null && movieData.keywords.keywords != null)
diff --git a/MediaBrowser.Providers/Movies/MovieMetadataService.cs b/MediaBrowser.Providers/Movies/MovieMetadataService.cs
index f886deb00..e96e89a78 100644
--- a/MediaBrowser.Providers/Movies/MovieMetadataService.cs
+++ b/MediaBrowser.Providers/Movies/MovieMetadataService.cs
@@ -12,28 +12,10 @@ namespace MediaBrowser.Providers.Movies
{
public class MovieMetadataService : MetadataService<Movie, MovieInfo>
{
- public MovieMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public MovieMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Movie source, Movie target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
- {
- ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
-
- if (replaceData || string.IsNullOrEmpty(target.TmdbCollectionName))
- {
- target.TmdbCollectionName = source.TmdbCollectionName;
- }
- }
-
protected override bool IsFullLocalMetadata(Movie item)
{
if (string.IsNullOrWhiteSpace(item.Overview))
@@ -46,5 +28,18 @@ namespace MediaBrowser.Providers.Movies
}
return base.IsFullLocalMetadata(item);
}
+
+ protected override void MergeData(MetadataResult<Movie> source, MetadataResult<Movie> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ {
+ ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || string.IsNullOrEmpty(targetItem.TmdbCollectionName))
+ {
+ targetItem.TmdbCollectionName = sourceItem.TmdbCollectionName;
+ }
+ }
}
}
diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs
index 90248e418..859db37ba 100644
--- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs
+++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs
@@ -15,28 +15,10 @@ namespace MediaBrowser.Providers.Music
{
public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo>
{
- public AlbumMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public AlbumMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(MusicAlbum source, MusicAlbum target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
- {
- ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
-
- if (replaceData || target.Artists.Count == 0)
- {
- target.Artists = source.Artists;
- }
- }
-
protected override async Task<ItemUpdateType> BeforeSave(MusicAlbum item, bool isFullRefresh, ItemUpdateType currentUpdateType)
{
var updateType = await base.BeforeSave(item, isFullRefresh, currentUpdateType).ConfigureAwait(false);
@@ -171,5 +153,18 @@ namespace MediaBrowser.Providers.Music
return updateType;
}
+
+ protected override void MergeData(MetadataResult<MusicAlbum> source, MetadataResult<MusicAlbum> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ {
+ ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || targetItem.Artists.Count == 0)
+ {
+ targetItem.Artists = sourceItem.Artists;
+ }
+ }
}
}
diff --git a/MediaBrowser.Providers/Music/ArtistMetadataService.cs b/MediaBrowser.Providers/Music/ArtistMetadataService.cs
index 790529371..0032aac62 100644
--- a/MediaBrowser.Providers/Music/ArtistMetadataService.cs
+++ b/MediaBrowser.Providers/Music/ArtistMetadataService.cs
@@ -15,24 +15,8 @@ namespace MediaBrowser.Providers.Music
{
public class ArtistMetadataService : MetadataService<MusicArtist, ArtistInfo>
{
- private readonly ILibraryManager _libraryManager;
-
- public ArtistMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public ArtistMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
- _libraryManager = libraryManager;
- }
-
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(MusicArtist source, MusicArtist target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
- {
- ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
protected override async Task<ItemUpdateType> BeforeSave(MusicArtist item, bool isFullRefresh, ItemUpdateType currentUpdateType)
@@ -46,7 +30,7 @@ namespace MediaBrowser.Providers.Music
var itemFilter = item.GetItemFilter();
var taggedItems = item.IsAccessedByName ?
- _libraryManager.RootFolder.GetRecursiveChildren(i => !i.IsFolder && itemFilter(i)).ToList() :
+ LibraryManager.RootFolder.GetRecursiveChildren(i => !i.IsFolder && itemFilter(i)).ToList() :
item.GetRecursiveChildren(i => i is IHasArtist && !i.IsFolder).ToList();
if (!item.LockedFields.Contains(MetadataFields.Genres))
@@ -67,5 +51,10 @@ namespace MediaBrowser.Providers.Music
return updateType;
}
+
+ protected override void MergeData(MetadataResult<MusicArtist> source, MetadataResult<MusicArtist> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ {
+ ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+ }
}
}
diff --git a/MediaBrowser.Providers/Music/AudioMetadataService.cs b/MediaBrowser.Providers/Music/AudioMetadataService.cs
index 908913910..b4d50a173 100644
--- a/MediaBrowser.Providers/Music/AudioMetadataService.cs
+++ b/MediaBrowser.Providers/Music/AudioMetadataService.cs
@@ -12,30 +12,25 @@ namespace MediaBrowser.Providers.Music
{
public class AudioMetadataService : MetadataService<Audio, SongInfo>
{
- public AudioMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public AudioMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Audio source, Audio target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Audio> source, MetadataResult<Audio> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- if (replaceData || target.Artists.Count == 0)
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || targetItem.Artists.Count == 0)
{
- target.Artists = source.Artists;
+ targetItem.Artists = sourceItem.Artists;
}
- if (replaceData || string.IsNullOrEmpty(target.Album))
+ if (replaceData || string.IsNullOrEmpty(targetItem.Album))
{
- target.Album = source.Album;
+ targetItem.Album = sourceItem.Album;
}
}
}
diff --git a/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs b/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs
index bbb456b2b..0456dbfba 100644
--- a/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs
+++ b/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs
@@ -13,30 +13,25 @@ namespace MediaBrowser.Providers.Music
{
class MusicVideoMetadataService : MetadataService<MusicVideo, MusicVideoInfo>
{
- public MusicVideoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public MusicVideoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(MusicVideo source, MusicVideo target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<MusicVideo> source, MetadataResult<MusicVideo> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- if (replaceData || string.IsNullOrEmpty(target.Album))
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || string.IsNullOrEmpty(targetItem.Album))
{
- target.Album = source.Album;
+ targetItem.Album = sourceItem.Album;
}
- if (replaceData || target.Artists.Count == 0)
+ if (replaceData || targetItem.Artists.Count == 0)
{
- target.Artists = source.Artists.ToList();
+ targetItem.Artists = sourceItem.Artists.ToList();
}
}
}
diff --git a/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs b/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs
index b3c0427bf..107b76609 100644
--- a/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs
+++ b/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs
@@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.MusicGenres
{
public class MusicGenreMetadataService : MetadataService<MusicGenre, ItemLookupInfo>
{
- public MusicGenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public MusicGenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(MusicGenre source, MusicGenre target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<MusicGenre> source, MetadataResult<MusicGenre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
index 596b864f7..dffabd83c 100644
--- a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
+++ b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs
@@ -172,7 +172,7 @@ namespace MediaBrowser.Providers.Omdb
result.Item.SetProviderId(MetadataProviders.Imdb, imdbId);
result.HasMetadata = true;
- await new OmdbProvider(_jsonSerializer, _httpClient).Fetch(result.Item, imdbId, cancellationToken).ConfigureAwait(false);
+ await new OmdbProvider(_jsonSerializer, _httpClient).Fetch(result.Item, imdbId, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
}
return result;
@@ -211,7 +211,7 @@ namespace MediaBrowser.Providers.Omdb
result.Item.SetProviderId(MetadataProviders.Imdb, imdbId);
result.HasMetadata = true;
- await new OmdbProvider(_jsonSerializer, _httpClient).Fetch(result.Item, imdbId, cancellationToken).ConfigureAwait(false);
+ await new OmdbProvider(_jsonSerializer, _httpClient).Fetch(result.Item, imdbId, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
}
return result;
diff --git a/MediaBrowser.Providers/Omdb/OmdbProvider.cs b/MediaBrowser.Providers/Omdb/OmdbProvider.cs
index e55321bb1..aee1abd72 100644
--- a/MediaBrowser.Providers/Omdb/OmdbProvider.cs
+++ b/MediaBrowser.Providers/Omdb/OmdbProvider.cs
@@ -28,7 +28,7 @@ namespace MediaBrowser.Providers.Omdb
Current = this;
}
- public async Task Fetch(BaseItem item, string imdbId, CancellationToken cancellationToken)
+ public async Task Fetch(BaseItem item, string imdbId, string language, CancellationToken cancellationToken)
{
if (string.IsNullOrWhiteSpace(imdbId))
{
@@ -51,7 +51,11 @@ namespace MediaBrowser.Providers.Omdb
{
var result = _jsonSerializer.DeserializeFromStream<RootObject>(stream);
- item.Name = result.Title;
+ // Only take the name if the user's language is set to english, since Omdb has no localization
+ if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase))
+ {
+ item.Name = result.Title;
+ }
int year;
diff --git a/MediaBrowser.Providers/People/PersonMetadataService.cs b/MediaBrowser.Providers/People/PersonMetadataService.cs
index dff5a7e61..9961ff8dc 100644
--- a/MediaBrowser.Providers/People/PersonMetadataService.cs
+++ b/MediaBrowser.Providers/People/PersonMetadataService.cs
@@ -14,25 +14,20 @@ namespace MediaBrowser.Providers.People
{
public class PersonMetadataService : MetadataService<Person, PersonLookupInfo>
{
- public PersonMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public PersonMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Person source, Person target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Person> source, MetadataResult<Person> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- if (replaceData || string.IsNullOrEmpty(target.PlaceOfBirth))
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || string.IsNullOrEmpty(targetItem.PlaceOfBirth))
{
- target.PlaceOfBirth = source.PlaceOfBirth;
+ targetItem.PlaceOfBirth = sourceItem.PlaceOfBirth;
}
}
}
diff --git a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs
index 0258fd539..86e2cfaf7 100644
--- a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs
+++ b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs
@@ -21,13 +21,13 @@ namespace MediaBrowser.Providers.People
public class TvdbPersonImageProvider : IRemoteImageProvider, IHasOrder
{
private readonly IServerConfigurationManager _config;
- private readonly ILibraryManager _library;
+ private readonly ILibraryManager _libraryManager;
private readonly IHttpClient _httpClient;
- public TvdbPersonImageProvider(IServerConfigurationManager config, ILibraryManager library, IHttpClient httpClient)
+ public TvdbPersonImageProvider(IServerConfigurationManager config, ILibraryManager libraryManager, IHttpClient httpClient)
{
_config = config;
- _library = library;
+ _libraryManager = libraryManager;
_httpClient = httpClient;
}
@@ -59,9 +59,13 @@ namespace MediaBrowser.Providers.People
// Avoid implicitly captured closure
var itemName = item.Name;
- var seriesWithPerson = _library.RootFolder
- .GetRecursiveChildren(i => i is Series && !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Tvdb)) && i.People.Any(p => string.Equals(p.Name, itemName, StringComparison.OrdinalIgnoreCase)))
- .Cast<Series>()
+ var seriesWithPerson = _libraryManager.GetItems(new InternalItemsQuery
+ {
+ IncludeItemTypes = new[] { typeof(Series).Name },
+ Person = itemName
+
+ }).Items.Cast<Series>()
+ .Where(i => !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Tvdb)))
.ToList();
var infos = seriesWithPerson.Select(i => GetImageFromSeriesData(i, item.Name, cancellationToken))
diff --git a/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs b/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs
index 822961d81..1c5d7f1b5 100644
--- a/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs
+++ b/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs
@@ -12,20 +12,11 @@ namespace MediaBrowser.Providers.Photos
{
class PhotoAlbumMetadataService : MetadataService<PhotoAlbum, ItemLookupInfo>
{
- public PhotoAlbumMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager)
- : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public PhotoAlbumMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(PhotoAlbum source, PhotoAlbum target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<PhotoAlbum> source, MetadataResult<PhotoAlbum> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Photos/PhotoMetadataService.cs b/MediaBrowser.Providers/Photos/PhotoMetadataService.cs
index 5e903bdc3..22a60ea08 100644
--- a/MediaBrowser.Providers/Photos/PhotoMetadataService.cs
+++ b/MediaBrowser.Providers/Photos/PhotoMetadataService.cs
@@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Photos
{
class PhotoMetadataService : MetadataService<Photo, ItemLookupInfo>
{
- public PhotoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public PhotoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Photo source, Photo target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Photo> source, MetadataResult<Photo> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs b/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs
index c53a89db7..af4393d18 100644
--- a/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs
+++ b/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs
@@ -12,31 +12,26 @@ namespace MediaBrowser.Providers.Playlists
{
class PlaylistMetadataService : MetadataService<Playlist, ItemLookupInfo>
{
- public PlaylistMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public PlaylistMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Playlist source, Playlist target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Playlist> source, MetadataResult<Playlist> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- if (replaceData || string.IsNullOrEmpty(target.PlaylistMediaType))
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || string.IsNullOrEmpty(targetItem.PlaylistMediaType))
{
- target.PlaylistMediaType = source.PlaylistMediaType;
+ targetItem.PlaylistMediaType = sourceItem.PlaylistMediaType;
}
if (mergeMetadataSettings)
{
- target.LinkedChildren = source.LinkedChildren;
- target.Shares = source.Shares;
+ targetItem.LinkedChildren = sourceItem.LinkedChildren;
+ targetItem.Shares = sourceItem.Shares;
}
}
}
diff --git a/MediaBrowser.Providers/Studios/StudioMetadataService.cs b/MediaBrowser.Providers/Studios/StudioMetadataService.cs
index dcd90ecf6..5b273d8ca 100644
--- a/MediaBrowser.Providers/Studios/StudioMetadataService.cs
+++ b/MediaBrowser.Providers/Studios/StudioMetadataService.cs
@@ -14,18 +14,11 @@ namespace MediaBrowser.Providers.Studios
{
public class StudioMetadataService : MetadataService<Studio, ItemLookupInfo>
{
- public StudioMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public StudioMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- protected override void MergeData(Studio source, Studio target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Studio> source, MetadataResult<Studio> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/TV/DummySeasonProvider.cs b/MediaBrowser.Providers/TV/DummySeasonProvider.cs
index fb5282551..426ff4318 100644
--- a/MediaBrowser.Providers/TV/DummySeasonProvider.cs
+++ b/MediaBrowser.Providers/TV/DummySeasonProvider.cs
@@ -111,10 +111,11 @@ namespace MediaBrowser.Providers.TV
{
Name = seasonName,
IndexNumber = seasonNumber,
- Parent = series,
Id = (series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName).GetMBId(typeof(Season))
};
+ season.SetParent(series);
+
await series.AddChild(season, cancellationToken).ConfigureAwait(false);
await season.RefreshMetadata(new MetadataRefreshOptions(), cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Providers/TV/EpisodeMetadataService.cs b/MediaBrowser.Providers/TV/EpisodeMetadataService.cs
index 616db8d86..339967eeb 100644
--- a/MediaBrowser.Providers/TV/EpisodeMetadataService.cs
+++ b/MediaBrowser.Providers/TV/EpisodeMetadataService.cs
@@ -12,55 +12,50 @@ namespace MediaBrowser.Providers.TV
{
public class EpisodeMetadataService : MetadataService<Episode, EpisodeInfo>
{
- public EpisodeMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public EpisodeMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Episode source, Episode target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Episode> source, MetadataResult<Episode> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- if (replaceData || !target.AirsBeforeSeasonNumber.HasValue)
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
+
+ if (replaceData || !targetItem.AirsBeforeSeasonNumber.HasValue)
{
- target.AirsBeforeSeasonNumber = source.AirsBeforeSeasonNumber;
+ targetItem.AirsBeforeSeasonNumber = sourceItem.AirsBeforeSeasonNumber;
}
- if (replaceData || !target.AirsAfterSeasonNumber.HasValue)
+ if (replaceData || !targetItem.AirsAfterSeasonNumber.HasValue)
{
- target.AirsAfterSeasonNumber = source.AirsAfterSeasonNumber;
+ targetItem.AirsAfterSeasonNumber = sourceItem.AirsAfterSeasonNumber;
}
- if (replaceData || !target.AirsBeforeEpisodeNumber.HasValue)
+ if (replaceData || !targetItem.AirsBeforeEpisodeNumber.HasValue)
{
- target.AirsBeforeEpisodeNumber = source.AirsBeforeEpisodeNumber;
+ targetItem.AirsBeforeEpisodeNumber = sourceItem.AirsBeforeEpisodeNumber;
}
- if (replaceData || !target.DvdSeasonNumber.HasValue)
+ if (replaceData || !targetItem.DvdSeasonNumber.HasValue)
{
- target.DvdSeasonNumber = source.DvdSeasonNumber;
+ targetItem.DvdSeasonNumber = sourceItem.DvdSeasonNumber;
}
- if (replaceData || !target.DvdEpisodeNumber.HasValue)
+ if (replaceData || !targetItem.DvdEpisodeNumber.HasValue)
{
- target.DvdEpisodeNumber = source.DvdEpisodeNumber;
+ targetItem.DvdEpisodeNumber = sourceItem.DvdEpisodeNumber;
}
- if (replaceData || !target.AbsoluteEpisodeNumber.HasValue)
+ if (replaceData || !targetItem.AbsoluteEpisodeNumber.HasValue)
{
- target.AbsoluteEpisodeNumber = source.AbsoluteEpisodeNumber;
+ targetItem.AbsoluteEpisodeNumber = sourceItem.AbsoluteEpisodeNumber;
}
- if (replaceData || !target.IndexNumberEnd.HasValue)
+ if (replaceData || !targetItem.IndexNumberEnd.HasValue)
{
- target.IndexNumberEnd = source.IndexNumberEnd;
+ targetItem.IndexNumberEnd = sourceItem.IndexNumberEnd;
}
}
}
diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
index d45128288..957345607 100644
--- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
@@ -406,10 +406,11 @@ namespace MediaBrowser.Providers.TV
Name = name,
IndexNumber = episodeNumber,
ParentIndexNumber = seasonNumber,
- Parent = season,
Id = (series.Id + seasonNumber.ToString(_usCulture) + name).GetMBId(typeof(Episode))
};
+ episode.SetParent(season);
+
await season.AddChild(episode, cancellationToken).ConfigureAwait(false);
await episode.RefreshMetadata(new MetadataRefreshOptions
diff --git a/MediaBrowser.Providers/TV/SeasonMetadataService.cs b/MediaBrowser.Providers/TV/SeasonMetadataService.cs
index 8955b224e..800960c09 100644
--- a/MediaBrowser.Providers/TV/SeasonMetadataService.cs
+++ b/MediaBrowser.Providers/TV/SeasonMetadataService.cs
@@ -14,23 +14,10 @@ namespace MediaBrowser.Providers.TV
{
public class SeasonMetadataService : MetadataService<Season, SeasonInfo>
{
- public SeasonMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public SeasonMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Season source, Season target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
- {
- ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- }
-
protected override async Task<ItemUpdateType> BeforeSave(Season item, bool isFullRefresh, ItemUpdateType currentUpdateType)
{
var updateType = await base.BeforeSave(item, isFullRefresh, currentUpdateType).ConfigureAwait(false);
@@ -46,5 +33,10 @@ namespace MediaBrowser.Providers.TV
return updateType;
}
+
+ protected override void MergeData(MetadataResult<Season> source, MetadataResult<Season> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ {
+ ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+ }
}
}
diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs
index eeff03703..0b2aaa5a0 100644
--- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs
+++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs
@@ -7,6 +7,7 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using MediaBrowser.Providers.Manager;
+using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@@ -16,76 +17,75 @@ namespace MediaBrowser.Providers.TV
public class SeriesMetadataService : MetadataService<Series, SeriesInfo>
{
private readonly ILocalizationManager _localization;
- private readonly ILibraryManager _libraryManager;
- public SeriesMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILocalizationManager localization, ILibraryManager libraryManager)
- : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public SeriesMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager, ILocalizationManager localization) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
_localization = localization;
- _libraryManager = libraryManager;
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Series source, Series target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override async Task AfterMetadataRefresh(Series item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
{
- ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+ await base.AfterMetadataRefresh(item, refreshOptions, cancellationToken).ConfigureAwait(false);
- if (replaceData || target.SeasonCount == 0)
+ if (refreshOptions.IsPostRecursiveRefresh)
{
- target.SeasonCount = source.SeasonCount;
+ var provider = new DummySeasonProvider(ServerConfigurationManager, Logger, _localization, LibraryManager);
+
+ try
+ {
+ await provider.Run(item, CancellationToken.None).ConfigureAwait(false);
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error in DummySeasonProvider", ex);
+ }
}
+ }
- if (replaceData || string.IsNullOrEmpty(target.AirTime))
+ protected override bool IsFullLocalMetadata(Series item)
+ {
+ if (string.IsNullOrWhiteSpace(item.Overview))
{
- target.AirTime = source.AirTime;
+ return false;
}
-
- if (replaceData || !target.Status.HasValue)
+ if (!item.ProductionYear.HasValue)
{
- target.Status = source.Status;
+ return false;
}
+ return base.IsFullLocalMetadata(item);
+ }
+
+ protected override void MergeData(MetadataResult<Series> source, MetadataResult<Series> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ {
+ ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+
+ var sourceItem = source.Item;
+ var targetItem = target.Item;
- if (replaceData || target.AirDays == null || target.AirDays.Count == 0)
+ if (replaceData || targetItem.SeasonCount == 0)
{
- target.AirDays = source.AirDays;
+ targetItem.SeasonCount = sourceItem.SeasonCount;
}
- if (mergeMetadataSettings)
+ if (replaceData || string.IsNullOrEmpty(targetItem.AirTime))
{
- target.DisplaySpecialsWithSeasons = source.DisplaySpecialsWithSeasons;
+ targetItem.AirTime = sourceItem.AirTime;
}
- }
- protected override async Task AfterMetadataRefresh(Series item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
- {
- await base.AfterMetadataRefresh(item, refreshOptions, cancellationToken).ConfigureAwait(false);
-
- if (refreshOptions.IsPostRecursiveRefresh)
+ if (replaceData || !targetItem.Status.HasValue)
{
- var provider = new DummySeasonProvider(ServerConfigurationManager, Logger, _localization, _libraryManager);
-
- await provider.Run(item, CancellationToken.None).ConfigureAwait(false);
+ targetItem.Status = sourceItem.Status;
}
- }
- protected override bool IsFullLocalMetadata(Series item)
- {
- if (string.IsNullOrWhiteSpace(item.Overview))
+ if (replaceData || targetItem.AirDays == null || targetItem.AirDays.Count == 0)
{
- return false;
+ targetItem.AirDays = sourceItem.AirDays;
}
- if (!item.ProductionYear.HasValue)
+
+ if (mergeMetadataSettings)
{
- return false;
+ targetItem.DisplaySpecialsWithSeasons = sourceItem.DisplaySpecialsWithSeasons;
}
- return base.IsFullLocalMetadata(item);
}
}
}
diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
index 68601b6b2..f36de88c9 100644
--- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
@@ -56,10 +56,12 @@ namespace MediaBrowser.Providers.TV
try
{
- var item = FetchEpisodeData(searchInfo, identity, seriesDataPath, searchInfo.SeriesProviderIds, cancellationToken);
+ var metadataResult = FetchEpisodeData(searchInfo, identity, seriesDataPath, searchInfo.SeriesProviderIds, cancellationToken);
- if (item != null)
+ if (metadataResult.HasMetadata)
{
+ var item = metadataResult.Item;
+
list.Add(new RemoteSearchResult
{
IndexNumber = item.IndexNumber,
@@ -103,9 +105,7 @@ namespace MediaBrowser.Providers.TV
try
{
- result.Item = FetchEpisodeData(searchInfo, identity, seriesDataPath, searchInfo.SeriesProviderIds,
- cancellationToken);
- result.HasMetadata = result.Item != null;
+ result = FetchEpisodeData(searchInfo, identity, seriesDataPath, searchInfo.SeriesProviderIds, cancellationToken);
}
catch (FileNotFoundException)
{
@@ -231,21 +231,23 @@ namespace MediaBrowser.Providers.TV
/// <param name="seriesProviderIds">The series provider ids.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{System.Boolean}.</returns>
- private Episode FetchEpisodeData(EpisodeInfo id, EpisodeIdentity identity, string seriesDataPath, Dictionary<string, string> seriesProviderIds, CancellationToken cancellationToken)
+ private MetadataResult<Episode> FetchEpisodeData(EpisodeInfo id, EpisodeIdentity identity, string seriesDataPath, Dictionary<string, string> seriesProviderIds, CancellationToken cancellationToken)
{
var episodeNumber = identity.IndexNumber;
var seasonOffset = TvdbSeriesProvider.GetSeriesOffset(seriesProviderIds) ?? 0;
var seasonNumber = identity.SeasonIndex + seasonOffset;
string file;
- var success = false;
var usingAbsoluteData = false;
- var episode = new Episode
+ var result = new MetadataResult<Episode>()
{
- IndexNumber = id.IndexNumber,
- ParentIndexNumber = id.ParentIndexNumber,
- IndexNumberEnd = id.IndexNumberEnd
+ Item = new Episode
+ {
+ IndexNumber = id.IndexNumber,
+ ParentIndexNumber = id.ParentIndexNumber,
+ IndexNumberEnd = id.IndexNumberEnd
+ }
};
try
@@ -253,9 +255,9 @@ namespace MediaBrowser.Providers.TV
if (seasonNumber != null)
{
file = Path.Combine(seriesDataPath, string.Format("episode-{0}-{1}.xml", seasonNumber.Value, episodeNumber));
- FetchMainEpisodeInfo(episode, file, cancellationToken);
+ FetchMainEpisodeInfo(result, file, cancellationToken);
- success = true;
+ result.HasMetadata = true;
}
}
catch (FileNotFoundException)
@@ -267,11 +269,12 @@ namespace MediaBrowser.Providers.TV
}
}
- if (!success)
+ if (!result.HasMetadata)
{
file = Path.Combine(seriesDataPath, string.Format("episode-abs-{0}.xml", episodeNumber));
- FetchMainEpisodeInfo(episode, file, cancellationToken);
+ FetchMainEpisodeInfo(result, file, cancellationToken);
+ result.HasMetadata = true;
usingAbsoluteData = true;
}
@@ -291,7 +294,7 @@ namespace MediaBrowser.Providers.TV
try
{
- FetchAdditionalPartInfo(episode, file, cancellationToken);
+ FetchAdditionalPartInfo(result, file, cancellationToken);
}
catch (FileNotFoundException)
{
@@ -305,20 +308,17 @@ namespace MediaBrowser.Providers.TV
episodeNumber++;
}
- return episode;
+ return result;
}
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
- private void FetchMainEpisodeInfo(Episode item, string xmlFile, CancellationToken cancellationToken)
+ private void FetchMainEpisodeInfo(MetadataResult<Episode> result, string xmlFile, CancellationToken cancellationToken)
{
+ var item = result.Item;
+
using (var streamReader = new StreamReader(xmlFile, Encoding.UTF8))
{
- if (!item.LockedFields.Contains(MetadataFields.Cast))
- {
- item.People.Clear();
- }
-
// Use XmlReader for best performance
using (var reader = XmlReader.Create(streamReader, new XmlReaderSettings
{
@@ -551,7 +551,7 @@ namespace MediaBrowser.Providers.TV
{
if (!item.LockedFields.Contains(MetadataFields.Cast))
{
- AddPeople(item, val, PersonType.Director);
+ AddPeople(result, val, PersonType.Director);
}
}
@@ -565,7 +565,7 @@ namespace MediaBrowser.Providers.TV
{
if (!item.LockedFields.Contains(MetadataFields.Cast))
{
- AddGuestStars(item, val);
+ AddGuestStars(result, val);
}
}
@@ -579,7 +579,7 @@ namespace MediaBrowser.Providers.TV
{
if (!item.LockedFields.Contains(MetadataFields.Cast))
{
- AddPeople(item, val, PersonType.Writer);
+ AddPeople(result, val, PersonType.Writer);
}
}
@@ -596,18 +596,19 @@ namespace MediaBrowser.Providers.TV
}
}
- private void AddPeople(BaseItem item, string val, string personType)
+ private void AddPeople<T>(MetadataResult<T> result, string val, string personType)
{
// Sometimes tvdb actors have leading spaces
foreach (var person in val.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries)
.Where(i => !string.IsNullOrWhiteSpace(i))
.Select(str => new PersonInfo { Type = personType, Name = str.Trim() }))
{
- item.AddPerson(person);
+ PeopleHelper.AddPerson(result.People, person);
}
}
- private void AddGuestStars(BaseItem item, string val)
+ private void AddGuestStars<T>(MetadataResult<T> result, string val)
+ where T : BaseItem
{
// Sometimes tvdb actors have leading spaces
//Regex Info:
@@ -631,13 +632,15 @@ namespace MediaBrowser.Providers.TV
{
if (!string.IsNullOrWhiteSpace(person.Name))
{
- item.AddPerson(person);
+ PeopleHelper.AddPerson(result.People, person);
}
}
}
- private void FetchAdditionalPartInfo(Episode item, string xmlFile, CancellationToken cancellationToken)
+ private void FetchAdditionalPartInfo(MetadataResult<Episode> result, string xmlFile, CancellationToken cancellationToken)
{
+ var item = result.Item;
+
using (var streamReader = new StreamReader(xmlFile, Encoding.UTF8))
{
// Use XmlReader for best performance
@@ -693,7 +696,7 @@ namespace MediaBrowser.Providers.TV
{
if (!item.LockedFields.Contains(MetadataFields.Cast))
{
- AddPeople(item, val, PersonType.Director);
+ AddPeople(result, val, PersonType.Director);
}
}
@@ -707,7 +710,7 @@ namespace MediaBrowser.Providers.TV
{
if (!item.LockedFields.Contains(MetadataFields.Cast))
{
- AddGuestStars(item, val);
+ AddGuestStars(result, val);
}
}
@@ -721,7 +724,7 @@ namespace MediaBrowser.Providers.TV
{
if (!item.LockedFields.Contains(MetadataFields.Cast))
{
- AddPeople(item, val, PersonType.Writer);
+ AddPeople(result, val, PersonType.Writer);
}
}
diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
index 8bdd914df..4c93bd57c 100644
--- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
@@ -121,7 +121,7 @@ namespace MediaBrowser.Providers.TV
result.Item = new Series();
result.HasMetadata = true;
- FetchSeriesData(result.Item, seriesId, cancellationToken);
+ FetchSeriesData(result, seriesId, cancellationToken);
await FindAnimeSeriesIndex(result.Item, itemId).ConfigureAwait(false);
}
@@ -159,12 +159,14 @@ namespace MediaBrowser.Providers.TV
/// <summary>
/// Fetches the series data.
/// </summary>
- /// <param name="series">The series.</param>
+ /// <param name="result">The result.</param>
/// <param name="seriesId">The series id.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{System.Boolean}.</returns>
- private void FetchSeriesData(Series series, string seriesId, CancellationToken cancellationToken)
+ private void FetchSeriesData(MetadataResult<Series> result, string seriesId, CancellationToken cancellationToken)
{
+ var series = result.Item;
+
series.SetProviderId(MetadataProviders.Tvdb, seriesId);
var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesId);
@@ -178,7 +180,7 @@ namespace MediaBrowser.Providers.TV
cancellationToken.ThrowIfCancellationRequested();
- FetchActors(series, actorsXmlPath);
+ FetchActors(result, actorsXmlPath);
}
/// <summary>
@@ -618,9 +620,9 @@ namespace MediaBrowser.Providers.TV
/// <summary>
/// Fetches the actors.
/// </summary>
- /// <param name="series">The series.</param>
+ /// <param name="result">The result.</param>
/// <param name="actorsXmlPath">The actors XML path.</param>
- private void FetchActors(Series series, string actorsXmlPath)
+ private void FetchActors(MetadataResult<Series> result, string actorsXmlPath)
{
var settings = new XmlReaderSettings
{
@@ -648,7 +650,7 @@ namespace MediaBrowser.Providers.TV
{
using (var subtree = reader.ReadSubtree())
{
- FetchDataFromActorNode(series, subtree);
+ FetchDataFromActorNode(result, subtree);
}
break;
}
@@ -665,9 +667,9 @@ namespace MediaBrowser.Providers.TV
/// <summary>
/// Fetches the data from actor node.
/// </summary>
- /// <param name="series">The series.</param>
+ /// <param name="result">The result.</param>
/// <param name="reader">The reader.</param>
- private void FetchDataFromActorNode(Series series, XmlReader reader)
+ private void FetchDataFromActorNode(MetadataResult<Series> result, XmlReader reader)
{
reader.MoveToContent();
@@ -719,7 +721,7 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrWhiteSpace(personInfo.Name))
{
- series.AddPerson(personInfo);
+ PeopleHelper.AddPerson(result.People, personInfo);
}
}
diff --git a/MediaBrowser.Providers/Users/UserMetadataService.cs b/MediaBrowser.Providers/Users/UserMetadataService.cs
index 4062c5b9f..84f2b0380 100644
--- a/MediaBrowser.Providers/Users/UserMetadataService.cs
+++ b/MediaBrowser.Providers/Users/UserMetadataService.cs
@@ -14,19 +14,11 @@ namespace MediaBrowser.Providers.Users
{
public class UserMetadataService : MetadataService<User, ItemLookupInfo>
{
- public UserMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public UserMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(User source, User target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<User> source, MetadataResult<User> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Videos/VideoMetadataService.cs b/MediaBrowser.Providers/Videos/VideoMetadataService.cs
index 4fed9cff4..68c36a84c 100644
--- a/MediaBrowser.Providers/Videos/VideoMetadataService.cs
+++ b/MediaBrowser.Providers/Videos/VideoMetadataService.cs
@@ -7,30 +7,15 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using MediaBrowser.Providers.Manager;
using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
namespace MediaBrowser.Providers.Videos
{
public class VideoMetadataService : MetadataService<Video, ItemLookupInfo>
{
- public VideoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public VideoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Video source, Video target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
- {
- ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
- }
-
public override int Order
{
get
@@ -39,5 +24,10 @@ namespace MediaBrowser.Providers.Videos
return 10;
}
}
+
+ protected override void MergeData(MetadataResult<Video> source, MetadataResult<Video> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ {
+ ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
+ }
}
}
diff --git a/MediaBrowser.Providers/Years/YearMetadataService.cs b/MediaBrowser.Providers/Years/YearMetadataService.cs
index 057434db0..3e6db7629 100644
--- a/MediaBrowser.Providers/Years/YearMetadataService.cs
+++ b/MediaBrowser.Providers/Years/YearMetadataService.cs
@@ -14,19 +14,11 @@ namespace MediaBrowser.Providers.Years
{
public class YearMetadataService : MetadataService<Year, ItemLookupInfo>
{
- public YearMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
+ public YearMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager)
{
}
- /// <summary>
- /// Merges the specified source.
- /// </summary>
- /// <param name="source">The source.</param>
- /// <param name="target">The target.</param>
- /// <param name="lockedFields">The locked fields.</param>
- /// <param name="replaceData">if set to <c>true</c> [replace data].</param>
- /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param>
- protected override void MergeData(Year source, Year target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Year> source, MetadataResult<Year> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}