From 60e2fd4d44ef5dcdcf2ce011bb79b55c148f1259 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 8 Feb 2014 23:52:52 -0500 Subject: [PATCH] support mcm episodes --- MediaBrowser.Controller/Entities/Book.cs | 16 ++++++++-- .../LiveTv/LiveTvProgram.cs | 10 ++++++ .../Providers/ILocalMetadataProvider.cs | 21 ++++++++++-- .../Providers/ItemLookupInfo.cs | 2 +- .../AdultVideos/AdultVideoXmlProvider.cs | 4 +-- .../InternalMetadataFolderImageProvider.cs | 7 ++++ MediaBrowser.Providers/BaseXmlProvider.cs | 8 ++--- .../BoxSets/BoxSetXmlProvider.cs | 4 +-- .../Folders/FolderXmlProvider.cs | 4 +-- .../Games/GameSystemXmlProvider.cs | 4 +-- .../Games/GameXmlProvider.cs | 4 +-- .../LiveTv/ChannelXmlProvider.cs | 4 +-- MediaBrowser.Providers/Manager/ImageSaver.cs | 4 +++ .../Manager/ItemImageProvider.cs | 2 +- .../Manager/MetadataService.cs | 9 ++++-- .../MediaInfo/FFProbeAudioInfo.cs | 9 +++--- .../Movies/MovieDbSearch.cs | 4 +++ .../Movies/MovieXmlProvider.cs | 4 +-- .../Movies/TrailerXmlProvider.cs | 4 +-- .../Music/AlbumXmlProvider.cs | 4 +-- .../Music/ArtistXmlProvider.cs | 4 +-- .../Music/MusicVideoXmlProvider.cs | 4 +-- .../Omdb/OmdbItemProvider.cs | 2 +- .../People/PersonXmlProvider.cs | 4 +-- MediaBrowser.Providers/TV/EpisodeXmlParser.cs | 32 ++++++++++++------- .../TV/EpisodeXmlProvider.cs | 4 +-- .../TV/SeasonXmlProvider.cs | 4 +-- .../TV/SeriesXmlProvider.cs | 4 +-- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +-- 31 files changed, 132 insertions(+), 64 deletions(-) diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs index 85cf60c522..0405fc484e 100644 --- a/MediaBrowser.Controller/Entities/Book.cs +++ b/MediaBrowser.Controller/Entities/Book.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Providers; +using System.Linq; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using System.Collections.Generic; @@ -42,7 +43,18 @@ namespace MediaBrowser.Controller.Entities public BookInfo GetLookupInfo() { - return GetItemLookupInfo(); + var info = GetItemLookupInfo(); + + if (string.IsNullOrEmpty(SeriesName)) + { + info.SeriesName = Parents.Select(i => i.Name).FirstOrDefault(); + } + else + { + info.SeriesName = SeriesName; + } + + return info; } } } diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs index 497cfad671..48041da111 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs @@ -1,6 +1,9 @@ using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.LiveTv; using System; +using System.Threading; +using System.Threading.Tasks; namespace MediaBrowser.Controller.LiveTv { @@ -184,5 +187,12 @@ namespace MediaBrowser.Controller.LiveTv { return "Program"; } + + public override Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) + { + // Avoid library manager and keep out of in-memory cache + // Not great that this class has to know about that, but we'll improve that later. + return ItemRepository.SaveItem(this, cancellationToken); + } } } diff --git a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs index ccb8c1c5fa..a7c1e6e1b8 100644 --- a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs @@ -1,6 +1,7 @@ -using System.Threading; +using MediaBrowser.Controller.Entities; +using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Controller.Entities; namespace MediaBrowser.Controller.Providers { @@ -17,7 +18,7 @@ namespace MediaBrowser.Controller.Providers /// The information. /// The cancellation token. /// Task{MetadataResult{`0}}. - Task> GetMetadata(ItemInfo info, CancellationToken cancellationToken); + Task> GetMetadata(ItemInfo info, CancellationToken cancellationToken); } public class ItemInfo @@ -26,4 +27,18 @@ namespace MediaBrowser.Controller.Providers public bool IsInMixedFolder { get; set; } } + + public class LocalMetadataResult + where T : IHasMetadata + { + public bool HasMetadata { get; set; } + public T Item { get; set; } + + public List Images { get; set; } + + public LocalMetadataResult() + { + Images = new List(); + } + } } diff --git a/MediaBrowser.Controller/Providers/ItemLookupInfo.cs b/MediaBrowser.Controller/Providers/ItemLookupInfo.cs index e8321d0b17..b43654005a 100644 --- a/MediaBrowser.Controller/Providers/ItemLookupInfo.cs +++ b/MediaBrowser.Controller/Providers/ItemLookupInfo.cs @@ -147,7 +147,7 @@ namespace MediaBrowser.Controller.Providers public class BookInfo : ItemLookupInfo { - + public string SeriesName { get; set; } } public class SeasonInfo : ItemLookupInfo diff --git a/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs b/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs index 40f9fded5a..d98989503b 100644 --- a/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs +++ b/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs @@ -18,9 +18,9 @@ namespace MediaBrowser.Providers.AdultVideos _logger = logger; } - protected override void Fetch(AdultVideo item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new MovieXmlParser(_logger).Fetch(item, path, cancellationToken); + new MovieXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs b/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs index 2526160066..a5a714dd8f 100644 --- a/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs +++ b/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using System.Collections.Generic; @@ -28,6 +29,12 @@ namespace MediaBrowser.Providers.All return true; } + // Extracted images will be saved in here + if (item is Audio) + { + return true; + } + var locationType = item.LocationType; if (locationType == LocationType.FileSystem || diff --git a/MediaBrowser.Providers/BaseXmlProvider.cs b/MediaBrowser.Providers/BaseXmlProvider.cs index c0629392d4..60ae8333ab 100644 --- a/MediaBrowser.Providers/BaseXmlProvider.cs +++ b/MediaBrowser.Providers/BaseXmlProvider.cs @@ -13,9 +13,9 @@ namespace MediaBrowser.Providers { protected IFileSystem FileSystem; - public async Task> GetMetadata(ItemInfo info, CancellationToken cancellationToken) + public async Task> GetMetadata(ItemInfo info, CancellationToken cancellationToken) { - var result = new MetadataResult(); + var result = new LocalMetadataResult(); var file = GetXmlFile(info); @@ -32,7 +32,7 @@ namespace MediaBrowser.Providers { result.Item = new T(); - Fetch(result.Item, path, cancellationToken); + Fetch(result, path, cancellationToken); result.HasMetadata = true; } catch (FileNotFoundException) @@ -47,7 +47,7 @@ namespace MediaBrowser.Providers return result; } - protected abstract void Fetch(T item, string path, CancellationToken cancellationToken); + protected abstract void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken); protected BaseXmlProvider(IFileSystem fileSystem) { diff --git a/MediaBrowser.Providers/BoxSets/BoxSetXmlProvider.cs b/MediaBrowser.Providers/BoxSets/BoxSetXmlProvider.cs index a214dff8c1..f3f60abdc4 100644 --- a/MediaBrowser.Providers/BoxSets/BoxSetXmlProvider.cs +++ b/MediaBrowser.Providers/BoxSets/BoxSetXmlProvider.cs @@ -20,9 +20,9 @@ namespace MediaBrowser.Providers.BoxSets _logger = logger; } - protected override void Fetch(BoxSet item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser(_logger).Fetch(item, path, cancellationToken); + new BaseItemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Folders/FolderXmlProvider.cs b/MediaBrowser.Providers/Folders/FolderXmlProvider.cs index 2fc6a82906..612cef79b5 100644 --- a/MediaBrowser.Providers/Folders/FolderXmlProvider.cs +++ b/MediaBrowser.Providers/Folders/FolderXmlProvider.cs @@ -20,9 +20,9 @@ namespace MediaBrowser.Providers.Folders _logger = logger; } - protected override void Fetch(Folder item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser(_logger).Fetch(item, path, cancellationToken); + new BaseItemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Games/GameSystemXmlProvider.cs b/MediaBrowser.Providers/Games/GameSystemXmlProvider.cs index 3e74f4c329..e35d849dba 100644 --- a/MediaBrowser.Providers/Games/GameSystemXmlProvider.cs +++ b/MediaBrowser.Providers/Games/GameSystemXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.Games _logger = logger; } - protected override void Fetch(GameSystem item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new GameSystemXmlParser(_logger).Fetch(item, path, cancellationToken); + new GameSystemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Games/GameXmlProvider.cs b/MediaBrowser.Providers/Games/GameXmlProvider.cs index 644fe3e429..4c09ce1a05 100644 --- a/MediaBrowser.Providers/Games/GameXmlProvider.cs +++ b/MediaBrowser.Providers/Games/GameXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.Games _logger = logger; } - protected override void Fetch(Game item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new GameXmlParser(_logger).Fetch(item, path, cancellationToken); + new GameXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/LiveTv/ChannelXmlProvider.cs b/MediaBrowser.Providers/LiveTv/ChannelXmlProvider.cs index af3de824dd..3d001596be 100644 --- a/MediaBrowser.Providers/LiveTv/ChannelXmlProvider.cs +++ b/MediaBrowser.Providers/LiveTv/ChannelXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.LiveTv _logger = logger; } - protected override void Fetch(LiveTvChannel item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser(_logger).Fetch(item, path, cancellationToken); + new BaseItemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index 1b0ae1b5e9..c9425c5e54 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -345,6 +345,10 @@ namespace MediaBrowser.Providers.Manager // None of the save local conditions passed, so store it in our internal folders if (string.IsNullOrEmpty(path)) { + if (string.IsNullOrEmpty(filename)) + { + filename = "folder"; + } path = Path.Combine(_config.ApplicationPaths.GetInternalMetadataPath(item.Id), filename + extension); } diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index 521f2869b5..95e6d56119 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -262,7 +262,7 @@ namespace MediaBrowser.Providers.Manager return providers; } - private bool MergeImages(IHasImages item, List images) + public bool MergeImages(IHasImages item, List images) { var changed = false; diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index b594c8cc88..f7c2cef945 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -111,7 +111,7 @@ namespace MediaBrowser.Providers.Manager if (providers.Count > 0) { - var result = await RefreshWithProviders(itemOfType, refreshOptions, providers, cancellationToken).ConfigureAwait(false); + var result = await RefreshWithProviders(itemOfType, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false); updateType = updateType | result.UpdateType; refreshResult.AddStatus(result.Status, result.ErrorMessage); @@ -254,7 +254,7 @@ namespace MediaBrowser.Providers.Manager return item is TItemType; } - protected virtual async Task RefreshWithProviders(TItemType item, MetadataRefreshOptions options, List providers, CancellationToken cancellationToken) + protected virtual async Task RefreshWithProviders(TItemType item, MetadataRefreshOptions options, List providers, ItemImageProvider imageService, CancellationToken cancellationToken) { var refreshResult = new RefreshResult { @@ -285,6 +285,11 @@ namespace MediaBrowser.Providers.Manager if (localItem.HasMetadata) { + if (imageService.MergeImages(item, localItem.Images)) + { + refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport; + } + if (!string.IsNullOrEmpty(localItem.Item.Name)) { MergeData(localItem.Item, temp, new List(), !options.ReplaceAllMetadata, true); diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs index 9ed82d5117..56f6c6730a 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs @@ -215,11 +215,12 @@ namespace MediaBrowser.Providers.MediaInfo foreach (var whitelistArtist in GetSplitWhitelist()) { - if (val.IndexOf(whitelistArtist, StringComparison.OrdinalIgnoreCase) != -1) - { - val = val.Replace(whitelistArtist, "|", StringComparison.OrdinalIgnoreCase); + var originalVal = val; + val = val.Replace(whitelistArtist, "|", StringComparison.OrdinalIgnoreCase); - // TODO: Preserve casing from original tag + if (!string.Equals(originalVal, val, StringComparison.OrdinalIgnoreCase)) + { + // TODO: Preserve casing from original value artistsFound.Add(whitelistArtist); } } diff --git a/MediaBrowser.Providers/Movies/MovieDbSearch.cs b/MediaBrowser.Providers/Movies/MovieDbSearch.cs index a15e03aac3..5b178b0a90 100644 --- a/MediaBrowser.Providers/Movies/MovieDbSearch.cs +++ b/MediaBrowser.Providers/Movies/MovieDbSearch.cs @@ -71,6 +71,10 @@ namespace MediaBrowser.Providers.Movies name = name.Replace(".", " "); name = name.Replace("_", " "); name = name.Replace("-", " "); + name = name.Replace("!", " "); + name = name.Replace("?", " "); + + name = name.Trim(); // Search again if the new name is different if (!string.Equals(name, originalName)) diff --git a/MediaBrowser.Providers/Movies/MovieXmlProvider.cs b/MediaBrowser.Providers/Movies/MovieXmlProvider.cs index 8eabc0a2dd..afc0055a78 100644 --- a/MediaBrowser.Providers/Movies/MovieXmlProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.Movies _logger = logger; } - protected override void Fetch(Movie item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new MovieXmlParser(_logger).Fetch(item, path, cancellationToken); + new MovieXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Movies/TrailerXmlProvider.cs b/MediaBrowser.Providers/Movies/TrailerXmlProvider.cs index 52704b151c..044d87a48a 100644 --- a/MediaBrowser.Providers/Movies/TrailerXmlProvider.cs +++ b/MediaBrowser.Providers/Movies/TrailerXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.Movies _logger = logger; } - protected override void Fetch(Trailer item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new MovieXmlParser(_logger).Fetch(item, path, cancellationToken); + new MovieXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Music/AlbumXmlProvider.cs b/MediaBrowser.Providers/Music/AlbumXmlProvider.cs index 06a1ed121d..18e59fe68b 100644 --- a/MediaBrowser.Providers/Music/AlbumXmlProvider.cs +++ b/MediaBrowser.Providers/Music/AlbumXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.Music _logger = logger; } - protected override void Fetch(MusicAlbum item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser(_logger).Fetch(item, path, cancellationToken); + new BaseItemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Music/ArtistXmlProvider.cs b/MediaBrowser.Providers/Music/ArtistXmlProvider.cs index 921cbc8b94..f6da70702f 100644 --- a/MediaBrowser.Providers/Music/ArtistXmlProvider.cs +++ b/MediaBrowser.Providers/Music/ArtistXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.Music _logger = logger; } - protected override void Fetch(MusicArtist item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser(_logger).Fetch(item, path, cancellationToken); + new BaseItemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Music/MusicVideoXmlProvider.cs b/MediaBrowser.Providers/Music/MusicVideoXmlProvider.cs index ec763c8524..3911777c1c 100644 --- a/MediaBrowser.Providers/Music/MusicVideoXmlProvider.cs +++ b/MediaBrowser.Providers/Music/MusicVideoXmlProvider.cs @@ -19,9 +19,9 @@ namespace MediaBrowser.Providers.Music _logger = logger; } - protected override void Fetch(MusicVideo item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new MusicVideoXmlParser(_logger).Fetch(item, path, cancellationToken); + new MusicVideoXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs index ad985943f3..5ef747674f 100644 --- a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs @@ -24,7 +24,7 @@ namespace MediaBrowser.Providers.Omdb public string Name { - get { return "OMDb"; } + get { return "IMDb via The Open Movie Database"; } } public Task FetchAsync(Series item, CancellationToken cancellationToken) diff --git a/MediaBrowser.Providers/People/PersonXmlProvider.cs b/MediaBrowser.Providers/People/PersonXmlProvider.cs index 0996615d3b..9248e1b670 100644 --- a/MediaBrowser.Providers/People/PersonXmlProvider.cs +++ b/MediaBrowser.Providers/People/PersonXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.People _logger = logger; } - protected override void Fetch(Person item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser(_logger).Fetch(item, path, cancellationToken); + new BaseItemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs index 16d03f7b4c..ee78c37776 100644 --- a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs +++ b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; +using System.Collections.Generic; using System.Globalization; using System.IO; using System.Threading; @@ -15,14 +16,18 @@ namespace MediaBrowser.Providers.TV /// public class EpisodeXmlParser : BaseItemXmlParser { + private List _imagesFound; + public EpisodeXmlParser(ILogger logger) : base(logger) { } - public void FetchAsync(Episode item, string metadataFile, CancellationToken cancellationToken) + public void Fetch(Episode item, List images, string metadataFile, CancellationToken cancellationToken) { - Fetch(item, metadataFile, cancellationToken); + _imagesFound = images; + + Fetch(item, metadataFile, cancellationToken); } private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); @@ -66,17 +71,22 @@ namespace MediaBrowser.Providers.TV if (!string.IsNullOrWhiteSpace(filename)) { - //// Strip off everything but the filename. Some metadata tools like MetaBrowser v1.0 will have an 'episodes' prefix - //// even though it's actually using the metadata folder. - //filename = Path.GetFileName(filename); + // Strip off everything but the filename. Some metadata tools like MetaBrowser v1.0 will have an 'episodes' prefix + // even though it's actually using the metadata folder. + filename = Path.GetFileName(filename); - //var seasonFolder = Path.GetDirectoryName(item.Path); - //filename = Path.Combine(seasonFolder, "metadata", filename); + var parentFolder = Path.GetDirectoryName(item.Path); + filename = Path.Combine(parentFolder, "metadata", filename); + var file = new FileInfo(filename); - //if (File.Exists(filename)) - //{ - // item.SetImagePath(ImageType.Primary, 0, filename); - //} + if (file.Exists) + { + _imagesFound.Add(new LocalImageInfo + { + Type = ImageType.Primary, + FileInfo = file + }); + } } break; } diff --git a/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs b/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs index b1f8ef9767..18330e80f3 100644 --- a/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs +++ b/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs @@ -17,9 +17,9 @@ namespace MediaBrowser.Providers.TV _logger = logger; } - protected override void Fetch(Episode item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new EpisodeXmlParser(_logger).Fetch(item, path, cancellationToken); + new EpisodeXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/TV/SeasonXmlProvider.cs b/MediaBrowser.Providers/TV/SeasonXmlProvider.cs index f9fe451207..07bec8dc95 100644 --- a/MediaBrowser.Providers/TV/SeasonXmlProvider.cs +++ b/MediaBrowser.Providers/TV/SeasonXmlProvider.cs @@ -20,9 +20,9 @@ namespace MediaBrowser.Providers.TV _logger = logger; } - protected override void Fetch(Season item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser(_logger).Fetch(item, path, cancellationToken); + new BaseItemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/MediaBrowser.Providers/TV/SeriesXmlProvider.cs b/MediaBrowser.Providers/TV/SeriesXmlProvider.cs index 4dfaa39257..3a0c7f9d78 100644 --- a/MediaBrowser.Providers/TV/SeriesXmlProvider.cs +++ b/MediaBrowser.Providers/TV/SeriesXmlProvider.cs @@ -20,9 +20,9 @@ namespace MediaBrowser.Providers.TV _logger = logger; } - protected override void Fetch(Series item, string path, CancellationToken cancellationToken) + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) { - new SeriesXmlParser(_logger).Fetch(item, path, cancellationToken); + new SeriesXmlParser(_logger).Fetch(result.Item, path, cancellationToken); } protected override FileInfo GetXmlFile(ItemInfo info) diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 55091bb24d..d24b1425a1 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.322 + 3.0.324 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index a9f000a1d2..92939185f5 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.322 + 3.0.324 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index f54f3d1da0..c208cb7258 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.322 + 3.0.324 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - +