mirror of https://github.com/jellyfin/jellyfin.git
provide language tags as filter values
This commit is contained in:
parent
0be2817ccb
commit
2ec438ddde
|
@ -173,6 +173,7 @@
|
|||
- [scampower3](https://github.com/scampower3)
|
||||
- [Chris-Codes-It] (https://github.com/Chris-Codes-It)
|
||||
- [Pithaya](https://github.com/Pithaya)
|
||||
- [TheMelmacian](https://github.com/TheMelmacian)
|
||||
|
||||
# Emby Contributors
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Jellyfin.Api.Helpers;
|
||||
using Jellyfin.Api.ModelBinders;
|
||||
|
@ -7,6 +8,7 @@ using MediaBrowser.Controller.Dto;
|
|||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Model.Dto;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Querying;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
@ -112,6 +114,20 @@ public class FilterController : BaseJellyfinApiController
|
|||
.Where(i => !string.IsNullOrWhiteSpace(i))
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.Order()
|
||||
.ToArray(),
|
||||
|
||||
AudioLanguages = GetMediaStreams(itemList, BaseItemKind.Movie, BaseItemKind.Episode)
|
||||
.Where(mediaStream => mediaStream.Type == MediaStreamType.Audio)
|
||||
.Select(mediaStream => string.IsNullOrWhiteSpace(mediaStream.Language) ? "und" : mediaStream.Language)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.Order()
|
||||
.ToArray(),
|
||||
|
||||
SubtitleLanguages = GetMediaStreams(itemList, BaseItemKind.Movie, BaseItemKind.Episode)
|
||||
.Where(mediaStream => mediaStream.Type == MediaStreamType.Subtitle)
|
||||
.Select(mediaStream => string.IsNullOrWhiteSpace(mediaStream.Language) ? "und" : mediaStream.Language)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.Order()
|
||||
.ToArray()
|
||||
};
|
||||
}
|
||||
|
@ -214,4 +230,32 @@ public class FilterController : BaseJellyfinApiController
|
|||
|
||||
return filters;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Extracts the MediaStreams from the list of BaseItems.
|
||||
/// If an item is a Folder, MediaStreams are searched in the list of it's child items.
|
||||
/// </summary>
|
||||
/// <param name="itemList">The list of items for which the MediaStreams should be xtracted.</param>
|
||||
/// <param name="types">Optional list of item kinds for which the MediaStreams should be extracted.</param>
|
||||
/// <returns>A list of all MediaStreams which are linked to the provided items.</returns>
|
||||
private IEnumerable<MediaStream> GetMediaStreams(IEnumerable<BaseItem> itemList, params BaseItemKind[] types)
|
||||
{
|
||||
return itemList
|
||||
.Where(item => item.IsFolder || types.Length == 0 || types.Contains(item.GetBaseItemKind()))
|
||||
.SelectMany(item =>
|
||||
{
|
||||
if (item.IsFolder)
|
||||
{
|
||||
return GetMediaStreams(((Folder)item).Children, types);
|
||||
}
|
||||
else if (item is Video)
|
||||
{
|
||||
return ((Video)item).GetAllLinkedMediaStreams();
|
||||
}
|
||||
else
|
||||
{
|
||||
return item.GetMediaStreams();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -379,6 +379,15 @@ namespace MediaBrowser.Controller.Entities
|
|||
.OrderBy(i => i.SortName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the MediaStreams for this Video and all alternate Versions (linked and local).
|
||||
/// </summary>
|
||||
/// <returns>A list of all MediaStreams which are linked to this Video.</returns>
|
||||
public IEnumerable<MediaStream> GetAllLinkedMediaStreams()
|
||||
{
|
||||
return GetAllItemsForMediaSources().SelectMany(item => item.Item.GetMediaStreams());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the additional parts.
|
||||
/// </summary>
|
||||
|
|
|
@ -13,6 +13,8 @@ namespace MediaBrowser.Model.Querying
|
|||
Tags = Array.Empty<string>();
|
||||
OfficialRatings = Array.Empty<string>();
|
||||
Years = Array.Empty<int>();
|
||||
AudioLanguages = Array.Empty<string>();
|
||||
SubtitleLanguages = Array.Empty<string>();
|
||||
}
|
||||
|
||||
public string[] Genres { get; set; }
|
||||
|
@ -22,5 +24,9 @@ namespace MediaBrowser.Model.Querying
|
|||
public string[] OfficialRatings { get; set; }
|
||||
|
||||
public int[] Years { get; set; }
|
||||
|
||||
public string[] AudioLanguages { get; set; }
|
||||
|
||||
public string[] SubtitleLanguages { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue