diff options
8 files changed, 52 insertions, 17 deletions
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 48a639d4d..a6714f656 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -1059,16 +1059,13 @@ namespace MediaBrowser.Controller.Providers } } - protected async Task FetchChaptersFromXmlNode(BaseItem item, XmlReader reader, IItemRepository repository, CancellationToken cancellationToken) + protected List<ChapterInfo> FetchChaptersFromXmlNode(BaseItem item, XmlReader reader) { - var runtime = item.RunTimeTicks ?? 0; - using (reader) { - var chapters = GetChaptersFromXmlNode(reader) - .Where(i => i.StartPositionTicks >= 0 && i.StartPositionTicks < runtime); - - await repository.SaveChapters(item.Id, chapters, cancellationToken).ConfigureAwait(false); + return GetChaptersFromXmlNode(reader) + .Where(i => i.StartPositionTicks >= 0) + .ToList(); } } diff --git a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs index a7c1e6e1b..1320db67a 100644 --- a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Entities; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -35,10 +36,12 @@ namespace MediaBrowser.Controller.Providers public T Item { get; set; } public List<LocalImageInfo> Images { get; set; } + public List<ChapterInfo> Chapters { get; set; } public LocalMetadataResult() { Images = new List<LocalImageInfo>(); + Chapters = new List<ChapterInfo>(); } } } diff --git a/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs b/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs index efc8db9e7..07b24c57d 100644 --- a/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs +++ b/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs @@ -1,8 +1,10 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Movies; +using System.Collections.Generic; using System.IO; using System.Threading; @@ -20,7 +22,11 @@ namespace MediaBrowser.Providers.AdultVideos protected override void Fetch(LocalMetadataResult<AdultVideo> result, string path, CancellationToken cancellationToken) { - new MovieXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + var chapters = new List<ChapterInfo>(); + + new MovieXmlParser(_logger).Fetch(result.Item, chapters, path, cancellationToken); + + result.Chapters = chapters; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.Providers/Movies/MovieXmlParser.cs b/MediaBrowser.Providers/Movies/MovieXmlParser.cs index 64038e853..52795ac2d 100644 --- a/MediaBrowser.Providers/Movies/MovieXmlParser.cs +++ b/MediaBrowser.Providers/Movies/MovieXmlParser.cs @@ -1,7 +1,9 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using System.Collections.Generic; using System.Threading; using System.Xml; @@ -12,13 +14,20 @@ namespace MediaBrowser.Providers.Movies /// </summary> public class MovieXmlParser : BaseItemXmlParser<Video> { + private List<ChapterInfo> _chaptersFound; + public MovieXmlParser(ILogger logger) : base(logger) { } - public void FetchAsync(Video item, string metadataFile, CancellationToken cancellationToken) + public void Fetch(Video item, + List<ChapterInfo> chapters, + string metadataFile, + CancellationToken cancellationToken) { + _chaptersFound = chapters; + Fetch(item, metadataFile, cancellationToken); } @@ -32,7 +41,6 @@ namespace MediaBrowser.Providers.Movies switch (reader.Name) { case "TmdbCollectionName": - { var val = reader.ReadElementContentAsString(); var movie = item as Movie; @@ -41,13 +49,13 @@ namespace MediaBrowser.Providers.Movies { movie.TmdbCollectionName = val; } - + break; } case "Chapters": - //_chaptersTask = FetchChaptersFromXmlNode(item, reader.ReadSubtree(), _itemRepo, CancellationToken.None); + _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree())); break; default: diff --git a/MediaBrowser.Providers/Movies/MovieXmlProvider.cs b/MediaBrowser.Providers/Movies/MovieXmlProvider.cs index c2534348a..cc7293f53 100644 --- a/MediaBrowser.Providers/Movies/MovieXmlProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieXmlProvider.cs @@ -1,7 +1,9 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using System.Collections.Generic; using System.IO; using System.Threading; @@ -19,7 +21,11 @@ namespace MediaBrowser.Providers.Movies protected override void Fetch(LocalMetadataResult<Movie> result, string path, CancellationToken cancellationToken) { - new MovieXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + var chapters = new List<ChapterInfo>(); + + new MovieXmlParser(_logger).Fetch(result.Item, chapters, path, cancellationToken); + + result.Chapters = chapters; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.Providers/Movies/TrailerXmlProvider.cs b/MediaBrowser.Providers/Movies/TrailerXmlProvider.cs index 7e53c9e7f..d24bdb431 100644 --- a/MediaBrowser.Providers/Movies/TrailerXmlProvider.cs +++ b/MediaBrowser.Providers/Movies/TrailerXmlProvider.cs @@ -1,7 +1,9 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using System.Collections.Generic; using System.IO; using System.Threading; @@ -19,7 +21,11 @@ namespace MediaBrowser.Providers.Movies protected override void Fetch(LocalMetadataResult<Trailer> result, string path, CancellationToken cancellationToken) { - new MovieXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + var chapters = new List<ChapterInfo>(); + + new MovieXmlParser(_logger).Fetch(result.Item, chapters, path, cancellationToken); + + result.Chapters = chapters; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs index 2b2d607ca..20f267885 100644 --- a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs +++ b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs @@ -17,6 +17,7 @@ namespace MediaBrowser.Providers.TV public class EpisodeXmlParser : BaseItemXmlParser<Episode> { private List<LocalImageInfo> _imagesFound; + private List<ChapterInfo> _chaptersFound; public EpisodeXmlParser(ILogger logger) : base(logger) @@ -25,9 +26,14 @@ namespace MediaBrowser.Providers.TV private string _xmlPath; - public void Fetch(Episode item, List<LocalImageInfo> images, string metadataFile, CancellationToken cancellationToken) + public void Fetch(Episode item, + List<LocalImageInfo> images, + List<ChapterInfo> chapters, + string metadataFile, + CancellationToken cancellationToken) { _imagesFound = images; + _chaptersFound = chapters; _xmlPath = metadataFile; Fetch(item, metadataFile, cancellationToken); @@ -46,7 +52,7 @@ namespace MediaBrowser.Providers.TV { case "Chapters": - //_chaptersTask = FetchChaptersFromXmlNode(item, reader.ReadSubtree(), _itemRepo, CancellationToken.None); + _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree())); break; case "Episode": diff --git a/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs b/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs index 44755b18a..3def06bfe 100644 --- a/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs +++ b/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs @@ -1,6 +1,7 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System.Collections.Generic; using System.IO; @@ -21,10 +22,12 @@ namespace MediaBrowser.Providers.TV protected override void Fetch(LocalMetadataResult<Episode> result, string path, CancellationToken cancellationToken) { var images = new List<LocalImageInfo>(); + var chapters = new List<ChapterInfo>(); - new EpisodeXmlParser(_logger).Fetch(result.Item, images, path, cancellationToken); + new EpisodeXmlParser(_logger).Fetch(result.Item, images, chapters, path, cancellationToken); result.Images = images; + result.Chapters = chapters; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) |
