diff options
Diffstat (limited to 'MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs')
| -rw-r--r-- | MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs new file mode 100644 index 000000000..dff3c1c07 --- /dev/null +++ b/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using System.IO; +using System.Threading; +using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; +using MediaBrowser.LocalMetadata.Parsers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; + +namespace MediaBrowser.LocalMetadata.Providers +{ + public class EpisodeXmlProvider : BaseXmlProvider<Episode>, IHasOrder + { + private readonly ILogger _logger; + + public EpisodeXmlProvider(IFileSystem fileSystem, ILogger logger) + : base(fileSystem) + { + _logger = logger; + } + + 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, chapters, path, cancellationToken); + + result.Images = images; + result.Chapters = chapters; + } + + protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + { + var metadataPath = Path.GetDirectoryName(info.Path); + metadataPath = Path.Combine(metadataPath, "metadata"); + + var metadataFile = Path.Combine(metadataPath, Path.ChangeExtension(Path.GetFileName(info.Path), ".xml")); + + return directoryService.GetFile(metadataFile); + } + + public int Order + { + get + { + // After Xbmc + return 1; + } + } + } +} |
