save chapters in xml (not being read yet).

This commit is contained in:
Luke Pulverenti 2014-05-14 16:55:16 -04:00
parent 4b585e3148
commit b6798f3370
8 changed files with 52 additions and 17 deletions

View file

@ -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) using (reader)
{ {
var chapters = GetChaptersFromXmlNode(reader) return GetChaptersFromXmlNode(reader)
.Where(i => i.StartPositionTicks >= 0 && i.StartPositionTicks < runtime); .Where(i => i.StartPositionTicks >= 0)
.ToList();
await repository.SaveChapters(item.Id, chapters, cancellationToken).ConfigureAwait(false);
} }
} }

View file

@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -35,10 +36,12 @@ namespace MediaBrowser.Controller.Providers
public T Item { get; set; } public T Item { get; set; }
public List<LocalImageInfo> Images { get; set; } public List<LocalImageInfo> Images { get; set; }
public List<ChapterInfo> Chapters { get; set; }
public LocalMetadataResult() public LocalMetadataResult()
{ {
Images = new List<LocalImageInfo>(); Images = new List<LocalImageInfo>();
Chapters = new List<ChapterInfo>();
} }
} }
} }

View file

@ -1,8 +1,10 @@
using MediaBrowser.Common.IO; using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using MediaBrowser.Providers.Movies; using MediaBrowser.Providers.Movies;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Threading; using System.Threading;
@ -20,7 +22,11 @@ namespace MediaBrowser.Providers.AdultVideos
protected override void Fetch(LocalMetadataResult<AdultVideo> result, string path, CancellationToken cancellationToken) 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) protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)

View file

@ -1,7 +1,9 @@
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Xml; using System.Xml;
@ -12,13 +14,20 @@ namespace MediaBrowser.Providers.Movies
/// </summary> /// </summary>
public class MovieXmlParser : BaseItemXmlParser<Video> public class MovieXmlParser : BaseItemXmlParser<Video>
{ {
private List<ChapterInfo> _chaptersFound;
public MovieXmlParser(ILogger logger) public MovieXmlParser(ILogger logger)
: base(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); Fetch(item, metadataFile, cancellationToken);
} }
@ -32,7 +41,6 @@ namespace MediaBrowser.Providers.Movies
switch (reader.Name) switch (reader.Name)
{ {
case "TmdbCollectionName": case "TmdbCollectionName":
{ {
var val = reader.ReadElementContentAsString(); var val = reader.ReadElementContentAsString();
var movie = item as Movie; var movie = item as Movie;
@ -47,7 +55,7 @@ namespace MediaBrowser.Providers.Movies
case "Chapters": case "Chapters":
//_chaptersTask = FetchChaptersFromXmlNode(item, reader.ReadSubtree(), _itemRepo, CancellationToken.None); _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree()));
break; break;
default: default:

View file

@ -1,7 +1,9 @@
using MediaBrowser.Common.IO; using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Threading; using System.Threading;
@ -19,7 +21,11 @@ namespace MediaBrowser.Providers.Movies
protected override void Fetch(LocalMetadataResult<Movie> result, string path, CancellationToken cancellationToken) 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) protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)

View file

@ -1,7 +1,9 @@
using MediaBrowser.Common.IO; using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Threading; using System.Threading;
@ -19,7 +21,11 @@ namespace MediaBrowser.Providers.Movies
protected override void Fetch(LocalMetadataResult<Trailer> result, string path, CancellationToken cancellationToken) 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) protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)

View file

@ -17,6 +17,7 @@ namespace MediaBrowser.Providers.TV
public class EpisodeXmlParser : BaseItemXmlParser<Episode> public class EpisodeXmlParser : BaseItemXmlParser<Episode>
{ {
private List<LocalImageInfo> _imagesFound; private List<LocalImageInfo> _imagesFound;
private List<ChapterInfo> _chaptersFound;
public EpisodeXmlParser(ILogger logger) public EpisodeXmlParser(ILogger logger)
: base(logger) : base(logger)
@ -25,9 +26,14 @@ namespace MediaBrowser.Providers.TV
private string _xmlPath; 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; _imagesFound = images;
_chaptersFound = chapters;
_xmlPath = metadataFile; _xmlPath = metadataFile;
Fetch(item, metadataFile, cancellationToken); Fetch(item, metadataFile, cancellationToken);
@ -46,7 +52,7 @@ namespace MediaBrowser.Providers.TV
{ {
case "Chapters": case "Chapters":
//_chaptersTask = FetchChaptersFromXmlNode(item, reader.ReadSubtree(), _itemRepo, CancellationToken.None); _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree()));
break; break;
case "Episode": case "Episode":

View file

@ -1,6 +1,7 @@
using MediaBrowser.Common.IO; using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
@ -21,10 +22,12 @@ namespace MediaBrowser.Providers.TV
protected override void Fetch(LocalMetadataResult<Episode> result, string path, CancellationToken cancellationToken) protected override void Fetch(LocalMetadataResult<Episode> result, string path, CancellationToken cancellationToken)
{ {
var images = new List<LocalImageInfo>(); 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.Images = images;
result.Chapters = chapters;
} }
protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)