mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-21 16:17:00 +01:00
Merge pull request #9787 from TheMelmacian/feature/language_filters
New filters for audio and subtitle languages
This commit is contained in:
@@ -111,7 +111,9 @@ public static class DescendantQueryHelper
|
||||
private static HashSet<Guid> GetMatchingMediaStreamItemIds(JellyfinDbContext context, HasMediaStreamType criteria)
|
||||
{
|
||||
var query = context.MediaStreamInfos
|
||||
.Where(ms => ms.StreamType == criteria.StreamType && ms.Language == criteria.Language);
|
||||
.Where(ms => ms.StreamType == criteria.StreamType
|
||||
&& (criteria.Language.Contains(ms.Language)
|
||||
|| (criteria.Language.Contains("und") && string.IsNullOrEmpty(ms.Language)))); // und = undetermined
|
||||
|
||||
if (criteria.IsExternal.HasValue)
|
||||
{
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#pragma warning disable SA1313 // Parameter names should begin with lower-case letter
|
||||
|
||||
using System.Collections.Generic;
|
||||
using Jellyfin.Database.Implementations.Entities;
|
||||
|
||||
namespace Jellyfin.Database.Implementations.MatchCriteria;
|
||||
@@ -6,9 +9,23 @@ namespace Jellyfin.Database.Implementations.MatchCriteria;
|
||||
/// Matches folders containing descendants with a specific media stream type and language.
|
||||
/// </summary>
|
||||
/// <param name="StreamType">The type of media stream to match (Audio, Subtitle, etc.).</param>
|
||||
/// <param name="Language">The language to match.</param>
|
||||
/// <param name="Language">List of languages to match.</param>
|
||||
/// <param name="IsExternal">If not null, filters by internal (false) or external (true) streams. Only applicable to subtitles.</param>
|
||||
public sealed record HasMediaStreamType(
|
||||
MediaStreamTypeEntity StreamType,
|
||||
string Language,
|
||||
bool? IsExternal = null) : FolderMatchCriteria;
|
||||
IReadOnlyCollection<string> Language,
|
||||
bool? IsExternal = null) : FolderMatchCriteria
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="HasMediaStreamType"/> class.
|
||||
/// </summary>
|
||||
/// <param name="StreamType">The type of media stream to match (Audio, Subtitle, etc.).</param>
|
||||
/// <param name="Language">The language to match.</param>
|
||||
/// <param name="IsExternal">If not null, filters by internal (false) or external (true) streams. Only applicable to subtitles.</param>
|
||||
public HasMediaStreamType(
|
||||
MediaStreamTypeEntity StreamType,
|
||||
string Language,
|
||||
bool? IsExternal = null) : this(StreamType, [Language], IsExternal)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user