diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-08-04 23:41:56 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-08-04 23:41:56 -0400 |
| commit | c5319bb4ae9606e07d62525a022e5a67f85a7d43 (patch) | |
| tree | 248e5e889e93aa7e2ba2feccf07ca857fe8e6a64 /MediaBrowser.LocalMetadata | |
| parent | 2714127d2b663b735048da6d9def08efa38f2b5f (diff) | |
update playlist xml saving
Diffstat (limited to 'MediaBrowser.LocalMetadata')
8 files changed, 119 insertions, 21 deletions
diff --git a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj index b103d9f5a..6f8cf31d1 100644 --- a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj +++ b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj @@ -54,6 +54,7 @@ <Compile Include="Parsers\GameXmlParser.cs" /> <Compile Include="Parsers\MovieXmlParser.cs" /> <Compile Include="Parsers\MusicVideoXmlParser.cs" /> + <Compile Include="Parsers\PlaylistXmlParser.cs" /> <Compile Include="Parsers\SeasonXmlParser.cs" /> <Compile Include="Parsers\SeriesXmlParser.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> @@ -69,6 +70,7 @@ <Compile Include="Providers\MovieXmlProvider.cs" /> <Compile Include="Providers\MusicVideoXmlProvider.cs" /> <Compile Include="Providers\PersonXmlProvider.cs" /> + <Compile Include="Providers\PlaylistXmlProvider.cs" /> <Compile Include="Providers\SeasonXmlProvider.cs" /> <Compile Include="Providers\SeriesXmlProvider.cs" /> <Compile Include="Providers\TrailerXmlProvider.cs" /> diff --git a/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs index 85a72cf28..f89e29d54 100644 --- a/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs @@ -1,17 +1,14 @@ -using System.Collections.Generic; -using System.Globalization; -using System.Xml; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Logging; +using System.Collections.Generic; +using System.Xml; namespace MediaBrowser.LocalMetadata.Parsers { public class BoxSetXmlParser : BaseItemXmlParser<BoxSet> { - private readonly CultureInfo UsCulture = new CultureInfo("en-US"); - public BoxSetXmlParser(ILogger logger) : base(logger) { diff --git a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs new file mode 100644 index 000000000..83bc6a49e --- /dev/null +++ b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs @@ -0,0 +1,72 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Playlists; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Logging; +using System.Collections.Generic; +using System.Xml; + +namespace MediaBrowser.LocalMetadata.Parsers +{ + public class PlaylistXmlParser : BaseItemXmlParser<Playlist> + { + public PlaylistXmlParser(ILogger logger) + : base(logger) + { + } + + protected override void FetchDataFromXmlNode(XmlReader reader, Playlist item) + { + switch (reader.Name) + { + case "PlaylistItems": + + using (var subReader = reader.ReadSubtree()) + { + FetchFromCollectionItemsNode(subReader, item); + } + break; + + default: + base.FetchDataFromXmlNode(reader, item); + break; + } + } + + private void FetchFromCollectionItemsNode(XmlReader reader, Playlist item) + { + reader.MoveToContent(); + + var list = new List<LinkedChild>(); + + while (reader.Read()) + { + if (reader.NodeType == XmlNodeType.Element) + { + switch (reader.Name) + { + case "PlaylistItem": + { + using (var subReader = reader.ReadSubtree()) + { + var child = GetLinkedChild(subReader); + + if (child != null) + { + list.Add(child); + } + } + + break; + } + + default: + reader.Skip(); + break; + } + } + } + + item.LinkedChildren = list; + } + } +} diff --git a/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs index 871c2bd92..6e40c3594 100644 --- a/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs @@ -1,10 +1,10 @@ -using System.IO; -using System.Threading; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; using MediaBrowser.LocalMetadata.Parsers; using MediaBrowser.Model.Logging; +using System.IO; +using System.Threading; namespace MediaBrowser.LocalMetadata.Providers { diff --git a/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs new file mode 100644 index 000000000..2279ae052 --- /dev/null +++ b/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs @@ -0,0 +1,31 @@ +using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Playlists; +using MediaBrowser.Controller.Providers; +using MediaBrowser.LocalMetadata.Parsers; +using MediaBrowser.Model.Logging; +using System.IO; +using System.Threading; + +namespace MediaBrowser.LocalMetadata.Providers +{ + class PlaylistXmlProvider : BaseXmlProvider<Playlist> + { + private readonly ILogger _logger; + + public PlaylistXmlProvider(IFileSystem fileSystem, ILogger logger) + : base(fileSystem) + { + _logger = logger; + } + + protected override void Fetch(LocalMetadataResult<Playlist> result, string path, CancellationToken cancellationToken) + { + new PlaylistXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + } + + protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + { + return directoryService.GetFile(Path.Combine(info.Path, "playlist.xml")); + } + } +} diff --git a/MediaBrowser.LocalMetadata/Providers/TrailerXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/TrailerXmlProvider.cs index db3b2fcf0..7f96f7d96 100644 --- a/MediaBrowser.LocalMetadata/Providers/TrailerXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/TrailerXmlProvider.cs @@ -1,12 +1,12 @@ -using System.Collections.Generic; -using System.IO; -using System.Threading; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; using MediaBrowser.LocalMetadata.Parsers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using System.Collections.Generic; +using System.IO; +using System.Threading; namespace MediaBrowser.LocalMetadata.Providers { diff --git a/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs index cdb3a2500..abc7e3b3f 100644 --- a/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs @@ -1,6 +1,6 @@ using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Playlists; using System.Collections.Generic; using System.IO; using System.Text; @@ -31,7 +31,7 @@ namespace MediaBrowser.LocalMetadata.Savers return false; } - return item is BoxSet && updateType >= ItemUpdateType.MetadataDownload; + return item is Playlist && updateType >= ItemUpdateType.MetadataImport; } /// <summary> @@ -46,7 +46,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<Item>"); - XmlSaverHelpers.AddCommonNodes((BoxSet)item, builder); + XmlSaverHelpers.AddCommonNodes((Playlist)item, builder); builder.Append("</Item>"); diff --git a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs index 491592989..a007a95cf 100644 --- a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs @@ -717,7 +717,6 @@ namespace MediaBrowser.LocalMetadata.Savers { builder.Append("<" + singularNodeName + ">"); - builder.Append("<Name>" + SecurityElement.Escape(link.ItemName) + "</Name>"); builder.Append("<Type>" + SecurityElement.Escape(link.ItemType) + "</Type>"); if (link.ItemYear.HasValue) @@ -725,10 +724,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<Year>" + SecurityElement.Escape(link.ItemYear.Value.ToString(UsCulture)) + "</Year>"); } - if (link.ItemIndexNumber.HasValue) - { - builder.Append("<IndexNumber>" + SecurityElement.Escape(link.ItemIndexNumber.Value.ToString(UsCulture)) + "</IndexNumber>"); - } + builder.Append("<Path>" + SecurityElement.Escape((link.Path ?? string.Empty)) + "</Path>"); builder.Append("</" + singularNodeName + ">"); } |
