aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.LocalMetadata
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.LocalMetadata')
-rw-r--r--MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs19
-rw-r--r--MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs1
-rw-r--r--MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs18
-rw-r--r--MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs19
4 files changed, 31 insertions, 26 deletions
diff --git a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
index a8e2946f1..f00d508bb 100644
--- a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
+++ b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
@@ -38,19 +38,26 @@ namespace MediaBrowser.LocalMetadata.Images
}
var parentPathFiles = directoryService.GetFiles(parentPath);
+ var nameWithoutExtension = Path.GetFileNameWithoutExtension(item.Path.AsSpan()).ToString();
- var nameWithoutExtension = Path.GetFileNameWithoutExtension(item.Path.AsSpan());
+ var images = GetImageFilesFromFolder(nameWithoutExtension, parentPathFiles);
- return GetFilesFromParentFolder(nameWithoutExtension, parentPathFiles);
+ var metadataSubDir = directoryService.GetDirectories(parentPath).FirstOrDefault(d => d.Name.Equals("metadata", StringComparison.Ordinal));
+ if (metadataSubDir is not null)
+ {
+ var files = directoryService.GetFiles(metadataSubDir.FullName);
+ images.AddRange(GetImageFilesFromFolder(nameWithoutExtension, files));
+ }
+
+ return images;
}
- private List<LocalImageInfo> GetFilesFromParentFolder(ReadOnlySpan<char> filenameWithoutExtension, List<FileSystemMetadata> parentPathFiles)
+ private List<LocalImageInfo> GetImageFilesFromFolder(ReadOnlySpan<char> filenameWithoutExtension, List<FileSystemMetadata> filePaths)
{
- var thumbName = string.Concat(filenameWithoutExtension, "-thumb");
-
var list = new List<LocalImageInfo>(1);
+ var thumbName = string.Concat(filenameWithoutExtension, "-thumb");
- foreach (var i in parentPathFiles)
+ foreach (var i in filePaths)
{
if (i.IsDirectory)
{
diff --git a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs
index 894aebed4..9aa9c3548 100644
--- a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs
+++ b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs
@@ -32,6 +32,7 @@ namespace MediaBrowser.LocalMetadata.Images
"folder",
"poster",
"cover",
+ "jacket",
"default"
};
diff --git a/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
index 8a870e0d9..a7e027d94 100644
--- a/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
+++ b/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
@@ -519,7 +519,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
private void FetchFromSharesNode(XmlReader reader, IHasShares item)
{
- var list = new List<Share>();
+ var list = new List<PlaylistUserPermissions>();
reader.MoveToContent();
reader.Read();
@@ -565,7 +565,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
}
}
- item.Shares = list.ToArray();
+ item.Shares = [.. list];
}
/// <summary>
@@ -830,12 +830,12 @@ namespace MediaBrowser.LocalMetadata.Parsers
/// </summary>
/// <param name="reader">The xml reader.</param>
/// <returns>The share.</returns>
- protected Share? GetShare(XmlReader reader)
+ protected PlaylistUserPermissions? GetShare(XmlReader reader)
{
- var item = new Share();
-
reader.MoveToContent();
reader.Read();
+ string? userId = null;
+ var canEdit = false;
// Loop through each element
while (!reader.EOF && reader.ReadState == ReadState.Interactive)
@@ -845,10 +845,10 @@ namespace MediaBrowser.LocalMetadata.Parsers
switch (reader.Name)
{
case "UserId":
- item.UserId = reader.ReadNormalizedString();
+ userId = reader.ReadNormalizedString();
break;
case "CanEdit":
- item.CanEdit = string.Equals(reader.ReadElementContentAsString(), "true", StringComparison.OrdinalIgnoreCase);
+ canEdit = string.Equals(reader.ReadElementContentAsString(), "true", StringComparison.OrdinalIgnoreCase);
break;
default:
reader.Skip();
@@ -862,9 +862,9 @@ namespace MediaBrowser.LocalMetadata.Parsers
}
// This is valid
- if (!string.IsNullOrWhiteSpace(item.UserId))
+ if (!string.IsNullOrWhiteSpace(userId) && Guid.TryParse(userId, out var guid))
{
- return item;
+ return new PlaylistUserPermissions(guid, canEdit);
}
return null;
diff --git a/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs
index 5a7193079..ee0d10bea 100644
--- a/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs
+++ b/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs
@@ -420,19 +420,16 @@ namespace MediaBrowser.LocalMetadata.Savers
foreach (var share in item.Shares)
{
- if (share.UserId is not null)
- {
- await writer.WriteStartElementAsync(null, "Share", null).ConfigureAwait(false);
+ await writer.WriteStartElementAsync(null, "Share", null).ConfigureAwait(false);
- await writer.WriteElementStringAsync(null, "UserId", null, share.UserId).ConfigureAwait(false);
- await writer.WriteElementStringAsync(
- null,
- "CanEdit",
- null,
- share.CanEdit.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()).ConfigureAwait(false);
+ await writer.WriteElementStringAsync(null, "UserId", null, share.UserId.ToString()).ConfigureAwait(false);
+ await writer.WriteElementStringAsync(
+ null,
+ "CanEdit",
+ null,
+ share.CanEdit.ToString(CultureInfo.InvariantCulture).ToLowerInvariant()).ConfigureAwait(false);
- await writer.WriteEndElementAsync().ConfigureAwait(false);
- }
+ await writer.WriteEndElementAsync().ConfigureAwait(false);
}
await writer.WriteEndElementAsync().ConfigureAwait(false);