From 3d47b495a96fce84c03d9f3177dc6dbc8a4afa3c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 29 Jun 2014 23:04:50 -0400 Subject: fixes #795 - Support reading Xbmc nfo's --- .../Providers/GameXmlProvider.cs | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs (limited to 'MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs') diff --git a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs new file mode 100644 index 0000000000..681706321b --- /dev/null +++ b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs @@ -0,0 +1,46 @@ +using System.IO; +using System.Threading; +using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; +using MediaBrowser.LocalMetadata.Parsers; +using MediaBrowser.Model.Logging; + +namespace MediaBrowser.LocalMetadata.Providers +{ + public class GameXmlProvider : BaseXmlProvider + { + private readonly ILogger _logger; + + public GameXmlProvider(IFileSystem fileSystem, ILogger logger) + : base(fileSystem) + { + _logger = logger; + } + + protected override void Fetch(LocalMetadataResult result, string path, CancellationToken cancellationToken) + { + new GameXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + } + + protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + { + var fileInfo = FileSystem.GetFileSystemInfo(info.Path); + + var directoryInfo = fileInfo as DirectoryInfo; + + if (directoryInfo == null) + { + directoryInfo = new DirectoryInfo(Path.GetDirectoryName(info.Path)); + } + + var directoryPath = directoryInfo.FullName; + + var specificFile = Path.Combine(directoryPath, Path.GetFileNameWithoutExtension(info.Path) + ".xml"); + + var file = new FileInfo(specificFile); + + return info.IsInMixedFolder || file.Exists ? file : new FileInfo(Path.Combine(directoryPath, "game.xml")); + } + } +} -- cgit v1.2.3