mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-20 17:14:42 +01:00
fixes #887 - Support ttml subtitle output
This commit is contained in:
@@ -18,6 +18,20 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||
{
|
||||
switch (reader.Name)
|
||||
{
|
||||
case "OwnerUserId":
|
||||
{
|
||||
item.OwnerUserId = reader.ReadElementContentAsString();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "PlaylistMediaType":
|
||||
{
|
||||
item.PlaylistMediaType = reader.ReadElementContentAsString();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "PlaylistItems":
|
||||
|
||||
using (var subReader = reader.ReadSubtree())
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using System.Security;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Playlists;
|
||||
using System.Collections.Generic;
|
||||
@@ -42,17 +43,34 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||
/// <returns>Task.</returns>
|
||||
public void Save(IHasMetadata item, CancellationToken cancellationToken)
|
||||
{
|
||||
var playlist = (Playlist)item;
|
||||
|
||||
var builder = new StringBuilder();
|
||||
|
||||
builder.Append("<Item>");
|
||||
|
||||
XmlSaverHelpers.AddCommonNodes((Playlist)item, builder);
|
||||
if (!string.IsNullOrEmpty(playlist.OwnerUserId))
|
||||
{
|
||||
builder.Append("<OwnerUserId>" + SecurityElement.Escape(playlist.OwnerUserId) + "</OwnerUserId>");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(playlist.PlaylistMediaType))
|
||||
{
|
||||
builder.Append("<PlaylistMediaType>" + SecurityElement.Escape(playlist.PlaylistMediaType) + "</PlaylistMediaType>");
|
||||
}
|
||||
|
||||
XmlSaverHelpers.AddCommonNodes(playlist, builder);
|
||||
|
||||
builder.Append("</Item>");
|
||||
|
||||
var xmlFilePath = GetSavePath(item);
|
||||
|
||||
XmlSaverHelpers.Save(builder, xmlFilePath, new List<string> { });
|
||||
XmlSaverHelpers.Save(builder, xmlFilePath, new List<string>
|
||||
{
|
||||
"OwnerUserId",
|
||||
"PlaylistMediaType"
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -704,7 +704,7 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||
public static void AddLinkedChildren(Folder item, StringBuilder builder, string pluralNodeName, string singularNodeName)
|
||||
{
|
||||
var items = item.LinkedChildren
|
||||
.Where(i => i.Type == LinkedChildType.Manual && !string.IsNullOrWhiteSpace(i.ItemName))
|
||||
.Where(i => i.Type == LinkedChildType.Manual)
|
||||
.ToList();
|
||||
|
||||
if (items.Count == 0)
|
||||
@@ -717,14 +717,20 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||
{
|
||||
builder.Append("<" + singularNodeName + ">");
|
||||
|
||||
builder.Append("<Type>" + SecurityElement.Escape(link.ItemType) + "</Type>");
|
||||
if (!string.IsNullOrWhiteSpace(link.ItemType))
|
||||
{
|
||||
builder.Append("<Type>" + SecurityElement.Escape(link.ItemType) + "</Type>");
|
||||
}
|
||||
|
||||
if (link.ItemYear.HasValue)
|
||||
{
|
||||
builder.Append("<Year>" + SecurityElement.Escape(link.ItemYear.Value.ToString(UsCulture)) + "</Year>");
|
||||
}
|
||||
|
||||
builder.Append("<Path>" + SecurityElement.Escape((link.Path ?? string.Empty)) + "</Path>");
|
||||
if (!string.IsNullOrWhiteSpace(link.Path))
|
||||
{
|
||||
builder.Append("<Path>" + SecurityElement.Escape((link.Path)) + "</Path>");
|
||||
}
|
||||
|
||||
builder.Append("</" + singularNodeName + ">");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user