aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-08-13 16:21:10 -0400
committerGitHub <noreply@github.com>2017-08-13 16:21:10 -0400
commitdc578f3742b474bd85d556299a6b2763f4d9acda (patch)
treecc4a8d1de140ece77160349e51a64857656ab373 /MediaBrowser.Providers
parentf6ed934a7e32bf10c3a141773d713bf3b19e784f (diff)
parent7f200f057d33e3ef52b1b1b1bf1767577295317e (diff)
Merge pull request #2815 from MediaBrowser/beta
Beta
Diffstat (limited to 'MediaBrowser.Providers')
-rw-r--r--MediaBrowser.Providers/Books/AudioBookMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Books/AudioPodcastMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Books/BookMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs9
-rw-r--r--MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs12
-rw-r--r--MediaBrowser.Providers/Channels/ChannelMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Chapters/ChapterManager.cs4
-rw-r--r--MediaBrowser.Providers/Folders/CollectionFolderMetadataService.cs4
-rw-r--r--MediaBrowser.Providers/Folders/FolderMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Folders/UserViewMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Games/GameMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Games/GameSystemMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Genres/GenreMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/ImagesByName/ImageUtils.cs2
-rw-r--r--MediaBrowser.Providers/LiveTv/AudioRecordingService.cs2
-rw-r--r--MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/LiveTv/VideoRecordingService.cs2
-rw-r--r--MediaBrowser.Providers/Manager/ImageSaver.cs29
-rw-r--r--MediaBrowser.Providers/Manager/ItemImageProvider.cs38
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs19
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs28
-rw-r--r--MediaBrowser.Providers/Manager/ProviderUtils.cs43
-rw-r--r--MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs13
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs12
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs5
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs101
-rw-r--r--MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs2
-rw-r--r--MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs3
-rw-r--r--MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs146
-rw-r--r--MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs6
-rw-r--r--MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs19
-rw-r--r--MediaBrowser.Providers/Movies/MovieDbImageProvider.cs12
-rw-r--r--MediaBrowser.Providers/Movies/MovieDbProvider.cs3
-rw-r--r--MediaBrowser.Providers/Movies/MovieMetadataService.cs4
-rw-r--r--MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs6
-rw-r--r--MediaBrowser.Providers/Music/AlbumMetadataService.cs10
-rw-r--r--MediaBrowser.Providers/Music/ArtistMetadataService.cs4
-rw-r--r--MediaBrowser.Providers/Music/AudioDbAlbumImageProvider.cs6
-rw-r--r--MediaBrowser.Providers/Music/AudioDbAlbumProvider.cs2
-rw-r--r--MediaBrowser.Providers/Music/AudioDbArtistImageProvider.cs6
-rw-r--r--MediaBrowser.Providers/Music/AudioMetadataService.cs3
-rw-r--r--MediaBrowser.Providers/Music/FanArtAlbumProvider.cs6
-rw-r--r--MediaBrowser.Providers/Music/FanArtArtistProvider.cs6
-rw-r--r--MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs2
-rw-r--r--MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs6
-rw-r--r--MediaBrowser.Providers/Music/MusicVideoMetadataService.cs3
-rw-r--r--MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Omdb/OmdbImageProvider.cs6
-rw-r--r--MediaBrowser.Providers/People/MovieDbPersonImageProvider.cs9
-rw-r--r--MediaBrowser.Providers/People/MovieDbPersonProvider.cs2
-rw-r--r--MediaBrowser.Providers/People/PersonMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/People/TvdbPersonImageProvider.cs6
-rw-r--r--MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Photos/PhotoMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Studios/StudioMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Studios/StudiosImageProvider.cs10
-rw-r--r--MediaBrowser.Providers/Subtitles/SubtitleManager.cs3
-rw-r--r--MediaBrowser.Providers/TV/EpisodeMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/TV/FanArt/FanArtSeasonProvider.cs6
-rw-r--r--MediaBrowser.Providers/TV/FanArt/FanartSeriesProvider.cs6
-rw-r--r--MediaBrowser.Providers/TV/MissingEpisodeProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/Omdb/OmdbEpisodeProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/SeasonMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/TV/SeriesMetadataService.cs4
-rw-r--r--MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs9
-rw-r--r--MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeProvider.cs4
-rw-r--r--MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs12
-rw-r--r--MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs5
-rw-r--r--MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs6
-rw-r--r--MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs7
-rw-r--r--MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs9
-rw-r--r--MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs9
-rw-r--r--MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs41
-rw-r--r--MediaBrowser.Providers/TV/TvExternalIds.cs23
-rw-r--r--MediaBrowser.Providers/Users/UserMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Videos/VideoMetadataService.cs2
-rw-r--r--MediaBrowser.Providers/Years/YearMetadataService.cs2
80 files changed, 334 insertions, 471 deletions
diff --git a/MediaBrowser.Providers/Books/AudioBookMetadataService.cs b/MediaBrowser.Providers/Books/AudioBookMetadataService.cs
index 7cce851053..b9e265d22e 100644
--- a/MediaBrowser.Providers/Books/AudioBookMetadataService.cs
+++ b/MediaBrowser.Providers/Books/AudioBookMetadataService.cs
@@ -16,7 +16,7 @@ namespace MediaBrowser.Providers.Books
{
public class AudioBookMetadataService : MetadataService<AudioBook, SongInfo>
{
- protected override void MergeData(MetadataResult<AudioBook> source, MetadataResult<AudioBook> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<AudioBook> source, MetadataResult<AudioBook> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Books/AudioPodcastMetadataService.cs b/MediaBrowser.Providers/Books/AudioPodcastMetadataService.cs
index 219f957997..2ea0a7ee96 100644
--- a/MediaBrowser.Providers/Books/AudioPodcastMetadataService.cs
+++ b/MediaBrowser.Providers/Books/AudioPodcastMetadataService.cs
@@ -16,7 +16,7 @@ namespace MediaBrowser.Providers.Books
{
public class AudioPodcastMetadataService : MetadataService<AudioPodcast, SongInfo>
{
- protected override void MergeData(MetadataResult<AudioPodcast> source, MetadataResult<AudioPodcast> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<AudioPodcast> source, MetadataResult<AudioPodcast> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Books/BookMetadataService.cs b/MediaBrowser.Providers/Books/BookMetadataService.cs
index ae7e734ccb..68b96486af 100644
--- a/MediaBrowser.Providers/Books/BookMetadataService.cs
+++ b/MediaBrowser.Providers/Books/BookMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Books
{
public class BookMetadataService : MetadataService<Book, BookInfo>
{
- protected override void MergeData(MetadataResult<Book> source, MetadataResult<Book> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Book> source, MetadataResult<Book> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
index b391ce4d3c..81cd416050 100644
--- a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
+++ b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
@@ -6,12 +6,9 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using MediaBrowser.Providers.Manager;
-using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
-
-using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.BoxSets
{
@@ -35,7 +32,7 @@ namespace MediaBrowser.Providers.BoxSets
return updateType;
}
- protected override void MergeData(MetadataResult<BoxSet> source, MetadataResult<BoxSet> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<BoxSet> source, MetadataResult<BoxSet> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
@@ -48,7 +45,7 @@ namespace MediaBrowser.Providers.BoxSets
var linkedChildren = sourceItem.LinkedChildren.ToList();
linkedChildren.AddRange(sourceItem.LinkedChildren.Where(i => i.Type == LinkedChildType.Shortcut));
- targetItem.LinkedChildren = linkedChildren;
+ targetItem.LinkedChildren = linkedChildren.ToArray(linkedChildren.Count);
targetItem.Shares = sourceItem.Shares;
}
}
diff --git a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs
index 852feab37c..7d1f2779b7 100644
--- a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs
+++ b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetImageProvider.cs
@@ -33,12 +33,12 @@ namespace MediaBrowser.Providers.BoxSets
get { return "TheMovieDb"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is BoxSet;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -47,7 +47,7 @@ namespace MediaBrowser.Providers.BoxSets
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var tmdbId = item.GetProviderId(MetadataProviders.Tmdb);
@@ -123,8 +123,7 @@ namespace MediaBrowser.Providers.BoxSets
return 0;
})
.ThenByDescending(i => i.CommunityRating ?? 0)
- .ThenByDescending(i => i.VoteCount ?? 0)
- .ToList();
+ .ThenByDescending(i => i.VoteCount ?? 0);
}
/// <summary>
@@ -145,8 +144,7 @@ namespace MediaBrowser.Providers.BoxSets
private IEnumerable<MovieDbBoxSetProvider.Backdrop> GetBackdrops(MovieDbBoxSetProvider.Images images)
{
var eligibleBackdrops = images.backdrops == null ? new List<MovieDbBoxSetProvider.Backdrop>() :
- images.backdrops
- .ToList();
+ images.backdrops;
return eligibleBackdrops.OrderByDescending(i => i.vote_average)
.ThenByDescending(i => i.vote_count);
diff --git a/MediaBrowser.Providers/Channels/ChannelMetadataService.cs b/MediaBrowser.Providers/Channels/ChannelMetadataService.cs
index 8a3da5bf4a..b22db559eb 100644
--- a/MediaBrowser.Providers/Channels/ChannelMetadataService.cs
+++ b/MediaBrowser.Providers/Channels/ChannelMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Channels
{
public class ChannelMetadataService : MetadataService<Channel, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<Channel> source, MetadataResult<Channel> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Channel> source, MetadataResult<Channel> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Chapters/ChapterManager.cs b/MediaBrowser.Providers/Chapters/ChapterManager.cs
index 5fea2c3cdb..3973d3de7b 100644
--- a/MediaBrowser.Providers/Chapters/ChapterManager.cs
+++ b/MediaBrowser.Providers/Chapters/ChapterManager.cs
@@ -39,9 +39,9 @@ namespace MediaBrowser.Providers.Chapters
return _itemRepo.GetChapters(new Guid(itemId));
}
- public Task SaveChapters(string itemId, List<ChapterInfo> chapters, CancellationToken cancellationToken)
+ public Task SaveChapters(string itemId, List<ChapterInfo> chapters)
{
- return _itemRepo.SaveChapters(new Guid(itemId), chapters, cancellationToken);
+ return _itemRepo.SaveChapters(new Guid(itemId), chapters);
}
}
}
diff --git a/MediaBrowser.Providers/Folders/CollectionFolderMetadataService.cs b/MediaBrowser.Providers/Folders/CollectionFolderMetadataService.cs
index dc0fda72ef..1dab086715 100644
--- a/MediaBrowser.Providers/Folders/CollectionFolderMetadataService.cs
+++ b/MediaBrowser.Providers/Folders/CollectionFolderMetadataService.cs
@@ -15,7 +15,7 @@ namespace MediaBrowser.Providers.Folders
{
public class CollectionFolderMetadataService : MetadataService<CollectionFolder, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<CollectionFolder> source, MetadataResult<CollectionFolder> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<CollectionFolder> source, MetadataResult<CollectionFolder> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
@@ -27,7 +27,7 @@ namespace MediaBrowser.Providers.Folders
public class ManualCollectionsFolderMetadataService : MetadataService<ManualCollectionsFolder, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<ManualCollectionsFolder> source, MetadataResult<ManualCollectionsFolder> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<ManualCollectionsFolder> source, MetadataResult<ManualCollectionsFolder> target, 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 ff8d87e2bc..687dac919f 100644
--- a/MediaBrowser.Providers/Folders/FolderMetadataService.cs
+++ b/MediaBrowser.Providers/Folders/FolderMetadataService.cs
@@ -23,7 +23,7 @@ namespace MediaBrowser.Providers.Folders
}
}
- protected override void MergeData(MetadataResult<Folder> source, MetadataResult<Folder> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Folder> source, MetadataResult<Folder> target, 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 06b62a98be..951794961e 100644
--- a/MediaBrowser.Providers/Folders/UserViewMetadataService.cs
+++ b/MediaBrowser.Providers/Folders/UserViewMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Folders
{
public class UserViewMetadataService : MetadataService<UserView, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<UserView> source, MetadataResult<UserView> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<UserView> source, MetadataResult<UserView> target, 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 13d40b4d90..edde0f5e3f 100644
--- a/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs
+++ b/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.GameGenres
{
public class GameGenreMetadataService : MetadataService<GameGenre, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<GameGenre> source, MetadataResult<GameGenre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<GameGenre> source, MetadataResult<GameGenre> target, 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 10f74629fb..67becbf585 100644
--- a/MediaBrowser.Providers/Games/GameMetadataService.cs
+++ b/MediaBrowser.Providers/Games/GameMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Games
{
public class GameMetadataService : MetadataService<Game, GameInfo>
{
- protected override void MergeData(MetadataResult<Game> source, MetadataResult<Game> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Game> source, MetadataResult<Game> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Games/GameSystemMetadataService.cs b/MediaBrowser.Providers/Games/GameSystemMetadataService.cs
index ca33563fad..474dd2fcf4 100644
--- a/MediaBrowser.Providers/Games/GameSystemMetadataService.cs
+++ b/MediaBrowser.Providers/Games/GameSystemMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Games
{
public class GameSystemMetadataService : MetadataService<GameSystem, GameSystemInfo>
{
- protected override void MergeData(MetadataResult<GameSystem> source, MetadataResult<GameSystem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<GameSystem> source, MetadataResult<GameSystem> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Genres/GenreMetadataService.cs b/MediaBrowser.Providers/Genres/GenreMetadataService.cs
index a695fb3725..88fba18547 100644
--- a/MediaBrowser.Providers/Genres/GenreMetadataService.cs
+++ b/MediaBrowser.Providers/Genres/GenreMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Genres
{
public class GenreMetadataService : MetadataService<Genre, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<Genre> source, MetadataResult<Genre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Genre> source, MetadataResult<Genre> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
index 499fd2e0b3..74c01fb5c6 100644
--- a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
+++ b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
@@ -53,7 +53,7 @@ namespace MediaBrowser.Providers.ImagesByName
return file;
}
- public static string FindMatch(IHasImages item, IEnumerable<string> images)
+ public static string FindMatch(IHasMetadata item, IEnumerable<string> images)
{
var name = GetComparableName(item.Name);
diff --git a/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs b/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs
index f4749c37d5..509c911889 100644
--- a/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs
+++ b/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.LiveTv
{
public class AudioRecordingService : MetadataService<LiveTvAudioRecording, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<LiveTvAudioRecording> source, MetadataResult<LiveTvAudioRecording> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<LiveTvAudioRecording> source, MetadataResult<LiveTvAudioRecording> target, 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 8012021abc..31e3ecaf4e 100644
--- a/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs
+++ b/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.LiveTv
{
public class ChannelMetadataService : MetadataService<LiveTvChannel, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<LiveTvChannel> source, MetadataResult<LiveTvChannel> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<LiveTvChannel> source, MetadataResult<LiveTvChannel> target, 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 f203aa8c6a..28a12540bb 100644
--- a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs
+++ b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.LiveTv
{
public class ProgramMetadataService : MetadataService<LiveTvProgram, LiveTvProgramLookupInfo>
{
- protected override void MergeData(MetadataResult<LiveTvProgram> source, MetadataResult<LiveTvProgram> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<LiveTvProgram> source, MetadataResult<LiveTvProgram> target, 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 528e9a5ec9..8bfa916558 100644
--- a/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs
+++ b/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.LiveTv
{
public class VideoRecordingService : MetadataService<LiveTvVideoRecording, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<LiveTvVideoRecording> source, MetadataResult<LiveTvVideoRecording> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<LiveTvVideoRecording> source, MetadataResult<LiveTvVideoRecording> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs
index dc6c7e43fc..7fdbdbcc7a 100644
--- a/MediaBrowser.Providers/Manager/ImageSaver.cs
+++ b/MediaBrowser.Providers/Manager/ImageSaver.cs
@@ -17,6 +17,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.Manager
{
@@ -67,12 +68,12 @@ namespace MediaBrowser.Providers.Manager
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException">mimeType</exception>
- public Task SaveImage(IHasImages item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken)
+ public Task SaveImage(IHasMetadata item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken)
{
return SaveImage(item, source, mimeType, type, imageIndex, null, cancellationToken);
}
- public async Task SaveImage(IHasImages item, Stream source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken)
+ public async Task SaveImage(IHasMetadata item, Stream source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken)
{
if (string.IsNullOrEmpty(mimeType))
{
@@ -274,7 +275,7 @@ namespace MediaBrowser.Providers.Manager
/// <param name="mimeType">Type of the MIME.</param>
/// <param name="saveLocally">if set to <c>true</c> [save locally].</param>
/// <returns>IEnumerable{System.String}.</returns>
- private string[] GetSavePaths(IHasImages item, ImageType type, int? imageIndex, string mimeType, bool saveLocally)
+ private string[] GetSavePaths(IHasMetadata item, ImageType type, int? imageIndex, string mimeType, bool saveLocally)
{
if (!saveLocally || (_config.Configuration.ImageSavingConvention == ImageSavingConvention.Legacy))
{
@@ -296,7 +297,7 @@ namespace MediaBrowser.Providers.Manager
/// or
/// imageIndex
/// </exception>
- private ItemImageInfo GetCurrentImage(IHasImages item, ImageType type, int imageIndex)
+ private ItemImageInfo GetCurrentImage(IHasMetadata item, ImageType type, int imageIndex)
{
return item.GetImageInfo(type, imageIndex);
}
@@ -311,7 +312,7 @@ namespace MediaBrowser.Providers.Manager
/// <exception cref="System.ArgumentNullException">imageIndex
/// or
/// imageIndex</exception>
- private void SetImagePath(IHasImages item, ImageType type, int? imageIndex, string path)
+ private void SetImagePath(IHasMetadata item, ImageType type, int? imageIndex, string path)
{
item.SetImagePath(type, imageIndex ?? 0, _fileSystem.GetFileInfo(path));
}
@@ -330,7 +331,7 @@ namespace MediaBrowser.Providers.Manager
/// or
/// imageIndex
/// </exception>
- private string GetStandardSavePath(IHasImages item, ImageType type, int? imageIndex, string mimeType, bool saveLocally)
+ private string GetStandardSavePath(IHasMetadata item, ImageType type, int? imageIndex, string mimeType, bool saveLocally)
{
var season = item as Season;
var extension = MimeTypes.ToExtension(mimeType);
@@ -355,7 +356,7 @@ namespace MediaBrowser.Providers.Manager
return Path.Combine(seriesFolder, imageFilename);
}
- if (item.DetectIsInMixedFolder())
+ if (item.IsInMixedFolder)
{
return GetSavePathForItemInMixedFolder(item, type, "landscape", extension);
}
@@ -432,7 +433,7 @@ namespace MediaBrowser.Providers.Manager
path = Path.Combine(_fileSystem.GetDirectoryName(item.Path), "metadata", filename + extension);
}
- else if (item.DetectIsInMixedFolder())
+ else if (item.IsInMixedFolder)
{
path = GetSavePathForItemInMixedFolder(item, type, filename, extension);
}
@@ -483,7 +484,7 @@ namespace MediaBrowser.Providers.Manager
/// <param name="mimeType">Type of the MIME.</param>
/// <returns>IEnumerable{System.String}.</returns>
/// <exception cref="System.ArgumentNullException">imageIndex</exception>
- private string[] GetCompatibleSavePaths(IHasImages item, ImageType type, int? imageIndex, string mimeType)
+ private string[] GetCompatibleSavePaths(IHasMetadata item, ImageType type, int? imageIndex, string mimeType)
{
var season = item as Season;
@@ -499,7 +500,7 @@ namespace MediaBrowser.Providers.Manager
if (imageIndex.Value == 0)
{
- if (item.DetectIsInMixedFolder())
+ if (item.IsInMixedFolder)
{
return new[] { GetSavePathForItemInMixedFolder(item, type, "fanart", extension) };
}
@@ -525,7 +526,7 @@ namespace MediaBrowser.Providers.Manager
var outputIndex = imageIndex.Value;
- if (item.DetectIsInMixedFolder())
+ if (item.IsInMixedFolder)
{
return new[] { GetSavePathForItemInMixedFolder(item, type, "fanart" + outputIndex.ToString(UsCulture), extension) };
}
@@ -541,7 +542,7 @@ namespace MediaBrowser.Providers.Manager
{
list.Add(Path.Combine(item.ContainingFolderPath, "extrathumbs", "thumb" + outputIndex.ToString(UsCulture) + extension));
}
- return list.ToArray();
+ return list.ToArray(list.Count);
}
if (type == ImageType.Primary)
@@ -568,7 +569,7 @@ namespace MediaBrowser.Providers.Manager
return new[] { Path.Combine(seasonFolder, imageFilename) };
}
- if (item.DetectIsInMixedFolder() || item is MusicVideo)
+ if (item.IsInMixedFolder || item is MusicVideo)
{
return new[] { GetSavePathForItemInMixedFolder(item, type, string.Empty, extension) };
}
@@ -603,7 +604,7 @@ namespace MediaBrowser.Providers.Manager
/// <param name="imageFilename">The image filename.</param>
/// <param name="extension">The extension.</param>
/// <returns>System.String.</returns>
- private string GetSavePathForItemInMixedFolder(IHasImages item, ImageType type, string imageFilename, string extension)
+ private string GetSavePathForItemInMixedFolder(IHasMetadata item, ImageType type, string imageFilename, string extension)
{
if (type == ImageType.Primary)
{
diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs
index 39715a4497..e62ce0225d 100644
--- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs
+++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs
@@ -23,6 +23,7 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.MediaInfo;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.Manager
{
@@ -41,7 +42,7 @@ namespace MediaBrowser.Providers.Manager
_fileSystem = fileSystem;
}
- public bool ValidateImages(IHasImages item, IEnumerable<IImageProvider> providers, IDirectoryService directoryService)
+ public bool ValidateImages(IHasMetadata item, IEnumerable<IImageProvider> providers, IDirectoryService directoryService)
{
var hasChanges = false;
@@ -60,7 +61,7 @@ namespace MediaBrowser.Providers.Manager
return hasChanges;
}
- public async Task<RefreshResult> RefreshImages(IHasImages item, LibraryOptions libraryOptions, IEnumerable<IImageProvider> imageProviders, ImageRefreshOptions refreshOptions, MetadataOptions savedOptions, CancellationToken cancellationToken)
+ public async Task<RefreshResult> RefreshImages(IHasMetadata item, LibraryOptions libraryOptions, List<IImageProvider> providers, ImageRefreshOptions refreshOptions, MetadataOptions savedOptions, CancellationToken cancellationToken)
{
if (refreshOptions.IsReplacingImage(ImageType.Backdrop))
{
@@ -73,8 +74,6 @@ namespace MediaBrowser.Providers.Manager
var result = new RefreshResult { UpdateType = ItemUpdateType.None };
- var providers = imageProviders.ToList();
-
var providerIds = new List<Guid>();
// In order to avoid duplicates, only download these if there are none already
@@ -118,7 +117,7 @@ namespace MediaBrowser.Providers.Manager
/// <param name="result">The result.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- private async Task RefreshFromProvider(IHasImages item,
+ private async Task RefreshFromProvider(IHasMetadata item,
IDynamicImageProvider provider,
ImageRefreshOptions refreshOptions,
MetadataOptions savedOptions,
@@ -203,7 +202,7 @@ namespace MediaBrowser.Providers.Manager
ImageType.Thumb
};
- private bool HasImage(IHasImages item, ImageType type)
+ private bool HasImage(IHasMetadata item, ImageType type)
{
var image = item.GetImageInfo(type, 0);
@@ -220,7 +219,7 @@ namespace MediaBrowser.Providers.Manager
/// <param name="backdropLimit">The backdrop limit.</param>
/// <param name="screenshotLimit">The screenshot limit.</param>
/// <returns><c>true</c> if the specified item contains images; otherwise, <c>false</c>.</returns>
- private bool ContainsImages(IHasImages item, List<ImageType> images, MetadataOptions savedOptions, int backdropLimit, int screenshotLimit)
+ private bool ContainsImages(IHasMetadata item, List<ImageType> images, MetadataOptions savedOptions, int backdropLimit, int screenshotLimit)
{
if (_singularImages.Any(i => images.Contains(i) && !HasImage(item, i) && savedOptions.GetLimit(i) > 0))
{
@@ -253,7 +252,7 @@ namespace MediaBrowser.Providers.Manager
/// <param name="result">The result.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- private async Task RefreshFromProvider(IHasImages item, LibraryOptions libraryOptions,
+ private async Task RefreshFromProvider(IHasMetadata item, LibraryOptions libraryOptions,
IRemoteImageProvider provider,
ImageRefreshOptions refreshOptions,
MetadataOptions savedOptions,
@@ -333,7 +332,7 @@ namespace MediaBrowser.Providers.Manager
}
}
- private bool IsEnabled(MetadataOptions options, ImageType type, IHasImages item)
+ private bool IsEnabled(MetadataOptions options, ImageType type, IHasMetadata item)
{
if (type == ImageType.Backdrop)
{
@@ -360,7 +359,7 @@ namespace MediaBrowser.Providers.Manager
return options.IsEnabled(type);
}
- private void ClearImages(IHasImages item, ImageType type)
+ private void ClearImages(IHasMetadata item, ImageType type)
{
var deleted = false;
var deletedImages = new List<ItemImageInfo>();
@@ -384,10 +383,7 @@ namespace MediaBrowser.Providers.Manager
}
}
- foreach (var image in deletedImages)
- {
- item.RemoveImage(image);
- }
+ item.RemoveImages(deletedImages);
if (deleted)
{
@@ -395,7 +391,7 @@ namespace MediaBrowser.Providers.Manager
}
}
- public bool MergeImages(IHasImages item, List<LocalImageInfo> images)
+ public bool MergeImages(IHasMetadata item, List<LocalImageInfo> images)
{
var changed = false;
@@ -453,7 +449,7 @@ namespace MediaBrowser.Providers.Manager
return changed;
}
- private bool UpdateMultiImages(IHasImages item, List<LocalImageInfo> images, ImageType type)
+ private bool UpdateMultiImages(IHasMetadata item, List<LocalImageInfo> images, ImageType type)
{
var changed = false;
@@ -471,7 +467,7 @@ namespace MediaBrowser.Providers.Manager
return changed;
}
- private async Task<bool> DownloadImage(IHasImages item, LibraryOptions libraryOptions,
+ private async Task<bool> DownloadImage(IHasMetadata item, LibraryOptions libraryOptions,
IRemoteImageProvider provider,
RefreshResult result,
IEnumerable<RemoteImageInfo> images,
@@ -517,7 +513,7 @@ namespace MediaBrowser.Providers.Manager
return false;
}
- private bool EnableImageStub(IHasImages item, ImageType type, LibraryOptions libraryOptions)
+ private bool EnableImageStub(IHasMetadata item, ImageType type, LibraryOptions libraryOptions)
{
if (item is LiveTvProgram)
{
@@ -557,14 +553,14 @@ namespace MediaBrowser.Providers.Manager
}
}
- private void SaveImageStub(IHasImages item, ImageType imageType, IEnumerable<string> urls)
+ private void SaveImageStub(IHasMetadata item, ImageType imageType, IEnumerable<string> urls)
{
var newIndex = item.AllowsMultipleImages(imageType) ? item.GetImages(imageType).Count() : 0;
SaveImageStub(item, imageType, urls, newIndex);
}
- private void SaveImageStub(IHasImages item, ImageType imageType, IEnumerable<string> urls, int newIndex)
+ private void SaveImageStub(IHasMetadata item, ImageType imageType, IEnumerable<string> urls, int newIndex)
{
var path = string.Join("|", urls.Take(1).ToArray());
@@ -576,7 +572,7 @@ namespace MediaBrowser.Providers.Manager
}, newIndex);
}
- private async Task DownloadBackdrops(IHasImages item, LibraryOptions libraryOptions, ImageType imageType, int limit, IRemoteImageProvider provider, RefreshResult result, IEnumerable<RemoteImageInfo> images, int minWidth, CancellationToken cancellationToken)
+ private async Task DownloadBackdrops(IHasMetadata item, LibraryOptions libraryOptions, ImageType imageType, int limit, IRemoteImageProvider provider, RefreshResult result, IEnumerable<RemoteImageInfo> images, int minWidth, CancellationToken cancellationToken)
{
foreach (var image in images.Where(i => i.Type == imageType))
{
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index edca5e7d68..5d531c95c6 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -201,7 +201,7 @@ namespace MediaBrowser.Providers.Manager
{
var baseItem = result.Item as BaseItem;
- await LibraryManager.UpdatePeople(baseItem, result.People.ToList());
+ await LibraryManager.UpdatePeople(baseItem, result.People);
await SavePeopleMetadata(result.People, libraryOptions, cancellationToken).ConfigureAwait(false);
}
await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false);
@@ -302,13 +302,6 @@ namespace MediaBrowser.Providers.Manager
updateType |= ItemUpdateType.MetadataImport;
}
- var inheritedTags = item.GetInheritedTags();
- if (!inheritedTags.SequenceEqual(item.InheritedTags, StringComparer.Ordinal))
- {
- item.InheritedTags = inheritedTags;
- updateType |= ItemUpdateType.MetadataImport;
- }
-
return updateType;
}
@@ -321,7 +314,7 @@ namespace MediaBrowser.Providers.Manager
var folder = item as Folder;
if (folder != null && folder.SupportsCumulativeRunTimeTicks)
{
- var items = folder.GetRecursiveChildren(i => !i.IsFolder).ToList();
+ var items = folder.GetRecursiveChildren(i => !i.IsFolder);
var ticks = items.Select(i => i.RunTimeTicks ?? 0).Sum();
if (!folder.RunTimeTicks.HasValue || folder.RunTimeTicks.Value != ticks)
@@ -526,7 +519,7 @@ namespace MediaBrowser.Providers.Manager
userDataList.AddRange(localItem.UserDataList);
}
- MergeData(localItem, temp, new List<MetadataFields>(), !options.ReplaceAllMetadata, true);
+ MergeData(localItem, temp, new MetadataFields[]{}, !options.ReplaceAllMetadata, true);
refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport;
// Only one local provider allowed per item
@@ -574,7 +567,7 @@ namespace MediaBrowser.Providers.Manager
else
{
// TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields
- MergeData(metadata, temp, new List<MetadataFields>(), false, false);
+ MergeData(metadata, temp, new MetadataFields[]{}, false, false);
MergeData(temp, metadata, item.LockedFields, true, false);
}
}
@@ -711,7 +704,7 @@ namespace MediaBrowser.Providers.Manager
foreach (var result in results)
{
- MergeData(result, temp, new List<MetadataFields>(), false, false);
+ MergeData(result, temp, new MetadataFields[]{}, false, false);
}
return refreshResult;
@@ -743,7 +736,7 @@ namespace MediaBrowser.Providers.Manager
protected abstract void MergeData(MetadataResult<TItemType> source,
MetadataResult<TItemType> target,
- List<MetadataFields> lockedFields,
+ MetadataFields[] lockedFields,
bool replaceData,
bool mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index ce995fe647..139bd6d588 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -128,7 +128,7 @@ namespace MediaBrowser.Providers.Manager
return Task.FromResult(ItemUpdateType.None);
}
- public async Task SaveImage(IHasImages item, string url, ImageType type, int? imageIndex, CancellationToken cancellationToken)
+ public async Task SaveImage(IHasMetadata item, string url, ImageType type, int? imageIndex, CancellationToken cancellationToken)
{
var response = await _httpClient.GetResponse(new HttpRequestOptions
{
@@ -142,12 +142,12 @@ namespace MediaBrowser.Providers.Manager
.ConfigureAwait(false);
}
- public Task SaveImage(IHasImages item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken)
+ public Task SaveImage(IHasMetadata item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken)
{
return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger, _memoryStreamProvider).SaveImage(item, source, mimeType, type, imageIndex, cancellationToken);
}
- public Task SaveImage(IHasImages item, string source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken)
+ public Task SaveImage(IHasMetadata item, string source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken)
{
if (string.IsNullOrWhiteSpace(source))
{
@@ -159,7 +159,7 @@ namespace MediaBrowser.Providers.Manager
return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger, _memoryStreamProvider).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken);
}
- public async Task<IEnumerable<RemoteImageInfo>> GetAvailableRemoteImages(IHasImages item, RemoteImageQuery query, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetAvailableRemoteImages(IHasMetadata item, RemoteImageQuery query, CancellationToken cancellationToken)
{
var providers = GetRemoteImageProviders(item, query.IncludeDisabledProviders);
@@ -182,9 +182,7 @@ namespace MediaBrowser.Providers.Manager
var results = await Task.WhenAll(tasks).ConfigureAwait(false);
- var images = results.SelectMany(i => i.ToList());
-
- return images;
+ return results.SelectMany(i => i.ToList());
}
/// <summary>
@@ -196,7 +194,7 @@ namespace MediaBrowser.Providers.Manager
/// <param name="preferredLanguages">The preferred languages.</param>
/// <param name="type">The type.</param>
/// <returns>Task{IEnumerable{RemoteImageInfo}}.</returns>
- private async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken, IRemoteImageProvider provider, List<string> preferredLanguages, ImageType? type = null)
+ private async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken, IRemoteImageProvider provider, List<string> preferredLanguages, ImageType? type = null)
{
try
{
@@ -232,7 +230,7 @@ namespace MediaBrowser.Providers.Manager
/// </summary>
/// <param name="item">The item.</param>
/// <returns>IEnumerable{IImageProvider}.</returns>
- public IEnumerable<ImageProviderInfo> GetRemoteImageProviderInfo(IHasImages item)
+ public IEnumerable<ImageProviderInfo> GetRemoteImageProviderInfo(IHasMetadata item)
{
return GetRemoteImageProviders(item, true).Select(i => new ImageProviderInfo
{
@@ -241,12 +239,12 @@ namespace MediaBrowser.Providers.Manager
});
}
- public IEnumerable<IImageProvider> GetImageProviders(IHasImages item, ImageRefreshOptions refreshOptions)
+ public IEnumerable<IImageProvider> GetImageProviders(IHasMetadata item, ImageRefreshOptions refreshOptions)
{
return GetImageProviders(item, GetMetadataOptions(item), refreshOptions, false);
}
- private IEnumerable<IImageProvider> GetImageProviders(IHasImages item, MetadataOptions options, ImageRefreshOptions refreshOptions, bool includeDisabled)
+ private IEnumerable<IImageProvider> GetImageProviders(IHasMetadata item, MetadataOptions options, ImageRefreshOptions refreshOptions, bool includeDisabled)
{
// Avoid implicitly captured closure
var currentOptions = options;
@@ -291,7 +289,7 @@ namespace MediaBrowser.Providers.Manager
.ThenBy(GetDefaultOrder);
}
- private IEnumerable<IRemoteImageProvider> GetRemoteImageProviders(IHasImages item, bool includeDisabled)
+ private IEnumerable<IRemoteImageProvider> GetRemoteImageProviders(IHasMetadata item, bool includeDisabled)
{
var options = GetMetadataOptions(item);
@@ -339,7 +337,7 @@ namespace MediaBrowser.Providers.Manager
return true;
}
- private bool CanRefresh(IImageProvider provider, IHasImages item, MetadataOptions options, ImageRefreshOptions refreshOptions, bool includeDisabled)
+ private bool CanRefresh(IImageProvider provider, IHasMetadata item, MetadataOptions options, ImageRefreshOptions refreshOptions, bool includeDisabled)
{
if (!includeDisabled)
{
@@ -530,7 +528,7 @@ namespace MediaBrowser.Providers.Manager
}
private void AddImagePlugins<T>(List<MetadataPlugin> list, T item, List<IImageProvider> imageProviders)
- where T : IHasImages
+ where T : IHasMetadata
{
// Locals
@@ -550,7 +548,7 @@ namespace MediaBrowser.Providers.Manager
}));
}
- public MetadataOptions GetMetadataOptions(IHasImages item)
+ public MetadataOptions GetMetadataOptions(IHasMetadata item)
{
var type = item.GetType().Name;
diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs
index 042b7241b7..af91f5e020 100644
--- a/MediaBrowser.Providers/Manager/ProviderUtils.cs
+++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs
@@ -13,7 +13,7 @@ namespace MediaBrowser.Providers.Manager
{
public static void MergeBaseItemData<T>(MetadataResult<T> sourceResult,
MetadataResult<T> targetResult,
- List<MetadataFields> lockedFields,
+ MetadataFields[] lockedFields,
bool replaceData,
bool mergeMetadataSettings)
where T : BaseItem
@@ -150,7 +150,7 @@ namespace MediaBrowser.Providers.Manager
if (!lockedFields.Contains(MetadataFields.Studios))
{
- if (replaceData || target.Studios.Count == 0)
+ if (replaceData || target.Studios.Length == 0)
{
target.Studios = source.Studios;
}
@@ -158,23 +158,15 @@ namespace MediaBrowser.Providers.Manager
if (!lockedFields.Contains(MetadataFields.Tags))
{
- if (replaceData || target.Tags.Count == 0)
+ if (replaceData || target.Tags.Length == 0)
{
target.Tags = source.Tags;
}
}
- if (!lockedFields.Contains(MetadataFields.Keywords))
- {
- if (replaceData || target.Keywords.Count == 0)
- {
- target.Keywords = source.Keywords;
- }
- }
-
if (!lockedFields.Contains(MetadataFields.ProductionLocations))
{
- if (replaceData || target.ProductionLocations.Count == 0)
+ if (replaceData || target.ProductionLocations.Length == 0)
{
target.ProductionLocations = source.ProductionLocations;
}
@@ -212,12 +204,17 @@ namespace MediaBrowser.Providers.Manager
//if (!lockedFields.Contains(MetadataFields.DisplayMediaType))
{
- if (replaceData || string.IsNullOrEmpty(target.DisplayMediaType))
+ var targetVideo = target as Video;
+ var sourceVideo = source as Video;
+ if (sourceVideo != null && targetVideo != null)
{
- // Safeguard against incoming data having an emtpy name
- if (!string.IsNullOrWhiteSpace(source.DisplayMediaType))
+ if (replaceData || string.IsNullOrEmpty(targetVideo.DisplayMediaType))
{
- target.DisplayMediaType = source.DisplayMediaType;
+ // Safeguard against incoming data having an emtpy name
+ if (!string.IsNullOrWhiteSpace(sourceVideo.DisplayMediaType))
+ {
+ targetVideo.DisplayMediaType = sourceVideo.DisplayMediaType;
+ }
}
}
}
@@ -269,7 +266,7 @@ namespace MediaBrowser.Providers.Manager
target.PreferredMetadataLanguage = source.PreferredMetadataLanguage;
}
- private static void MergeDisplayOrder(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData)
+ private static void MergeDisplayOrder(BaseItem source, BaseItem target, MetadataFields[] lockedFields, bool replaceData)
{
var sourceHasDisplayOrder = source as IHasDisplayOrder;
var targetHasDisplayOrder = target as IHasDisplayOrder;
@@ -280,21 +277,21 @@ namespace MediaBrowser.Providers.Manager
}
}
- private static void MergeAlbumArtist(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData)
+ private static void MergeAlbumArtist(BaseItem source, BaseItem target, MetadataFields[] lockedFields, bool replaceData)
{
var sourceHasAlbumArtist = source as IHasAlbumArtist;
var targetHasAlbumArtist = target as IHasAlbumArtist;
if (sourceHasAlbumArtist != null && targetHasAlbumArtist != null)
{
- if (replaceData || targetHasAlbumArtist.AlbumArtists.Count == 0)
+ if (replaceData || targetHasAlbumArtist.AlbumArtists.Length == 0)
{
targetHasAlbumArtist.AlbumArtists = sourceHasAlbumArtist.AlbumArtists;
}
}
}
- private static void MergeCriticRating(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData)
+ private static void MergeCriticRating(BaseItem source, BaseItem target, MetadataFields[] lockedFields, bool replaceData)
{
if (replaceData || !target.CriticRating.HasValue)
{
@@ -302,21 +299,21 @@ namespace MediaBrowser.Providers.Manager
}
}
- private static void MergeTrailers(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData)
+ private static void MergeTrailers(BaseItem source, BaseItem target, MetadataFields[] lockedFields, bool replaceData)
{
var sourceCast = source as IHasTrailers;
var targetCast = target as IHasTrailers;
if (sourceCast != null && targetCast != null)
{
- if (replaceData || targetCast.RemoteTrailers.Count == 0)
+ if (replaceData || targetCast.RemoteTrailers.Length == 0)
{
targetCast.RemoteTrailers = sourceCast.RemoteTrailers;
}
}
}
- private static void MergeVideoInfo(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData)
+ private static void MergeVideoInfo(BaseItem source, BaseItem target, MetadataFields[] lockedFields, bool replaceData)
{
var sourceCast = source as Video;
var targetCast = target as Video;
diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
index cc5e7aef9b..b8b6032452 100644
--- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
@@ -12,6 +12,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.MediaInfo
{
@@ -31,19 +32,17 @@ namespace MediaBrowser.Providers.MediaInfo
_fileSystem = fileSystem;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType> { ImageType.Primary };
}
- public Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken)
+ public Task<DynamicImageResponse> GetImage(IHasMetadata item, ImageType type, CancellationToken cancellationToken)
{
var audio = (Audio)item;
var imageStreams =
- audio.GetMediaSources(false)
- .Take(1)
- .SelectMany(i => i.MediaStreams)
+ audio.GetMediaStreams(MediaStreamType.EmbeddedImage)
.Where(i => i.Type == MediaStreamType.EmbeddedImage)
.ToList();
@@ -94,7 +93,7 @@ namespace MediaBrowser.Providers.MediaInfo
private string GetAudioImagePath(Audio item)
{
var filename = item.Album ?? string.Empty;
- filename += string.Join(",", item.Artists.ToArray());
+ filename += string.Join(",", item.Artists.ToArray(item.Artists.Count));
if (!string.IsNullOrWhiteSpace(item.Album))
{
@@ -129,7 +128,7 @@ namespace MediaBrowser.Providers.MediaInfo
get { return "Image Extractor"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
var audio = item as Audio;
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
index 04e549526c..b0785298b8 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
@@ -13,6 +13,7 @@ using System.Globalization;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
+using System.Linq;
namespace MediaBrowser.Providers.MediaInfo
{
@@ -95,14 +96,14 @@ namespace MediaBrowser.Providers.MediaInfo
{
var mediaStreams = mediaInfo.MediaStreams;
- //audio.FormatName = mediaInfo.Container;
+ audio.Container = mediaInfo.Container;
audio.TotalBitrate = mediaInfo.Bitrate;
audio.RunTimeTicks = mediaInfo.RunTimeTicks;
audio.Size = mediaInfo.Size;
var extension = (Path.GetExtension(audio.Path) ?? string.Empty).TrimStart('.');
- audio.Container = extension;
+ //audio.Container = extension;
await FetchDataFromTags(audio, mediaInfo).ConfigureAwait(false);
@@ -165,12 +166,7 @@ namespace MediaBrowser.Providers.MediaInfo
if (!audio.LockedFields.Contains(MetadataFields.Studios))
{
- audio.Studios.Clear();
-
- foreach (var studio in data.Studios)
- {
- audio.AddStudio(studio);
- }
+ audio.SetStudios(data.Studios);
}
audio.SetProviderId(MetadataProviders.MusicBrainzAlbumArtist, data.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist));
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
index 17e48a835b..333f3d5932 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
@@ -141,11 +141,6 @@ namespace MediaBrowser.Providers.MediaInfo
return _cachedTask;
}
- if (item.VideoType == VideoType.HdDvd)
- {
- return _cachedTask;
- }
-
if (item.IsPlaceHolder)
{
return _cachedTask;
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
index eaf3505d1a..791a5c57b3 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
@@ -80,35 +80,45 @@ namespace MediaBrowser.Providers.MediaInfo
try
{
- if (item.VideoType == VideoType.BluRay || (item.IsoType.HasValue && item.IsoType == IsoType.BluRay))
- {
- var inputPath = isoMount != null ? isoMount.MountedPath : item.Path;
+ List<string> streamFileNames = null;
- blurayDiscInfo = GetBDInfo(inputPath);
+ if (item.VideoType == VideoType.Iso)
+ {
+ item.IsoType = DetermineIsoType(isoMount);
}
- OnPreFetch(item, isoMount, blurayDiscInfo);
-
- // If we didn't find any satisfying the min length, just take them all
if (item.VideoType == VideoType.Dvd || (item.IsoType.HasValue && item.IsoType == IsoType.Dvd))
{
- if (item.PlayableStreamFileNames.Count == 0)
+ streamFileNames = FetchFromDvdLib(item, isoMount);
+
+ if (streamFileNames.Count == 0)
{
_logger.Error("No playable vobs found in dvd structure, skipping ffprobe.");
return ItemUpdateType.MetadataImport;
}
}
- if (item.VideoType == VideoType.BluRay || (item.IsoType.HasValue && item.IsoType == IsoType.BluRay))
+ else if (item.VideoType == VideoType.BluRay || (item.IsoType.HasValue && item.IsoType == IsoType.BluRay))
{
- if (item.PlayableStreamFileNames.Count == 0)
+ var inputPath = isoMount != null ? isoMount.MountedPath : item.Path;
+
+ blurayDiscInfo = GetBDInfo(inputPath);
+
+ streamFileNames = blurayDiscInfo.Files;
+
+ if (streamFileNames.Count == 0)
{
_logger.Error("No playable vobs found in bluray structure, skipping ffprobe.");
return ItemUpdateType.MetadataImport;
}
}
- var result = await GetMediaInfo(item, isoMount, cancellationToken).ConfigureAwait(false);
+ if (streamFileNames == null)
+ {
+ streamFileNames = new List<string>();
+ }
+
+ var result = await GetMediaInfo(item, isoMount, streamFileNames, cancellationToken).ConfigureAwait(false);
cancellationToken.ThrowIfCancellationRequested();
@@ -126,10 +136,9 @@ namespace MediaBrowser.Providers.MediaInfo
return ItemUpdateType.MetadataImport;
}
- private const string SchemaVersion = "6";
-
- private async Task<Model.MediaInfo.MediaInfo> GetMediaInfo(Video item,
+ private Task<Model.MediaInfo.MediaInfo> GetMediaInfo(Video item,
IIsoMount isoMount,
+ List<string> streamFileNames,
CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
@@ -138,9 +147,9 @@ namespace MediaBrowser.Providers.MediaInfo
? MediaProtocol.Http
: MediaProtocol.File;
- var result = await _mediaEncoder.GetMediaInfo(new MediaInfoRequest
+ return _mediaEncoder.GetMediaInfo(new MediaInfoRequest
{
- PlayableStreamFileNames = item.PlayableStreamFileNames,
+ PlayableStreamFileNames = streamFileNames,
MountedIso = isoMount,
ExtractChapters = true,
VideoType = item.VideoType,
@@ -148,12 +157,7 @@ namespace MediaBrowser.Providers.MediaInfo
InputPath = item.Path,
Protocol = protocol
- }, cancellationToken).ConfigureAwait(false);
-
- //Directory.CreateDirectory(_fileSystem.GetDirectoryName(cachePath));
- //_json.SerializeToFile(result, cachePath);
-
- return result;
+ }, cancellationToken);
}
protected async Task Fetch(Video video,
@@ -187,6 +191,7 @@ namespace MediaBrowser.Providers.MediaInfo
{
video.Container = null;
}
+ video.Container = mediaInfo.Container;
var chapters = mediaInfo.Chapters ?? new List<ChapterInfo>();
if (blurayInfo != null)
@@ -229,16 +234,9 @@ namespace MediaBrowser.Providers.MediaInfo
extractDuringScan = libraryOptions.ExtractChapterImagesDuringLibraryScan;
}
- await _encodingManager.RefreshChapterImages(new ChapterImageRefreshOptions
- {
- Chapters = chapters,
- Video = video,
- ExtractImages = extractDuringScan,
- SaveChapters = false
-
- }, cancellationToken).ConfigureAwait(false);
+ await _encodingManager.RefreshChapterImages(video, chapters, extractDuringScan, false, cancellationToken).ConfigureAwait(false);
- await _chapterManager.SaveChapters(video.Id.ToString(), chapters, cancellationToken).ConfigureAwait(false);
+ await _chapterManager.SaveChapters(video.Id.ToString(), chapters).ConfigureAwait(false);
}
}
@@ -265,7 +263,7 @@ namespace MediaBrowser.Providers.MediaInfo
{
var video = (Video)item;
- video.PlayableStreamFileNames = blurayInfo.Files.ToList();
+ //video.PlayableStreamFileNames = blurayInfo.Files.ToList();
// Use BD Info if it has multiple m2ts. Otherwise, treat it like a video file and rely more on ffprobe output
if (blurayInfo.Files.Count > 1)
@@ -371,14 +369,9 @@ namespace MediaBrowser.Providers.MediaInfo
if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Studios))
{
- if (video.Studios.Count == 0 || isFullRefresh)
+ if (video.Studios.Length == 0 || isFullRefresh)
{
- video.Studios.Clear();
-
- foreach (var studio in data.Studios)
- {
- video.AddStudio(studio);
- }
+ video.SetStudios(data.Studios);
}
}
@@ -513,7 +506,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
}
- video.SubtitleFiles = externalSubtitleStreams.Select(i => i.Path).OrderBy(i => i).ToList();
+ video.SubtitleFiles = externalSubtitleStreams.Select(i => i.Path).OrderBy(i => i).ToArray();
currentStreams.AddRange(externalSubtitleStreams);
}
@@ -558,31 +551,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
}
- /// <summary>
- /// Called when [pre fetch].
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="mount">The mount.</param>
- /// <param name="blurayDiscInfo">The bluray disc information.</param>
- private void OnPreFetch(Video item, IIsoMount mount, BlurayDiscInfo blurayDiscInfo)
- {
- if (item.VideoType == VideoType.Iso)
- {
- item.IsoType = DetermineIsoType(mount);
- }
-
- if (item.VideoType == VideoType.Dvd || (item.IsoType.HasValue && item.IsoType == IsoType.Dvd))
- {
- FetchFromDvdLib(item, mount);
- }
-
- if (blurayDiscInfo != null)
- {
- item.PlayableStreamFileNames = blurayDiscInfo.Files.ToList();
- }
- }
-
- private void FetchFromDvdLib(Video item, IIsoMount mount)
+ private List<string> FetchFromDvdLib(Video item, IIsoMount mount)
{
var path = mount == null ? item.Path : mount.MountedPath;
var dvd = new Dvd(path, _fileSystem);
@@ -597,7 +566,7 @@ namespace MediaBrowser.Providers.MediaInfo
item.RunTimeTicks = GetRuntime(primaryTitle);
}
- item.PlayableStreamFileNames = GetPrimaryPlaylistVobFiles(item, mount, titleNumber)
+ return GetPrimaryPlaylistVobFiles(item, mount, titleNumber)
.Select(Path.GetFileName)
.ToList();
}
diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs b/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs
index dfa705126a..465c417e72 100644
--- a/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs
+++ b/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs
@@ -133,7 +133,7 @@ namespace MediaBrowser.Providers.MediaInfo
throw new ArgumentException(string.Format("Cannot search for items that don't have a path: {0} {1}", video.Name, video.Id));
}
- var files = directoryService.GetFilePaths(containingPath, clearCache);
+ var files = fileSystem.GetFilePaths(containingPath, clearCache);
var videoFileNameWithoutExtension = fileSystem.GetFileNameWithoutExtension(video.Path);
diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
index 200615a5d0..61cf1cfc3c 100644
--- a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
+++ b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
@@ -17,6 +17,7 @@ using System.IO;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.MediaInfo
{
@@ -83,7 +84,7 @@ namespace MediaBrowser.Providers.MediaInfo
{
MediaTypes = new string[] { MediaType.Video },
IsVirtualItem = false,
- IncludeItemTypes = types.ToArray(),
+ IncludeItemTypes = types.ToArray(types.Count),
DtoOptions = new DtoOptions(true)
}).OfType<Video>()
diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
index ca701b70f6..f666d8b7ff 100644
--- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
@@ -18,61 +18,34 @@ namespace MediaBrowser.Providers.MediaInfo
{
public class VideoImageProvider : IDynamicImageProvider, IHasItemChangeMonitor, IHasOrder
{
- private readonly IIsoManager _isoManager;
private readonly IMediaEncoder _mediaEncoder;
- private readonly IServerConfigurationManager _config;
- private readonly ILibraryManager _libraryManager;
private readonly ILogger _logger;
private readonly IFileSystem _fileSystem;
- public VideoImageProvider(IIsoManager isoManager, IMediaEncoder mediaEncoder, IServerConfigurationManager config, ILibraryManager libraryManager, ILogger logger, IFileSystem fileSystem)
+ public VideoImageProvider(IMediaEncoder mediaEncoder, ILogger logger, IFileSystem fileSystem)
{
- _isoManager = isoManager;
_mediaEncoder = mediaEncoder;
- _config = config;
- _libraryManager = libraryManager;
_logger = logger;
_fileSystem = fileSystem;
}
- /// <summary>
- /// The null mount task result
- /// </summary>
- protected readonly Task<IIsoMount> NullMountTaskResult = Task.FromResult<IIsoMount>(null);
-
- /// <summary>
- /// Mounts the iso if needed.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{IIsoMount}.</returns>
- protected Task<IIsoMount> MountIsoIfNeeded(Video item, CancellationToken cancellationToken)
- {
- if (item.VideoType == VideoType.Iso)
- {
- return _isoManager.Mount(item.Path, cancellationToken);
- }
-
- return NullMountTaskResult;
- }
-
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType> { ImageType.Primary };
}
- public Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken)
+ public Task<DynamicImageResponse> GetImage(IHasMetadata item, ImageType type, CancellationToken cancellationToken)
{
var video = (Video)item;
// No support for this
- if (video.VideoType == VideoType.HdDvd || video.IsPlaceHolder)
+ if (video.IsPlaceHolder)
{
return Task.FromResult(new DynamicImageResponse { HasImage = false });
}
- // Can't extract from iso's if we weren't unable to determine iso type
- if (video.VideoType == VideoType.Iso && !video.IsoType.HasValue)
+ // No support for this
+ if (video.VideoType == VideoType.Iso || video.VideoType == VideoType.Dvd || video.VideoType == VideoType.BluRay)
{
return Task.FromResult(new DynamicImageResponse { HasImage = false });
}
@@ -89,79 +62,66 @@ namespace MediaBrowser.Providers.MediaInfo
public async Task<DynamicImageResponse> GetVideoImage(Video item, CancellationToken cancellationToken)
{
- var isoMount = await MountIsoIfNeeded(item, cancellationToken).ConfigureAwait(false);
-
- try
- {
- var protocol = item.LocationType == LocationType.Remote
- ? MediaProtocol.Http
- : MediaProtocol.File;
+ var protocol = item.LocationType == LocationType.Remote
+ ? MediaProtocol.Http
+ : MediaProtocol.File;
- var inputPath = MediaEncoderHelpers.GetInputArgument(_fileSystem, item.Path, protocol, isoMount, item.PlayableStreamFileNames);
+ var inputPath = MediaEncoderHelpers.GetInputArgument(_fileSystem, item.Path, protocol, null, item.GetPlayableStreamFileNames());
- var mediaStreams =
- item.GetMediaSources(false)
- .Take(1)
- .SelectMany(i => i.MediaStreams)
- .ToList();
+ var mediaStreams =
+ item.GetMediaStreams();
- var imageStreams =
- mediaStreams
- .Where(i => i.Type == MediaStreamType.EmbeddedImage)
- .ToList();
+ var imageStreams =
+ mediaStreams
+ .Where(i => i.Type == MediaStreamType.EmbeddedImage)
+ .ToList();
- var imageStream = imageStreams.FirstOrDefault(i => (i.Comment ?? string.Empty).IndexOf("front", StringComparison.OrdinalIgnoreCase) != -1) ??
- imageStreams.FirstOrDefault(i => (i.Comment ?? string.Empty).IndexOf("cover", StringComparison.OrdinalIgnoreCase) != -1) ??
- imageStreams.FirstOrDefault();
+ var imageStream = imageStreams.FirstOrDefault(i => (i.Comment ?? string.Empty).IndexOf("front", StringComparison.OrdinalIgnoreCase) != -1) ??
+ imageStreams.FirstOrDefault(i => (i.Comment ?? string.Empty).IndexOf("cover", StringComparison.OrdinalIgnoreCase) != -1) ??
+ imageStreams.FirstOrDefault();
- string extractedImagePath;
+ string extractedImagePath;
- if (imageStream != null)
+ if (imageStream != null)
+ {
+ // Instead of using the raw stream index, we need to use nth video/embedded image stream
+ var videoIndex = -1;
+ foreach (var mediaStream in mediaStreams)
{
- // Instead of using the raw stream index, we need to use nth video/embedded image stream
- var videoIndex = -1;
- foreach (var mediaStream in mediaStreams)
+ if (mediaStream.Type == MediaStreamType.Video ||
+ mediaStream.Type == MediaStreamType.EmbeddedImage)
{
- if (mediaStream.Type == MediaStreamType.Video ||
- mediaStream.Type == MediaStreamType.EmbeddedImage)
- {
- videoIndex++;
- }
- if (mediaStream == imageStream)
- {
- break;
- }
+ videoIndex++;
+ }
+ if (mediaStream == imageStream)
+ {
+ break;
}
-
- extractedImagePath = await _mediaEncoder.ExtractVideoImage(inputPath, item.Container, protocol, videoIndex, cancellationToken).ConfigureAwait(false);
- }
- else
- {
- // If we know the duration, grab it from 10% into the video. Otherwise just 10 seconds in.
- // Always use 10 seconds for dvd because our duration could be out of whack
- var imageOffset = item.VideoType != VideoType.Dvd && item.RunTimeTicks.HasValue &&
- item.RunTimeTicks.Value > 0
- ? TimeSpan.FromTicks(Convert.ToInt64(item.RunTimeTicks.Value * .1))
- : TimeSpan.FromSeconds(10);
-
- extractedImagePath = await _mediaEncoder.ExtractVideoImage(inputPath, item.Container, protocol, item.Video3DFormat, imageOffset, cancellationToken).ConfigureAwait(false);
}
- return new DynamicImageResponse
- {
- Format = ImageFormat.Jpg,
- HasImage = true,
- Path = extractedImagePath,
- Protocol = MediaProtocol.File
- };
+ extractedImagePath = await _mediaEncoder.ExtractVideoImage(inputPath, item.Container, protocol, imageStream, videoIndex, cancellationToken).ConfigureAwait(false);
}
- finally
+ else
{
- if (isoMount != null)
- {
- isoMount.Dispose();
- }
+ // If we know the duration, grab it from 10% into the video. Otherwise just 10 seconds in.
+ // Always use 10 seconds for dvd because our duration could be out of whack
+ var imageOffset = item.VideoType != VideoType.Dvd && item.RunTimeTicks.HasValue &&
+ item.RunTimeTicks.Value > 0
+ ? TimeSpan.FromTicks(Convert.ToInt64(item.RunTimeTicks.Value * .1))
+ : TimeSpan.FromSeconds(10);
+
+ var videoStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Video);
+
+ extractedImagePath = await _mediaEncoder.ExtractVideoImage(inputPath, item.Container, protocol, videoStream, item.Video3DFormat, imageOffset, cancellationToken).ConfigureAwait(false);
}
+
+ return new DynamicImageResponse
+ {
+ Format = ImageFormat.Jpg,
+ HasImage = true,
+ Path = extractedImagePath,
+ Protocol = MediaProtocol.File
+ };
}
public string Name
@@ -169,7 +129,7 @@ namespace MediaBrowser.Providers.MediaInfo
get { return "Screen Grabber"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
var video = item as Video;
diff --git a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
index c3aa87a22f..0214788ab4 100644
--- a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
+++ b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
@@ -60,12 +60,12 @@ namespace MediaBrowser.Providers.Movies
get { return "FanArt"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Movie || item is BoxSet || item is MusicVideo;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -79,7 +79,7 @@ namespace MediaBrowser.Providers.Movies
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var baseItem = (BaseItem)item;
var list = new List<RemoteImageInfo>();
diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
index b40e4a1201..65742f6e6e 100644
--- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
+++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
@@ -146,7 +146,7 @@ namespace MediaBrowser.Providers.Movies
movie.ProductionLocations = movieData
.production_countries
.Select(i => i.name)
- .ToList();
+ .ToArray(movieData.production_countries.Count);
}
movie.SetProviderId(MetadataProviders.Tmdb, movieData.id.ToString(_usCulture));
@@ -213,12 +213,7 @@ namespace MediaBrowser.Providers.Movies
//studios
if (movieData.production_companies != null)
{
- movie.Studios.Clear();
-
- foreach (var studio in movieData.production_companies.Select(c => c.name))
- {
- movie.AddStudio(studio);
- }
+ movie.SetStudios(movieData.production_companies.Select(c => c.name));
}
// genres
@@ -307,10 +302,10 @@ namespace MediaBrowser.Providers.Movies
}
}
- if (movieData.keywords != null && movieData.keywords.keywords != null)
- {
- movie.Keywords = movieData.keywords.keywords.Select(i => i.name).ToList();
- }
+ //if (movieData.keywords != null && movieData.keywords.keywords != null)
+ //{
+ // movie.Keywords = movieData.keywords.keywords.Select(i => i.name).ToList();
+ //}
if (movieData.trailers != null && movieData.trailers.youtube != null &&
movieData.trailers.youtube.Count > 0)
@@ -323,7 +318,7 @@ namespace MediaBrowser.Providers.Movies
Url = string.Format("https://www.youtube.com/watch?v={0}", i.source),
Name = i.name
- }).ToList();
+ }).ToArray();
}
}
}
diff --git a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs
index 215b391817..8dc4bd56ac 100644
--- a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs
@@ -41,12 +41,12 @@ namespace MediaBrowser.Providers.Movies
get { return "TheMovieDb"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Movie || item is MusicVideo || item is Trailer;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -55,7 +55,7 @@ namespace MediaBrowser.Providers.Movies
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var list = new List<RemoteImageInfo>();
@@ -127,8 +127,7 @@ namespace MediaBrowser.Providers.Movies
return 0;
})
.ThenByDescending(i => i.CommunityRating ?? 0)
- .ThenByDescending(i => i.VoteCount ?? 0)
- .ToList();
+ .ThenByDescending(i => i.VoteCount ?? 0);
}
/// <summary>
@@ -149,8 +148,7 @@ namespace MediaBrowser.Providers.Movies
private IEnumerable<MovieDbProvider.Backdrop> GetBackdrops(MovieDbProvider.Images images)
{
var eligibleBackdrops = images.backdrops == null ? new List<MovieDbProvider.Backdrop>() :
- images.backdrops
- .ToList();
+ images.backdrops;
return eligibleBackdrops.OrderByDescending(i => i.vote_average)
.ThenByDescending(i => i.vote_count);
diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
index fe190afb41..ec1c497426 100644
--- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
@@ -22,6 +22,7 @@ using MediaBrowser.Common;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.Movies
{
@@ -282,7 +283,7 @@ namespace MediaBrowser.Providers.Movies
languages.Add("en");
}
- return string.Join(",", languages.ToArray());
+ return string.Join(",", languages.ToArray(languages.Count));
}
public static string NormalizeLanguage(string language)
diff --git a/MediaBrowser.Providers/Movies/MovieMetadataService.cs b/MediaBrowser.Providers/Movies/MovieMetadataService.cs
index 333d289ec7..dc3146f2a9 100644
--- a/MediaBrowser.Providers/Movies/MovieMetadataService.cs
+++ b/MediaBrowser.Providers/Movies/MovieMetadataService.cs
@@ -28,7 +28,7 @@ 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)
+ protected override void MergeData(MetadataResult<Movie> source, MetadataResult<Movie> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
@@ -61,7 +61,7 @@ namespace MediaBrowser.Providers.Movies
return base.IsFullLocalMetadata(item);
}
- protected override void MergeData(MetadataResult<Trailer> source, MetadataResult<Trailer> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Trailer> source, MetadataResult<Trailer> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs b/MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs
index 0cb1a7ff13..57e20b8526 100644
--- a/MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs
+++ b/MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs
@@ -11,12 +11,12 @@ namespace MediaBrowser.Providers.Music
{
public class AlbumImageFromSongProvider : IDynamicImageProvider
{
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType> { ImageType.Primary };
}
- public Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken)
+ public Task<DynamicImageResponse> GetImage(IHasMetadata item, ImageType type, CancellationToken cancellationToken)
{
var album = (MusicAlbum)item;
@@ -38,7 +38,7 @@ namespace MediaBrowser.Providers.Music
get { return "Image Extractor"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is MusicAlbum;
}
diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs
index bba40608c6..fe39a841e4 100644
--- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs
+++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs
@@ -44,13 +44,13 @@ namespace MediaBrowser.Providers.Music
if (!item.LockedFields.Contains(MetadataFields.Studios))
{
- var currentList = item.Studios.ToList();
+ var currentList = item.Studios;
item.Studios = songs.SelectMany(i => i.Studios)
.Distinct(StringComparer.OrdinalIgnoreCase)
- .ToList();
+ .ToArray();
- if (currentList.Count != item.Studios.Count || !currentList.OrderBy(i => i).SequenceEqual(item.Studios.OrderBy(i => i), StringComparer.OrdinalIgnoreCase))
+ if (currentList.Length != item.Studios.Length || !currentList.OrderBy(i => i).SequenceEqual(item.Studios.OrderBy(i => i), StringComparer.OrdinalIgnoreCase))
{
updateType = updateType | ItemUpdateType.MetadataEdit;
}
@@ -87,7 +87,7 @@ namespace MediaBrowser.Providers.Music
.SelectMany(i => i.AlbumArtists)
.Distinct(StringComparer.OrdinalIgnoreCase)
.OrderBy(i => i)
- .ToList();
+ .ToArray();
if (!item.AlbumArtists.SequenceEqual(artists, StringComparer.OrdinalIgnoreCase))
{
@@ -151,7 +151,7 @@ namespace MediaBrowser.Providers.Music
return updateType;
}
- protected override void MergeData(MetadataResult<MusicAlbum> source, MetadataResult<MusicAlbum> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<MusicAlbum> source, MetadataResult<MusicAlbum> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Music/ArtistMetadataService.cs b/MediaBrowser.Providers/Music/ArtistMetadataService.cs
index 98fe766e0a..c8008ba1ec 100644
--- a/MediaBrowser.Providers/Music/ArtistMetadataService.cs
+++ b/MediaBrowser.Providers/Music/ArtistMetadataService.cs
@@ -29,7 +29,7 @@ namespace MediaBrowser.Providers.Music
Recursive = true,
IsFolder = false
}) :
- item.GetRecursiveChildren(i => i is IHasArtist && !i.IsFolder).ToList();
+ item.GetRecursiveChildren(i => i is IHasArtist && !i.IsFolder);
var currentList = item.Genres.ToList();
@@ -47,7 +47,7 @@ namespace MediaBrowser.Providers.Music
return updateType;
}
- protected override void MergeData(MetadataResult<MusicArtist> source, MetadataResult<MusicArtist> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<MusicArtist> source, MetadataResult<MusicArtist> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Music/AudioDbAlbumImageProvider.cs b/MediaBrowser.Providers/Music/AudioDbAlbumImageProvider.cs
index c13d19c436..0ce221b065 100644
--- a/MediaBrowser.Providers/Music/AudioDbAlbumImageProvider.cs
+++ b/MediaBrowser.Providers/Music/AudioDbAlbumImageProvider.cs
@@ -25,7 +25,7 @@ namespace MediaBrowser.Providers.Music
_json = json;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -34,7 +34,7 @@ namespace MediaBrowser.Providers.Music
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var id = item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup);
@@ -105,7 +105,7 @@ namespace MediaBrowser.Providers.Music
}
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is MusicAlbum;
}
diff --git a/MediaBrowser.Providers/Music/AudioDbAlbumProvider.cs b/MediaBrowser.Providers/Music/AudioDbAlbumProvider.cs
index cd6b0b8271..80f1224022 100644
--- a/MediaBrowser.Providers/Music/AudioDbAlbumProvider.cs
+++ b/MediaBrowser.Providers/Music/AudioDbAlbumProvider.cs
@@ -74,7 +74,7 @@ namespace MediaBrowser.Providers.Music
{
if (!string.IsNullOrWhiteSpace(result.strArtist))
{
- item.AlbumArtists = new List<string> { result.strArtist };
+ item.AlbumArtists = new string[] { result.strArtist };
}
if (!string.IsNullOrEmpty(result.intYearReleased))
diff --git a/MediaBrowser.Providers/Music/AudioDbArtistImageProvider.cs b/MediaBrowser.Providers/Music/AudioDbArtistImageProvider.cs
index 6ca1d83d8a..dded509e2f 100644
--- a/MediaBrowser.Providers/Music/AudioDbArtistImageProvider.cs
+++ b/MediaBrowser.Providers/Music/AudioDbArtistImageProvider.cs
@@ -25,7 +25,7 @@ namespace MediaBrowser.Providers.Music
_httpClient = httpClient;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -36,7 +36,7 @@ namespace MediaBrowser.Providers.Music
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var id = item.GetProviderId(MetadataProviders.MusicBrainzArtist);
@@ -138,7 +138,7 @@ namespace MediaBrowser.Providers.Music
get { return "TheAudioDB"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is MusicArtist;
}
diff --git a/MediaBrowser.Providers/Music/AudioMetadataService.cs b/MediaBrowser.Providers/Music/AudioMetadataService.cs
index 4d791be01a..68a4fcd7cb 100644
--- a/MediaBrowser.Providers/Music/AudioMetadataService.cs
+++ b/MediaBrowser.Providers/Music/AudioMetadataService.cs
@@ -8,12 +8,13 @@ using MediaBrowser.Providers.Manager;
using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.Music
{
public class AudioMetadataService : MetadataService<Audio, SongInfo>
{
- protected override void MergeData(MetadataResult<Audio> source, MetadataResult<Audio> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Audio> source, MetadataResult<Audio> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs
index 5700b23866..7a6826d319 100644
--- a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs
+++ b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs
@@ -47,12 +47,12 @@ namespace MediaBrowser.Providers.Music
get { return "FanArt"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is MusicAlbum;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -61,7 +61,7 @@ namespace MediaBrowser.Providers.Music
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var album = (MusicAlbum)item;
diff --git a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
index eefebed292..6094fd26ec 100644
--- a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
+++ b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
@@ -58,12 +58,12 @@ namespace MediaBrowser.Providers.Music
get { return "FanArt"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is MusicArtist;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -75,7 +75,7 @@ namespace MediaBrowser.Providers.Music
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var artist = (MusicArtist)item;
diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
index b77fcf1b28..a35fd696a3 100644
--- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
+++ b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
@@ -17,6 +17,7 @@ using System.Threading.Tasks;
using System.Xml;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Xml;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.Music
{
@@ -123,6 +124,7 @@ namespace MediaBrowser.Providers.Music
}
return result;
+
}).ToList();
}
}
diff --git a/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs
index 1a2b13e946..06f60c8a37 100644
--- a/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs
+++ b/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs
@@ -50,7 +50,7 @@ namespace MediaBrowser.Providers.Music
using (var stream = await MusicBrainzAlbumProvider.Current.GetMusicBrainzResponse(url, true, cancellationToken).ConfigureAwait(false))
{
- var results = GetResultsFromResponse(stream).ToList();
+ var results = GetResultsFromResponse(stream);
if (results.Count > 0)
{
@@ -73,7 +73,7 @@ namespace MediaBrowser.Providers.Music
return new List<RemoteSearchResult>();
}
- private IEnumerable<RemoteSearchResult> GetResultsFromResponse(Stream stream)
+ private List<RemoteSearchResult> GetResultsFromResponse(Stream stream)
{
using (var oReader = new StreamReader(stream, Encoding.UTF8))
{
@@ -125,7 +125,7 @@ namespace MediaBrowser.Providers.Music
}
}
- private IEnumerable<RemoteSearchResult> ParseArtistList(XmlReader reader)
+ private List<RemoteSearchResult> ParseArtistList(XmlReader reader)
{
var list = new List<RemoteSearchResult>();
diff --git a/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs b/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs
index b8f6e2c633..27c6deb740 100644
--- a/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs
+++ b/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs
@@ -10,12 +10,13 @@ using System.Linq;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.Music
{
class MusicVideoMetadataService : MetadataService<MusicVideo, MusicVideoInfo>
{
- protected override void MergeData(MetadataResult<MusicVideo> source, MetadataResult<MusicVideo> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<MusicVideo> source, MetadataResult<MusicVideo> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs b/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs
index ba059bd7b8..3828f8d274 100644
--- a/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs
+++ b/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.MusicGenres
{
public class MusicGenreMetadataService : MetadataService<MusicGenre, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<MusicGenre> source, MetadataResult<MusicGenre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<MusicGenre> source, MetadataResult<MusicGenre> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs b/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs
index f8b3ba1551..74bfa6e039 100644
--- a/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs
+++ b/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs
@@ -32,7 +32,7 @@ namespace MediaBrowser.Providers.Omdb
_configurationManager = configurationManager;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -40,7 +40,7 @@ namespace MediaBrowser.Providers.Omdb
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var imdbId = item.GetProviderId(MetadataProviders.Imdb);
@@ -91,7 +91,7 @@ namespace MediaBrowser.Providers.Omdb
get { return "The Open Movie Database"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Movie || item is Trailer || item is Episode;
}
diff --git a/MediaBrowser.Providers/People/MovieDbPersonImageProvider.cs b/MediaBrowser.Providers/People/MovieDbPersonImageProvider.cs
index 3728137902..4dfcdba09f 100644
--- a/MediaBrowser.Providers/People/MovieDbPersonImageProvider.cs
+++ b/MediaBrowser.Providers/People/MovieDbPersonImageProvider.cs
@@ -37,12 +37,12 @@ namespace MediaBrowser.Providers.People
get { return "TheMovieDb"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Person;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -50,7 +50,7 @@ namespace MediaBrowser.Providers.People
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var person = (Person)item;
var id = person.GetProviderId(MetadataProviders.Tmdb);
@@ -116,8 +116,7 @@ namespace MediaBrowser.Providers.People
return 0;
})
.ThenByDescending(i => i.CommunityRating ?? 0)
- .ThenByDescending(i => i.VoteCount ?? 0)
- .ToList();
+ .ThenByDescending(i => i.VoteCount ?? 0);
}
private string GetLanguage(MovieDbPersonProvider.Profile profile)
diff --git a/MediaBrowser.Providers/People/MovieDbPersonProvider.cs b/MediaBrowser.Providers/People/MovieDbPersonProvider.cs
index 986c4b4a98..d8c9ce8018 100644
--- a/MediaBrowser.Providers/People/MovieDbPersonProvider.cs
+++ b/MediaBrowser.Providers/People/MovieDbPersonProvider.cs
@@ -184,7 +184,7 @@ namespace MediaBrowser.Providers.People
if (!string.IsNullOrWhiteSpace(info.place_of_birth))
{
- item.ProductionLocations = new List<string> { info.place_of_birth };
+ item.ProductionLocations = new string[] { info.place_of_birth };
}
item.Overview = info.biography;
diff --git a/MediaBrowser.Providers/People/PersonMetadataService.cs b/MediaBrowser.Providers/People/PersonMetadataService.cs
index 5d70fc1d60..bbfaa43b40 100644
--- a/MediaBrowser.Providers/People/PersonMetadataService.cs
+++ b/MediaBrowser.Providers/People/PersonMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.People
{
public class PersonMetadataService : MetadataService<Person, PersonLookupInfo>
{
- protected override void MergeData(MetadataResult<Person> source, MetadataResult<Person> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Person> source, MetadataResult<Person> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs
index efbf46cd67..2c3ba00c82 100644
--- a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs
+++ b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs
@@ -48,12 +48,12 @@ namespace MediaBrowser.Providers.People
get { return "TheTVDB"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Person;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -61,7 +61,7 @@ namespace MediaBrowser.Providers.People
};
}
- public Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var seriesWithPerson = _libraryManager.GetItemList(new InternalItemsQuery
{
diff --git a/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs b/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs
index 85b9dafd46..bff933ccfa 100644
--- a/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs
+++ b/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Photos
{
class PhotoAlbumMetadataService : MetadataService<PhotoAlbum, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<PhotoAlbum> source, MetadataResult<PhotoAlbum> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<PhotoAlbum> source, MetadataResult<PhotoAlbum> target, 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 909d359b99..d7f4982e4b 100644
--- a/MediaBrowser.Providers/Photos/PhotoMetadataService.cs
+++ b/MediaBrowser.Providers/Photos/PhotoMetadataService.cs
@@ -12,7 +12,7 @@ namespace MediaBrowser.Providers.Photos
{
class PhotoMetadataService : MetadataService<Photo, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<Photo> source, MetadataResult<Photo> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Photo> source, MetadataResult<Photo> target, 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 c4ea106fb4..dccef3a09a 100644
--- a/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs
+++ b/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs
@@ -15,7 +15,7 @@ namespace MediaBrowser.Providers.Playlists
{
class PlaylistMetadataService : MetadataService<Playlist, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<Playlist> source, MetadataResult<Playlist> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Playlist> source, MetadataResult<Playlist> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/Studios/StudioMetadataService.cs b/MediaBrowser.Providers/Studios/StudioMetadataService.cs
index ef5ced3e2b..23953b0d3e 100644
--- a/MediaBrowser.Providers/Studios/StudioMetadataService.cs
+++ b/MediaBrowser.Providers/Studios/StudioMetadataService.cs
@@ -12,7 +12,7 @@ namespace MediaBrowser.Providers.Studios
{
public class StudioMetadataService : MetadataService<Studio, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<Studio> source, MetadataResult<Studio> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Studio> source, MetadataResult<Studio> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}
diff --git a/MediaBrowser.Providers/Studios/StudiosImageProvider.cs b/MediaBrowser.Providers/Studios/StudiosImageProvider.cs
index 8579bd16b9..f63615430f 100644
--- a/MediaBrowser.Providers/Studios/StudiosImageProvider.cs
+++ b/MediaBrowser.Providers/Studios/StudiosImageProvider.cs
@@ -37,12 +37,12 @@ namespace MediaBrowser.Providers.Studios
get { return "Emby Designs"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Studio;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -51,12 +51,12 @@ namespace MediaBrowser.Providers.Studios
};
}
- public Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
return GetImages(item, true, true, cancellationToken);
}
- private async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, bool posters, bool thumbs, CancellationToken cancellationToken)
+ private async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, bool posters, bool thumbs, CancellationToken cancellationToken)
{
var list = new List<RemoteImageInfo>();
@@ -83,7 +83,7 @@ namespace MediaBrowser.Providers.Studios
return list.Where(i => i != null);
}
- private RemoteImageInfo GetImage(IHasImages item, string filename, ImageType type, string remoteFilename)
+ private RemoteImageInfo GetImage(IHasMetadata item, string filename, ImageType type, string remoteFilename)
{
var list = ImageUtils.GetAvailableImages(filename, _fileSystem);
diff --git a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs
index f7071f519e..fce95364ef 100644
--- a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs
+++ b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs
@@ -295,8 +295,7 @@ namespace MediaBrowser.Providers.Subtitles
}
var providers = _subtitleProviders
- .Where(i => i.SupportedMediaTypes.Contains(mediaType))
- .ToList();
+ .Where(i => i.SupportedMediaTypes.Contains(mediaType));
return providers.Select(i => new SubtitleProviderInfo
{
diff --git a/MediaBrowser.Providers/TV/EpisodeMetadataService.cs b/MediaBrowser.Providers/TV/EpisodeMetadataService.cs
index 8adb6d4d24..29533a46be 100644
--- a/MediaBrowser.Providers/TV/EpisodeMetadataService.cs
+++ b/MediaBrowser.Providers/TV/EpisodeMetadataService.cs
@@ -58,7 +58,7 @@ namespace MediaBrowser.Providers.TV
return updateType;
}
- protected override void MergeData(MetadataResult<Episode> source, MetadataResult<Episode> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Episode> source, MetadataResult<Episode> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
diff --git a/MediaBrowser.Providers/TV/FanArt/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArt/FanArtSeasonProvider.cs
index b9f010bb64..002c98e957 100644
--- a/MediaBrowser.Providers/TV/FanArt/FanArtSeasonProvider.cs
+++ b/MediaBrowser.Providers/TV/FanArt/FanArtSeasonProvider.cs
@@ -50,12 +50,12 @@ namespace MediaBrowser.Providers.TV
get { return "FanArt"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Season;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -66,7 +66,7 @@ namespace MediaBrowser.Providers.TV
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var list = new List<RemoteImageInfo>();
diff --git a/MediaBrowser.Providers/TV/FanArt/FanartSeriesProvider.cs b/MediaBrowser.Providers/TV/FanArt/FanartSeriesProvider.cs
index 644e9cbb53..583e5900de 100644
--- a/MediaBrowser.Providers/TV/FanArt/FanartSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/FanArt/FanartSeriesProvider.cs
@@ -59,12 +59,12 @@ namespace MediaBrowser.Providers.TV
get { return "FanArt"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Series;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -77,7 +77,7 @@ namespace MediaBrowser.Providers.TV
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var list = new List<RemoteImageInfo>();
diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
index 51ad12364c..45e10a76e4 100644
--- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
@@ -329,7 +329,7 @@ namespace MediaBrowser.Providers.TV
return true;
}
- if (!allowMissingEpisodes && i.Episode.IsMissingEpisode)
+ if (!allowMissingEpisodes && i.Episode.IsMissingEpisode && !i.Episode.IsUnaired)
{
return true;
}
diff --git a/MediaBrowser.Providers/TV/Omdb/OmdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/Omdb/OmdbEpisodeProvider.cs
index daf493ad9c..48af89830c 100644
--- a/MediaBrowser.Providers/TV/Omdb/OmdbEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/Omdb/OmdbEpisodeProvider.cs
@@ -50,7 +50,7 @@ namespace MediaBrowser.Providers.TV
};
// Allowing this will dramatically increase scan times
- if (info.IsMissingEpisode || info.IsVirtualUnaired)
+ if (info.IsMissingEpisode)
{
return result;
}
diff --git a/MediaBrowser.Providers/TV/SeasonMetadataService.cs b/MediaBrowser.Providers/TV/SeasonMetadataService.cs
index 1b4e3f44fd..c10b0ef9db 100644
--- a/MediaBrowser.Providers/TV/SeasonMetadataService.cs
+++ b/MediaBrowser.Providers/TV/SeasonMetadataService.cs
@@ -61,7 +61,7 @@ namespace MediaBrowser.Providers.TV
return updateType;
}
- protected override void MergeData(MetadataResult<Season> source, MetadataResult<Season> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Season> source, MetadataResult<Season> target, 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 7559a15de3..3977ba9d9a 100644
--- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs
+++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs
@@ -57,7 +57,7 @@ namespace MediaBrowser.Providers.TV
return base.IsFullLocalMetadata(item);
}
- protected override void MergeData(MetadataResult<Series> source, MetadataResult<Series> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Series> source, MetadataResult<Series> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
@@ -74,7 +74,7 @@ namespace MediaBrowser.Providers.TV
targetItem.Status = sourceItem.Status;
}
- if (replaceData || targetItem.AirDays == null || targetItem.AirDays.Count == 0)
+ if (replaceData || targetItem.AirDays == null || targetItem.AirDays.Length == 0)
{
targetItem.AirDays = sourceItem.AirDays;
}
diff --git a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs
index 854f9f06b8..728bbc505a 100644
--- a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeImageProvider.cs
@@ -29,7 +29,7 @@ namespace MediaBrowser.Providers.TV
: base(httpClient, configurationManager, jsonSerializer, fileSystem, localization, logManager)
{}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -37,7 +37,7 @@ namespace MediaBrowser.Providers.TV
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var episode = (Controller.Entities.TV.Episode)item;
var series = episode.Series;
@@ -104,8 +104,7 @@ namespace MediaBrowser.Providers.TV
return 0;
})
.ThenByDescending(i => i.CommunityRating ?? 0)
- .ThenByDescending(i => i.VoteCount ?? 0)
- .ToList();
+ .ThenByDescending(i => i.VoteCount ?? 0);
}
@@ -125,7 +124,7 @@ namespace MediaBrowser.Providers.TV
get { return "TheMovieDb"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Controller.Entities.TV.Episode;
}
diff --git a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeProvider.cs
index 618a4df45f..31785ca9c7 100644
--- a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbEpisodeProvider.cs
@@ -68,7 +68,7 @@ namespace MediaBrowser.Providers.TV
var result = new MetadataResult<Episode>();
// Allowing this will dramatically increase scan times
- if (info.IsMissingEpisode || info.IsVirtualUnaired)
+ if (info.IsMissingEpisode)
{
return result;
}
@@ -134,7 +134,7 @@ namespace MediaBrowser.Providers.TV
if (video.site.Equals("youtube", System.StringComparison.OrdinalIgnoreCase))
{
var videoUrl = string.Format("http://www.youtube.com/watch?v={0}", video.key);
- item.AddTrailerUrl(videoUrl, true);
+ item.AddTrailerUrl(videoUrl);
}
}
}
diff --git a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs
index c746e04880..f05f7bb309 100644
--- a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesImageProvider.cs
@@ -40,12 +40,12 @@ namespace MediaBrowser.Providers.TV
get { return "TheMovieDb"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Series;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -54,7 +54,7 @@ namespace MediaBrowser.Providers.TV
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var list = new List<RemoteImageInfo>();
@@ -118,8 +118,7 @@ namespace MediaBrowser.Providers.TV
return 0;
})
.ThenByDescending(i => i.CommunityRating ?? 0)
- .ThenByDescending(i => i.VoteCount ?? 0)
- .ToList();
+ .ThenByDescending(i => i.VoteCount ?? 0);
}
/// <summary>
@@ -138,8 +137,7 @@ namespace MediaBrowser.Providers.TV
private IEnumerable<MovieDbSeriesProvider.Backdrop> GetBackdrops(MovieDbSeriesProvider.Images images)
{
var eligibleBackdrops = images.backdrops == null ? new List<MovieDbSeriesProvider.Backdrop>() :
- images.backdrops
- .ToList();
+ images.backdrops;
return eligibleBackdrops.OrderByDescending(i => i.vote_average)
.ThenByDescending(i => i.vote_count);
diff --git a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs
index 0b5708b568..72745a9c3a 100644
--- a/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/TheMovieDb/MovieDbSeriesProvider.cs
@@ -21,6 +21,7 @@ using System.Threading.Tasks;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Globalization;
+using MediaBrowser.Model.Extensions;
namespace MediaBrowser.Providers.TV
{
@@ -231,7 +232,7 @@ namespace MediaBrowser.Providers.TV
if (seriesInfo.networks != null)
{
- series.Studios = seriesInfo.networks.Select(i => i.name).ToList();
+ series.Studios = seriesInfo.networks.Select(i => i.name).ToArray(seriesInfo.networks.Count);
}
if (seriesInfo.genres != null)
@@ -301,7 +302,7 @@ namespace MediaBrowser.Providers.TV
if (video.site.Equals("youtube", System.StringComparison.OrdinalIgnoreCase))
{
var videoUrl = string.Format("http://www.youtube.com/watch?v={0}", video.key);
- series.AddTrailerUrl(videoUrl, true);
+ series.AddTrailerUrl(videoUrl);
}
}
}
diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs
index 48e50c2e14..7b6bcc4c7c 100644
--- a/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeImageProvider.cs
@@ -35,12 +35,12 @@ namespace MediaBrowser.Providers.TV
get { return "TheTVDB"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Episode;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -48,7 +48,7 @@ namespace MediaBrowser.Providers.TV
};
}
- public Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var episode = (Episode)item;
var series = episode.Series;
diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs
index 9a457ba948..30d2691e3b 100644
--- a/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs
+++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs
@@ -320,9 +320,8 @@ namespace MediaBrowser.Providers.TV
/// <param name="progress">The progress.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- private async Task UpdateSeries(IEnumerable<string> seriesIds, string seriesDataPath, long? lastTvDbUpdateTime, IProgress<double> progress, CancellationToken cancellationToken)
+ private async Task UpdateSeries(List<string> seriesIds, string seriesDataPath, long? lastTvDbUpdateTime, IProgress<double> progress, CancellationToken cancellationToken)
{
- var list = seriesIds.ToList();
var numComplete = 0;
var seriesList = _libraryManager.GetItemList(new InternalItemsQuery()
@@ -342,7 +341,7 @@ namespace MediaBrowser.Providers.TV
.Where(i => !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Tvdb)))
.ToLookup(i => i.GetProviderId(MetadataProviders.Tvdb));
- foreach (var seriesId in list)
+ foreach (var seriesId in seriesIds)
{
// Find the preferred language(s) for the movie in the library
var languages = allSeries[seriesId]
@@ -371,7 +370,7 @@ namespace MediaBrowser.Providers.TV
numComplete++;
double percent = numComplete;
- percent /= list.Count;
+ percent /= seriesIds.Count;
percent *= 100;
progress.Report(percent);
diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs
index 395d419cfc..22dab1cd7c 100644
--- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeasonImageProvider.cs
@@ -48,12 +48,12 @@ namespace MediaBrowser.Providers.TV
get { return "TheTVDB"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Season;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -63,7 +63,7 @@ namespace MediaBrowser.Providers.TV
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
var season = (Season)item;
var series = season.Series;
@@ -175,8 +175,7 @@ namespace MediaBrowser.Providers.TV
return 0;
})
.ThenByDescending(i => i.CommunityRating ?? 0)
- .ThenByDescending(i => i.VoteCount ?? 0)
- .ToList();
+ .ThenByDescending(i => i.VoteCount ?? 0);
}
private static void AddImage(XmlReader reader, List<RemoteImageInfo> images, int seasonNumber)
diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs
index d7eea42267..6f3d763e24 100644
--- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs
@@ -49,12 +49,12 @@ namespace MediaBrowser.Providers.TV
get { return "TheTVDB"; }
}
- public bool Supports(IHasImages item)
+ public bool Supports(IHasMetadata item)
{
return item is Series;
}
- public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
+ public IEnumerable<ImageType> GetSupportedImages(IHasMetadata item)
{
return new List<ImageType>
{
@@ -64,7 +64,7 @@ namespace MediaBrowser.Providers.TV
};
}
- public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
+ public async Task<IEnumerable<RemoteImageInfo>> GetImages(IHasMetadata item, CancellationToken cancellationToken)
{
if (TvdbSeriesProvider.IsValidSeries(item.ProviderIds))
{
@@ -169,8 +169,7 @@ namespace MediaBrowser.Providers.TV
return 0;
})
.ThenByDescending(i => i.CommunityRating ?? 0)
- .ThenByDescending(i => i.VoteCount ?? 0)
- .ToList();
+ .ThenByDescending(i => i.VoteCount ?? 0);
}
private void AddImage(XmlReader reader, List<RemoteImageInfo> images)
diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs
index 8a10affb90..d447aff99c 100644
--- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs
@@ -482,7 +482,7 @@ namespace MediaBrowser.Providers.TV
/// <returns>Task{System.String}.</returns>
private async Task<IEnumerable<RemoteSearchResult>> FindSeries(string name, int? year, string language, CancellationToken cancellationToken)
{
- var results = (await FindSeriesInternal(name, language, cancellationToken).ConfigureAwait(false)).ToList();
+ var results = (await FindSeriesInternal(name, language, cancellationToken).ConfigureAwait(false));
if (results.Count == 0)
{
@@ -491,7 +491,7 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrWhiteSpace(nameWithoutYear) && !string.Equals(nameWithoutYear, name, StringComparison.OrdinalIgnoreCase))
{
- results = (await FindSeriesInternal(nameWithoutYear, language, cancellationToken).ConfigureAwait(false)).ToList();
+ results = (await FindSeriesInternal(nameWithoutYear, language, cancellationToken).ConfigureAwait(false));
}
}
@@ -507,7 +507,7 @@ namespace MediaBrowser.Providers.TV
});
}
- private async Task<IEnumerable<RemoteSearchResult>> FindSeriesInternal(string name, string language, CancellationToken cancellationToken)
+ private async Task<List<RemoteSearchResult>> FindSeriesInternal(string name, string language, CancellationToken cancellationToken)
{
var url = string.Format(SeriesSearchUrl, WebUtility.UrlEncode(name), NormalizeLanguage(language));
var searchResults = new List<RemoteSearchResult>();
@@ -1091,26 +1091,26 @@ namespace MediaBrowser.Providers.TV
}
case "Airs_DayOfWeek":
- {
- var val = reader.ReadElementContentAsString();
+ {
+ var val = reader.ReadElementContentAsString();
- if (!string.IsNullOrWhiteSpace(val))
- {
- item.AirDays = TVUtils.GetAirDays(val);
- }
- break;
+ if (!string.IsNullOrWhiteSpace(val))
+ {
+ item.AirDays = TVUtils.GetAirDays(val);
}
+ break;
+ }
case "Airs_Time":
- {
- var val = reader.ReadElementContentAsString();
+ {
+ var val = reader.ReadElementContentAsString();
- if (!string.IsNullOrWhiteSpace(val))
- {
- item.AirTime = val;
- }
- break;
+ if (!string.IsNullOrWhiteSpace(val))
+ {
+ item.AirTime = val;
}
+ break;
+ }
case "ContentRating":
{
@@ -1273,12 +1273,7 @@ namespace MediaBrowser.Providers.TV
if (vals.Count > 0)
{
- item.Studios.Clear();
-
- foreach (var genre in vals)
- {
- item.AddStudio(genre);
- }
+ item.SetStudios(vals);
}
}
diff --git a/MediaBrowser.Providers/TV/TvExternalIds.cs b/MediaBrowser.Providers/TV/TvExternalIds.cs
index d2860a6225..104bcb5ae0 100644
--- a/MediaBrowser.Providers/TV/TvExternalIds.cs
+++ b/MediaBrowser.Providers/TV/TvExternalIds.cs
@@ -96,27 +96,4 @@ namespace MediaBrowser.Providers.TV
return item is Episode;
}
}
-
- public class TvComSeriesExternalId : IExternalId
- {
- public string Name
- {
- get { return "TV.com"; }
- }
-
- public string Key
- {
- get { return MetadataProviders.Tvcom.ToString(); }
- }
-
- public string UrlFormatString
- {
- get { return null; }
- }
-
- public bool Supports(IHasProviderIds item)
- {
- return item is Series;
- }
- }
}
diff --git a/MediaBrowser.Providers/Users/UserMetadataService.cs b/MediaBrowser.Providers/Users/UserMetadataService.cs
index 88df704d6b..694315c180 100644
--- a/MediaBrowser.Providers/Users/UserMetadataService.cs
+++ b/MediaBrowser.Providers/Users/UserMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Users
{
public class UserMetadataService : MetadataService<User, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<User> source, MetadataResult<User> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<User> source, MetadataResult<User> target, 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 a07cc5949a..f493eb31f9 100644
--- a/MediaBrowser.Providers/Videos/VideoMetadataService.cs
+++ b/MediaBrowser.Providers/Videos/VideoMetadataService.cs
@@ -21,7 +21,7 @@ namespace MediaBrowser.Providers.Videos
}
}
- protected override void MergeData(MetadataResult<Video> source, MetadataResult<Video> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Video> source, MetadataResult<Video> target, 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 36c2fd1dd1..7838336562 100644
--- a/MediaBrowser.Providers/Years/YearMetadataService.cs
+++ b/MediaBrowser.Providers/Years/YearMetadataService.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Providers.Years
{
public class YearMetadataService : MetadataService<Year, ItemLookupInfo>
{
- protected override void MergeData(MetadataResult<Year> source, MetadataResult<Year> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings)
+ protected override void MergeData(MetadataResult<Year> source, MetadataResult<Year> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
{
ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
}