mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-04-24 14:08:44 -04:00
Sanitize CustomTagDelimiters server side
The API requires an array type and does not support runtime generated default value. Use server side helper function to sanitize it into char.
This commit is contained in:
parent
cb8f01065a
commit
00ca4abbe1
2 changed files with 20 additions and 6 deletions
|
@ -2,12 +2,13 @@
|
|||
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
|
||||
namespace MediaBrowser.Model.Configuration
|
||||
{
|
||||
public class LibraryOptions
|
||||
{
|
||||
private static readonly char[] _defaultTagDelimiters = ['/', '|', ';', '\\'];
|
||||
private static readonly string[] _defaultTagDelimiters = ["/", "|", ";", "\\"];
|
||||
|
||||
public LibraryOptions()
|
||||
{
|
||||
|
@ -126,8 +127,7 @@ namespace MediaBrowser.Model.Configuration
|
|||
[DefaultValue(false)]
|
||||
public bool UseCustomTagDelimiters { get; set; }
|
||||
|
||||
[DefaultValue(typeof(LibraryOptions), nameof(_defaultTagDelimiters))]
|
||||
public char[] CustomTagDelimiters { get; set; }
|
||||
public string[] CustomTagDelimiters { get; set; }
|
||||
|
||||
public string[] DelimiterWhitelist { get; set; }
|
||||
|
||||
|
@ -149,5 +149,19 @@ namespace MediaBrowser.Model.Configuration
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
public char[] GetCustomTagDelimiters()
|
||||
{
|
||||
return CustomTagDelimiters.Select<string, char?>(x =>
|
||||
{
|
||||
var isChar = char.TryParse(x, out var c);
|
||||
if (isChar)
|
||||
{
|
||||
return c;
|
||||
}
|
||||
|
||||
return null;
|
||||
}).Where(x => x is not null).Select(x => x!.Value).ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -178,7 +178,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|||
|
||||
if (libraryOptions.UseCustomTagDelimiters)
|
||||
{
|
||||
albumArtists = albumArtists.SelectMany(a => SplitWithCustomDelimiter(a, libraryOptions.CustomTagDelimiters, libraryOptions.DelimiterWhitelist)).ToArray();
|
||||
albumArtists = albumArtists.SelectMany(a => SplitWithCustomDelimiter(a, libraryOptions.GetCustomTagDelimiters(), libraryOptions.DelimiterWhitelist)).ToArray();
|
||||
}
|
||||
|
||||
foreach (var albumArtist in albumArtists)
|
||||
|
@ -210,7 +210,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|||
|
||||
if (libraryOptions.UseCustomTagDelimiters)
|
||||
{
|
||||
performers = performers.SelectMany(p => SplitWithCustomDelimiter(p, libraryOptions.CustomTagDelimiters, libraryOptions.DelimiterWhitelist)).ToArray();
|
||||
performers = performers.SelectMany(p => SplitWithCustomDelimiter(p, libraryOptions.GetCustomTagDelimiters(), libraryOptions.DelimiterWhitelist)).ToArray();
|
||||
}
|
||||
|
||||
foreach (var performer in performers)
|
||||
|
@ -313,7 +313,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|||
|
||||
if (libraryOptions.UseCustomTagDelimiters)
|
||||
{
|
||||
genres = genres.SelectMany(g => SplitWithCustomDelimiter(g, libraryOptions.CustomTagDelimiters, libraryOptions.DelimiterWhitelist)).ToArray();
|
||||
genres = genres.SelectMany(g => SplitWithCustomDelimiter(g, libraryOptions.GetCustomTagDelimiters(), libraryOptions.DelimiterWhitelist)).ToArray();
|
||||
}
|
||||
|
||||
audio.Genres = options.ReplaceAllMetadata || audio.Genres is null || audio.Genres.Length == 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue