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

View file

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

View file

@ -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)

View file

@ -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:

View file

@ -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)

View file

@ -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)

View file

@ -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":

View file

@ -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)