mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-21 21:20:39 +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)
|
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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":
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue