From 4b585e3148fe1341d7c1075ba4e3760dcd039981 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 14 May 2014 16:43:31 -0400 Subject: [PATCH 01/10] save chapters in xml --- .../MediaInfo/FFProbeVideoInfo.cs | 4 ++- .../Savers/XmlSaverHelpers.cs | 33 +++++++++++-------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs index 47a441a4d6..76b0818fe9 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs @@ -255,7 +255,9 @@ namespace MediaBrowser.Providers.MediaInfo } } - info.StartPositionTicks = chapter.start / 100; + // Limit accuracy to milliseconds to match xml saving + var ms = Math.Round(TimeSpan.FromTicks(chapter.start / 100).TotalMilliseconds); + info.StartPositionTicks = TimeSpan.FromMilliseconds(ms).Ticks; return info; } diff --git a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs index 6d681197e5..679a1f5303 100644 --- a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs @@ -636,22 +636,27 @@ namespace MediaBrowser.Providers.Savers { var video = item as Video; - if (video != null && video.Video3DFormat.HasValue) + if (video != null) { - switch (video.Video3DFormat.Value) + AddChapters(video, builder, itemRepository); + + if (video.Video3DFormat.HasValue) { - case Video3DFormat.FullSideBySide: - builder.Append("FSBS"); - break; - case Video3DFormat.FullTopAndBottom: - builder.Append("FTAB"); - break; - case Video3DFormat.HalfSideBySide: - builder.Append("HSBS"); - break; - case Video3DFormat.HalfTopAndBottom: - builder.Append("HTAB"); - break; + switch (video.Video3DFormat.Value) + { + case Video3DFormat.FullSideBySide: + builder.Append("FSBS"); + break; + case Video3DFormat.FullTopAndBottom: + builder.Append("FTAB"); + break; + case Video3DFormat.HalfSideBySide: + builder.Append("HSBS"); + break; + case Video3DFormat.HalfTopAndBottom: + builder.Append("HTAB"); + break; + } } } } From b6798f33700e7376ab616cb09b345c30a21f6feb Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 14 May 2014 16:55:16 -0400 Subject: [PATCH 02/10] save chapters in xml (not being read yet). --- .../Providers/BaseItemXmlParser.cs | 11 ++++------- .../Providers/ILocalMetadataProvider.cs | 3 +++ .../AdultVideos/AdultVideoXmlProvider.cs | 8 +++++++- MediaBrowser.Providers/Movies/MovieXmlParser.cs | 16 ++++++++++++---- .../Movies/MovieXmlProvider.cs | 8 +++++++- .../Movies/TrailerXmlProvider.cs | 8 +++++++- MediaBrowser.Providers/TV/EpisodeXmlParser.cs | 10 ++++++++-- MediaBrowser.Providers/TV/EpisodeXmlProvider.cs | 5 ++++- 8 files changed, 52 insertions(+), 17 deletions(-) diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 48a639d4d4..a6714f6561 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 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 a7c1e6e1b8..1320db67a0 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 Images { get; set; } + public List Chapters { get; set; } public LocalMetadataResult() { Images = new List(); + Chapters = new List(); } } } diff --git a/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs b/MediaBrowser.Providers/AdultVideos/AdultVideoXmlProvider.cs index efc8db9e7f..07b24c57d6 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 result, string path, CancellationToken cancellationToken) { - new MovieXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + var chapters = new List(); + + 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 64038e8537..52795ac2d7 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 /// public class MovieXmlParser : BaseItemXmlParser