diff options
Diffstat (limited to 'MediaBrowser.XbmcMetadata')
12 files changed, 66 insertions, 93 deletions
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 868c667f6..ad514492d 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Extensions; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Entities; @@ -42,12 +43,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches metadata for an item from one xml file /// </summary> /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> /// <param name="metadataFile">The metadata file.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <exception cref="System.ArgumentNullException"> /// </exception> - public void Fetch(T item, List<UserItemData> userDataList, string metadataFile, CancellationToken cancellationToken) + public void Fetch(LocalMetadataResult<T> item, string metadataFile, CancellationToken cancellationToken) { if (item == null) { @@ -67,7 +67,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers ValidationType = ValidationType.None }; - Fetch(item, userDataList, metadataFile, settings, cancellationToken); + Fetch(item, metadataFile, settings, cancellationToken); } protected virtual bool SupportsUrlAfterClosingXmlTag @@ -79,11 +79,10 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the specified item. /// </summary> /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> /// <param name="metadataFile">The metadata file.</param> /// <param name="settings">The settings.</param> /// <param name="cancellationToken">The cancellation token.</param> - private void Fetch(T item, List<UserItemData> userDataList, string metadataFile, XmlReaderSettings settings, CancellationToken cancellationToken) + private void Fetch(LocalMetadataResult<T> item, string metadataFile, XmlReaderSettings settings, CancellationToken cancellationToken) { if (!SupportsUrlAfterClosingXmlTag) { @@ -101,7 +100,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (reader.NodeType == XmlNodeType.Element) { - FetchDataFromXmlNode(reader, item, userDataList); + FetchDataFromXmlNode(reader, item); } } } @@ -122,7 +121,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { var endingXml = xml.Substring(index); - ParseProviderLinks(item, endingXml); + ParseProviderLinks(item.Item, endingXml); // If the file is just an imdb url, don't go any further if (index == 0) @@ -136,7 +135,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { // If the file is just an Imdb url, handle that - ParseProviderLinks(item, xml); + ParseProviderLinks(item.Item, xml); return; } @@ -160,7 +159,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (reader.NodeType == XmlNodeType.Element) { - FetchDataFromXmlNode(reader, item, userDataList); + FetchDataFromXmlNode(reader, item); } } } @@ -183,8 +182,10 @@ namespace MediaBrowser.XbmcMetadata.Parsers // http://www.themoviedb.org/movie/36557 } - protected virtual void FetchDataFromXmlNode(XmlReader reader, T item, List<UserItemData> userDataList) + protected virtual void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<T> itemResult) { + var item = itemResult.Item; + var userDataUserId = _config.GetNfoConfiguration().UserId; switch (reader.Name) @@ -573,7 +574,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } break; } @@ -592,7 +593,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } } break; @@ -606,7 +607,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } break; } @@ -617,7 +618,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { var person = GetPersonFromXmlNode(subtree); - item.AddPerson(person); + PeopleHelper.AddPerson(itemResult.People, person); } break; } @@ -931,7 +932,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.Played = parsedValue; } @@ -951,7 +952,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.PlayCount = parsedValue; @@ -976,7 +977,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.LastPlayedDate = parsedValue; } @@ -991,7 +992,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); FetchFromResumeNode(subtree, item, userData); } @@ -1010,7 +1011,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.IsFavorite = parsedValue; } @@ -1030,7 +1031,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.Rating = parsedValue; } diff --git a/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs index 42a60276b..355f19de7 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs @@ -2,7 +2,6 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; @@ -14,26 +13,16 @@ namespace MediaBrowser.XbmcMetadata.Parsers { public class EpisodeNfoParser : BaseNfoParser<Episode> { - private List<LocalImageInfo> _imagesFound; - private List<ChapterInfo> _chaptersFound; - private string _xmlPath; - public EpisodeNfoParser(ILogger logger, IConfigurationManager config) : base(logger, config) { } - public void Fetch(Episode item, - List<UserItemData> userDataList, + public void Fetch(LocalMetadataResult<Episode> item, List<LocalImageInfo> images, - List<ChapterInfo> chapters, string metadataFile, CancellationToken cancellationToken) { - _imagesFound = images; - _chaptersFound = chapters; - _xmlPath = metadataFile; - - Fetch(item, userDataList, metadataFile, cancellationToken); + Fetch(item, metadataFile, cancellationToken); } private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); @@ -42,17 +31,13 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Episode item, List<UserItemData> userDataList) + /// <param name="itemResult">The item result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<Episode> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { - //case "Chapters": - - // _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree())); - // break; - case "season": { var number = reader.ReadElementContentAsString(); @@ -206,7 +191,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers default: - base.FetchDataFromXmlNode(reader, item, userDataList); + base.FetchDataFromXmlNode(reader, itemResult); break; } } diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs index 2a275320f..ab4619875 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs @@ -1,33 +1,20 @@ using MediaBrowser.Common.Configuration; 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; namespace MediaBrowser.XbmcMetadata.Parsers { class MovieNfoParser : BaseNfoParser<Video> { - private List<ChapterInfo> _chaptersFound; - public MovieNfoParser(ILogger logger, IConfigurationManager config) : base(logger, config) { } - public void Fetch(Video item, - List<UserItemData> userDataList, - List<ChapterInfo> chapters, - string metadataFile, - CancellationToken cancellationToken) - { - _chaptersFound = chapters; - - Fetch(item, userDataList, metadataFile, cancellationToken); - } - protected override bool SupportsUrlAfterClosingXmlTag { get @@ -40,10 +27,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Video item, List<UserItemData> userDataList) + /// <param name="itemResult">The item result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<Video> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { case "id": @@ -93,13 +81,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers break; } - //case "chapter": - - // _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree())); - // break; - default: - base.FetchDataFromXmlNode(reader, item, userDataList); + base.FetchDataFromXmlNode(reader, itemResult); break; } } diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeasonNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeasonNfoParser.cs index 1ea0053b3..c80684c41 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeasonNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeasonNfoParser.cs @@ -1,8 +1,7 @@ using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Logging; -using System.Collections.Generic; using System.Globalization; using System.Xml; @@ -18,10 +17,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Season item, List<UserItemData> userDataList) + /// <param name="itemResult">The item result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<Season> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { case "seasonnumber": @@ -41,7 +41,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers } default: - base.FetchDataFromXmlNode(reader, item, userDataList); + base.FetchDataFromXmlNode(reader, itemResult); break; } } diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 2e8b07695..5025f4d18 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; @@ -20,10 +21,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Series item, List<UserItemData> userDataList) + /// <param name="itemResult">The item result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<Series> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { case "id": @@ -88,7 +90,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers } default: - base.FetchDataFromXmlNode(reader, item, userDataList); + base.FetchDataFromXmlNode(reader, itemResult); break; } } diff --git a/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs index 9567de2b8..ac76db771 100644 --- a/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<MusicAlbum> result, string path, CancellationToken cancellationToken) { - new BaseNfoParser<MusicAlbum>(_logger, _config).Fetch(result.Item, result.UserDataLIst, path, cancellationToken); + new BaseNfoParser<MusicAlbum>(_logger, _config).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs index 1f9c78b56..8a958c3a6 100644 --- a/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<MusicArtist> result, string path, CancellationToken cancellationToken) { - new BaseNfoParser<MusicArtist>(_logger, _config).Fetch(result.Item, result.UserDataLIst, path, cancellationToken); + new BaseNfoParser<MusicArtist>(_logger, _config).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs index 4dff051c7..79315cbf3 100644 --- a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs @@ -2,11 +2,9 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; 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; @@ -28,11 +26,15 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<T> result, string path, CancellationToken cancellationToken) { - var chapters = new List<ChapterInfo>(); + var tmpItem = new LocalMetadataResult<Video> + { + Item = result.Item + }; + new MovieNfoParser(_logger, _config).Fetch(tmpItem, path, cancellationToken); - new MovieNfoParser(_logger, _config).Fetch(result.Item, result.UserDataLIst, chapters, path, cancellationToken); - - result.Chapters = chapters; + result.Item = (T)tmpItem.Item; + result.People = tmpItem.People; + result.UserDataLIst = tmpItem.UserDataLIst; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs index 2d4bb4ddc..2b5cfe9a3 100644 --- a/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs @@ -26,12 +26,10 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<Episode> result, string path, CancellationToken cancellationToken) { var images = new List<LocalImageInfo>(); - var chapters = new List<ChapterInfo>(); - new EpisodeNfoParser(_logger, _config).Fetch(result.Item, result.UserDataLIst, images, chapters, path, cancellationToken); + new EpisodeNfoParser(_logger, _config).Fetch(result, images, path, cancellationToken); result.Images = images; - result.Chapters = chapters; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs index 1be67c310..85c2d4305 100644 --- a/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<Season> result, string path, CancellationToken cancellationToken) { - new SeasonNfoParser(_logger, _config).Fetch(result.Item, result.UserDataLIst, path, cancellationToken); + new SeasonNfoParser(_logger, _config).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs index b415571e3..e2ac866ef 100644 --- a/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<Series> result, string path, CancellationToken cancellationToken) { - new SeriesNfoParser(_logger, _config).Fetch(result.Item, result.UserDataLIst, path, cancellationToken); + new SeriesNfoParser(_logger, _config).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 9cde958c4..b6f497a76 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -472,7 +472,9 @@ namespace MediaBrowser.XbmcMetadata.Savers } } - var directors = item.People + var people = libraryManager.GetPeople(item); + + var directors = people .Where(i => IsPersonType(i, PersonType.Director)) .Select(i => i.Name) .ToList(); @@ -482,7 +484,7 @@ namespace MediaBrowser.XbmcMetadata.Savers writer.WriteElementString("director", person); } - var writers = item.People + var writers = people .Where(i => IsPersonType(i, PersonType.Writer)) .Select(i => i.Name) .Distinct(StringComparer.OrdinalIgnoreCase) @@ -820,7 +822,7 @@ namespace MediaBrowser.XbmcMetadata.Savers AddUserData(item, writer, userManager, userDataRepo, options); - AddActors(item, writer, libraryManager, fileSystem, config); + AddActors(people, writer, libraryManager, fileSystem, config); var folder = item as BoxSet; if (folder != null) @@ -948,9 +950,9 @@ namespace MediaBrowser.XbmcMetadata.Savers writer.WriteEndElement(); } - private static void AddActors(BaseItem item, XmlWriter writer, ILibraryManager libraryManager, IFileSystem fileSystem, IServerConfigurationManager config) + private static void AddActors(List<PersonInfo> people, XmlWriter writer, ILibraryManager libraryManager, IFileSystem fileSystem, IServerConfigurationManager config) { - var actors = item.People + var actors = people .Where(i => !IsPersonType(i, PersonType.Director) && !IsPersonType(i, PersonType.Writer)) .ToList(); |
