mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-09 07:10:34 +02:00
save chapters in xml (not being read yet).
This commit is contained in:
parent
4b585e3148
commit
b6798f3370
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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":
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue