mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-03-02 00:12:24 +00:00
update playlist xml saving
This commit is contained in:
@@ -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" />
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
72
MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs
Normal file
72
MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs
Normal file
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
{
|
||||
|
||||
31
MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs
Normal file
31
MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs
Normal file
@@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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>");
|
||||
|
||||
|
||||
@@ -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 + ">");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user