Sfoglia il codice sorgente

save chapters in xml (not being read yet).

Luke Pulverenti 11 anni fa
parent
commit
b6798f3370

+ 4 - 7
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();
             }
         }
 

+ 3 - 0
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>();
         }
     }
 }

+ 7 - 1
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)

+ 12 - 4
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:

+ 7 - 1
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)

+ 7 - 1
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)

+ 8 - 2
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":

+ 4 - 1
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)