diff options
Diffstat (limited to 'MediaBrowser.XbmcMetadata')
4 files changed, 46 insertions, 36 deletions
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 11cb25ab8..868c667f6 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -122,13 +122,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { var endingXml = xml.Substring(index); - var imdbId = endingXml.Split('/') - .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); - - if (!string.IsNullOrWhiteSpace(imdbId)) - { - item.SetProviderId(MetadataProviders.Imdb, imdbId); - } + ParseProviderLinks(item, endingXml); // If the file is just an imdb url, don't go any further if (index == 0) @@ -142,13 +136,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { // If the file is just an Imdb url, handle that - var imdbId = xml.Split('/') - .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); - - if (!string.IsNullOrWhiteSpace(imdbId)) - { - item.SetProviderId(MetadataProviders.Imdb, imdbId); - } + ParseProviderLinks(item, xml); return; } @@ -181,6 +169,20 @@ namespace MediaBrowser.XbmcMetadata.Parsers } } + private void ParseProviderLinks(T item, string xml) + { + var imdbId = xml.Split('/') + .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); + + if (!string.IsNullOrWhiteSpace(imdbId)) + { + item.SetProviderId(MetadataProviders.Imdb, imdbId); + } + + // TODO: Support Tmdb + // http://www.themoviedb.org/movie/36557 + } + protected virtual void FetchDataFromXmlNode(XmlReader reader, T item, List<UserItemData> userDataList) { var userDataUserId = _config.GetNfoConfiguration().UserId; @@ -952,6 +954,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers var userData = GetOrAdd(userDataList, userDataUserId); userData.PlayCount = parsedValue; + + if (parsedValue > 0) + { + userData.Played = true; + } } } } diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs index 1ee1b4241..1e82dfce7 100644 --- a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs @@ -59,7 +59,7 @@ namespace MediaBrowser.XbmcMetadata.Providers public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) { - var file = GetXmlFile(new ItemInfo { IsInMixedFolder = item.IsInMixedFolder, Path = item.Path }, directoryService); + var file = GetXmlFile(new ItemInfo(item), directoryService); if (file == null) { diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs index 8119c162c..4dff051c7 100644 --- a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs @@ -5,8 +5,10 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.XbmcMetadata.Parsers; +using MediaBrowser.XbmcMetadata.Savers; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading; namespace MediaBrowser.XbmcMetadata.Providers @@ -35,21 +37,9 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) { - var path = GetMovieSavePath(info, FileSystem); - - return directoryService.GetFile(path); - } - - public static string GetMovieSavePath(ItemInfo item, IFileSystem fileSystem) - { - if (Directory.Exists(item.Path)) - { - var path = item.Path; - - return Path.Combine(path, Path.GetFileName(path) + ".nfo"); - } - - return Path.ChangeExtension(item.Path, ".nfo"); + return MovieNfoSaver.GetMovieSavePaths(info, FileSystem) + .Select(directoryService.GetFile) + .FirstOrDefault(i => i != null); } } }
\ No newline at end of file diff --git a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs index e67aa42c7..ddbd528d9 100644 --- a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs @@ -4,10 +4,12 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Xml; namespace MediaBrowser.XbmcMetadata.Savers @@ -20,21 +22,32 @@ namespace MediaBrowser.XbmcMetadata.Savers protected override string GetLocalSavePath(IHasMetadata item) { - return GetMovieSavePath(item, FileSystem); + return GetMovieSavePaths(new ItemInfo(item), FileSystem).FirstOrDefault(); } - public static string GetMovieSavePath(IHasMetadata item, IFileSystem fileSystem) + public static List<string> GetMovieSavePaths(ItemInfo item, IFileSystem fileSystem) { - var video = (Video)item; + var list = new List<string>(); - if (video.VideoType == VideoType.Dvd || video.VideoType == VideoType.BluRay || video.VideoType == VideoType.HdDvd) + if (item.VideoType == VideoType.Dvd) { var path = item.ContainingFolderPath; - return Path.Combine(path, Path.GetFileName(path) + ".nfo"); + list.Add(Path.Combine(path, "VIDEO_TS", "VIDEO_TS.nfo")); } - return Path.ChangeExtension(item.Path, ".nfo"); + if (item.VideoType == VideoType.Dvd || item.VideoType == VideoType.BluRay || item.VideoType == VideoType.HdDvd) + { + var path = item.ContainingFolderPath; + + list.Add(Path.Combine(path, Path.GetFileName(path) + ".nfo")); + } + else + { + list.Add(Path.ChangeExtension(item.Path, ".nfo")); + } + + return list; } protected override string GetRootElementName(IHasMetadata item) |
