mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-05-31 20:24:21 -04:00
Add missing manual splits
This commit is contained in:
parent
3cc0dd7e12
commit
2a0578ce1a
@ -105,7 +105,7 @@ namespace Jellyfin.Api.Controllers
|
|||||||
[FromQuery] string? person,
|
[FromQuery] string? person,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] personIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] personIds,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] personTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] personTypes,
|
||||||
[FromQuery] string? studios,
|
[FromQuery, ModelBinder(typeof(PipeDelimitedArrayModelBinder))] string[] studios,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] studioIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] studioIds,
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery] string? nameStartsWithOrGreater,
|
[FromQuery] string? nameStartsWithOrGreater,
|
||||||
@ -170,9 +170,9 @@ namespace Jellyfin.Api.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Studios
|
// Studios
|
||||||
if (!string.IsNullOrEmpty(studios))
|
if (studios.Length != 0)
|
||||||
{
|
{
|
||||||
query.StudioIds = studios.Split('|').Select(i =>
|
query.StudioIds = studios.Select(i =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -309,7 +309,7 @@ namespace Jellyfin.Api.Controllers
|
|||||||
[FromQuery] string? person,
|
[FromQuery] string? person,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] personIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] personIds,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] personTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] personTypes,
|
||||||
[FromQuery] string? studios,
|
[FromQuery, ModelBinder(typeof(PipeDelimitedArrayModelBinder))] string[] studios,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] studioIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] studioIds,
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery] string? nameStartsWithOrGreater,
|
[FromQuery] string? nameStartsWithOrGreater,
|
||||||
@ -374,9 +374,9 @@ namespace Jellyfin.Api.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Studios
|
// Studios
|
||||||
if (!string.IsNullOrEmpty(studios))
|
if (studios.Length != 0)
|
||||||
{
|
{
|
||||||
query.StudioIds = studios.Split('|').Select(i =>
|
query.StudioIds = studios.Select(i =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -198,7 +198,7 @@ namespace Jellyfin.Api.Controllers
|
|||||||
[FromQuery] int? limit,
|
[FromQuery] int? limit,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFilter[] filters,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFilter[] filters,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
||||||
[FromQuery] string? channelIds)
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] channelIds)
|
||||||
{
|
{
|
||||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||||
? _userManager.GetUserById(userId.Value)
|
? _userManager.GetUserById(userId.Value)
|
||||||
@ -208,11 +208,7 @@ namespace Jellyfin.Api.Controllers
|
|||||||
{
|
{
|
||||||
Limit = limit,
|
Limit = limit,
|
||||||
StartIndex = startIndex,
|
StartIndex = startIndex,
|
||||||
ChannelIds = (channelIds ?? string.Empty)
|
ChannelIds = channelIds,
|
||||||
.Split(',')
|
|
||||||
.Where(i => !string.IsNullOrWhiteSpace(i))
|
|
||||||
.Select(i => new Guid(i))
|
|
||||||
.ToArray(),
|
|
||||||
DtoOptions = new DtoOptions { Fields = fields }
|
DtoOptions = new DtoOptions { Fields = fields }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Jellyfin.Api.Constants;
|
using Jellyfin.Api.Constants;
|
||||||
|
using Jellyfin.Api.ModelBinders;
|
||||||
using MediaBrowser.Controller.Dto;
|
using MediaBrowser.Controller.Dto;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
@ -50,8 +51,8 @@ namespace Jellyfin.Api.Controllers
|
|||||||
public ActionResult<QueryFiltersLegacy> GetQueryFiltersLegacy(
|
public ActionResult<QueryFiltersLegacy> GetQueryFiltersLegacy(
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] string? parentId,
|
||||||
[FromQuery] string? includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
[FromQuery] string? mediaTypes)
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] mediaTypes)
|
||||||
{
|
{
|
||||||
var parentItem = string.IsNullOrEmpty(parentId)
|
var parentItem = string.IsNullOrEmpty(parentId)
|
||||||
? null
|
? null
|
||||||
@ -61,10 +62,11 @@ namespace Jellyfin.Api.Controllers
|
|||||||
? _userManager.GetUserById(userId.Value)
|
? _userManager.GetUserById(userId.Value)
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (string.Equals(includeItemTypes, nameof(BoxSet), StringComparison.OrdinalIgnoreCase)
|
if (includeItemTypes.Length == 1
|
||||||
|| string.Equals(includeItemTypes, nameof(Playlist), StringComparison.OrdinalIgnoreCase)
|
&& (string.Equals(includeItemTypes[0], nameof(BoxSet), StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(includeItemTypes, nameof(Trailer), StringComparison.OrdinalIgnoreCase)
|
|| string.Equals(includeItemTypes[0], nameof(Playlist), StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(includeItemTypes, "Program", StringComparison.OrdinalIgnoreCase))
|
|| string.Equals(includeItemTypes[0], nameof(Trailer), StringComparison.OrdinalIgnoreCase)
|
||||||
|
|| string.Equals(includeItemTypes[0], "Program", StringComparison.OrdinalIgnoreCase)))
|
||||||
{
|
{
|
||||||
parentItem = null;
|
parentItem = null;
|
||||||
}
|
}
|
||||||
@ -78,8 +80,8 @@ namespace Jellyfin.Api.Controllers
|
|||||||
var query = new InternalItemsQuery
|
var query = new InternalItemsQuery
|
||||||
{
|
{
|
||||||
User = user,
|
User = user,
|
||||||
MediaTypes = (mediaTypes ?? string.Empty).Split(',', StringSplitOptions.RemoveEmptyEntries),
|
MediaTypes = mediaTypes,
|
||||||
IncludeItemTypes = (includeItemTypes ?? string.Empty).Split(',', StringSplitOptions.RemoveEmptyEntries),
|
IncludeItemTypes = includeItemTypes,
|
||||||
Recursive = true,
|
Recursive = true,
|
||||||
EnableTotalRecordCount = false,
|
EnableTotalRecordCount = false,
|
||||||
DtoOptions = new DtoOptions
|
DtoOptions = new DtoOptions
|
||||||
@ -139,7 +141,7 @@ namespace Jellyfin.Api.Controllers
|
|||||||
public ActionResult<QueryFilters> GetQueryFilters(
|
public ActionResult<QueryFilters> GetQueryFilters(
|
||||||
[FromQuery] Guid? userId,
|
[FromQuery] Guid? userId,
|
||||||
[FromQuery] string? parentId,
|
[FromQuery] string? parentId,
|
||||||
[FromQuery] string? includeItemTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] includeItemTypes,
|
||||||
[FromQuery] bool? isAiring,
|
[FromQuery] bool? isAiring,
|
||||||
[FromQuery] bool? isMovie,
|
[FromQuery] bool? isMovie,
|
||||||
[FromQuery] bool? isSports,
|
[FromQuery] bool? isSports,
|
||||||
@ -156,10 +158,11 @@ namespace Jellyfin.Api.Controllers
|
|||||||
? _userManager.GetUserById(userId.Value)
|
? _userManager.GetUserById(userId.Value)
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (string.Equals(includeItemTypes, nameof(BoxSet), StringComparison.OrdinalIgnoreCase)
|
if (includeItemTypes.Length == 1
|
||||||
|| string.Equals(includeItemTypes, nameof(Playlist), StringComparison.OrdinalIgnoreCase)
|
&& (string.Equals(includeItemTypes[0], nameof(BoxSet), StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(includeItemTypes, nameof(Trailer), StringComparison.OrdinalIgnoreCase)
|
|| string.Equals(includeItemTypes[0], nameof(Playlist), StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(includeItemTypes, "Program", StringComparison.OrdinalIgnoreCase))
|
|| string.Equals(includeItemTypes[0], nameof(Trailer), StringComparison.OrdinalIgnoreCase)
|
||||||
|
|| string.Equals(includeItemTypes[0], "Program", StringComparison.OrdinalIgnoreCase)))
|
||||||
{
|
{
|
||||||
parentItem = null;
|
parentItem = null;
|
||||||
}
|
}
|
||||||
@ -167,8 +170,7 @@ namespace Jellyfin.Api.Controllers
|
|||||||
var filters = new QueryFilters();
|
var filters = new QueryFilters();
|
||||||
var genreQuery = new InternalItemsQuery(user)
|
var genreQuery = new InternalItemsQuery(user)
|
||||||
{
|
{
|
||||||
IncludeItemTypes =
|
IncludeItemTypes = includeItemTypes,
|
||||||
(includeItemTypes ?? string.Empty).Split(',', StringSplitOptions.RemoveEmptyEntries),
|
|
||||||
DtoOptions = new DtoOptions
|
DtoOptions = new DtoOptions
|
||||||
{
|
{
|
||||||
Fields = Array.Empty<ItemFields>(),
|
Fields = Array.Empty<ItemFields>(),
|
||||||
@ -192,10 +194,11 @@ namespace Jellyfin.Api.Controllers
|
|||||||
genreQuery.Parent = parentItem;
|
genreQuery.Parent = parentItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.Equals(includeItemTypes, nameof(MusicAlbum), StringComparison.OrdinalIgnoreCase)
|
if (includeItemTypes.Length == 1
|
||||||
|| string.Equals(includeItemTypes, nameof(MusicVideo), StringComparison.OrdinalIgnoreCase)
|
&& (string.Equals(includeItemTypes[0], nameof(MusicAlbum), StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(includeItemTypes, nameof(MusicArtist), StringComparison.OrdinalIgnoreCase)
|
|| string.Equals(includeItemTypes[0], nameof(MusicVideo), StringComparison.OrdinalIgnoreCase)
|
||||||
|| string.Equals(includeItemTypes, nameof(Audio), StringComparison.OrdinalIgnoreCase))
|
|| string.Equals(includeItemTypes[0], nameof(MusicArtist), StringComparison.OrdinalIgnoreCase)
|
||||||
|
|| string.Equals(includeItemTypes[0], nameof(Audio), StringComparison.OrdinalIgnoreCase)))
|
||||||
{
|
{
|
||||||
filters.Genres = _libraryManager.GetMusicGenres(genreQuery).Items.Select(i => new NameGuidPair
|
filters.Genres = _libraryManager.GetMusicGenres(genreQuery).Items.Select(i => new NameGuidPair
|
||||||
{
|
{
|
||||||
|
@ -159,7 +159,7 @@ namespace Jellyfin.Api.Controllers
|
|||||||
[FromQuery] bool? hasParentalRating,
|
[FromQuery] bool? hasParentalRating,
|
||||||
[FromQuery] bool? isHd,
|
[FromQuery] bool? isHd,
|
||||||
[FromQuery] bool? is4K,
|
[FromQuery] bool? is4K,
|
||||||
[FromQuery] string? locationTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] locationTypes,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] LocationType[] excludeLocationTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] LocationType[] excludeLocationTypes,
|
||||||
[FromQuery] bool? isMissing,
|
[FromQuery] bool? isMissing,
|
||||||
[FromQuery] bool? isUnaired,
|
[FromQuery] bool? isUnaired,
|
||||||
@ -199,13 +199,13 @@ namespace Jellyfin.Api.Controllers
|
|||||||
[FromQuery] string? person,
|
[FromQuery] string? person,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] personIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] personIds,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] personTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] personTypes,
|
||||||
[FromQuery] string? studios,
|
[FromQuery, ModelBinder(typeof(PipeDelimitedArrayModelBinder))] string[] studios,
|
||||||
[FromQuery] string? artists,
|
[FromQuery, ModelBinder(typeof(PipeDelimitedArrayModelBinder))] string[] artists,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] excludeArtistIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] excludeArtistIds,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] artistIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] artistIds,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] albumArtistIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] albumArtistIds,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] contributingArtistIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] contributingArtistIds,
|
||||||
[FromQuery] string? albums,
|
[FromQuery, ModelBinder(typeof(PipeDelimitedArrayModelBinder))] string[] albums,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] albumIds,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] albumIds,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] ids,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] ids,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] VideoType[] videoTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] VideoType[] videoTypes,
|
||||||
@ -219,7 +219,7 @@ namespace Jellyfin.Api.Controllers
|
|||||||
[FromQuery] int? maxWidth,
|
[FromQuery] int? maxWidth,
|
||||||
[FromQuery] int? maxHeight,
|
[FromQuery] int? maxHeight,
|
||||||
[FromQuery] bool? is3D,
|
[FromQuery] bool? is3D,
|
||||||
[FromQuery] string? seriesStatus,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] SeriesStatus[] seriesStatus,
|
||||||
[FromQuery] string? nameStartsWithOrGreater,
|
[FromQuery] string? nameStartsWithOrGreater,
|
||||||
[FromQuery] string? nameStartsWith,
|
[FromQuery] string? nameStartsWith,
|
||||||
[FromQuery] string? nameLessThan,
|
[FromQuery] string? nameLessThan,
|
||||||
@ -401,9 +401,9 @@ namespace Jellyfin.Api.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Filter by Series Status
|
// Filter by Series Status
|
||||||
if (!string.IsNullOrEmpty(seriesStatus))
|
if(seriesStatus.Length != 0)
|
||||||
{
|
{
|
||||||
query.SeriesStatuses = seriesStatus.Split(',').Select(d => (SeriesStatus)Enum.Parse(typeof(SeriesStatus), d, true)).ToArray();
|
query.SeriesStatuses = seriesStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExcludeLocationTypes
|
// ExcludeLocationTypes
|
||||||
@ -412,9 +412,9 @@ namespace Jellyfin.Api.Controllers
|
|||||||
query.IsVirtualItem = false;
|
query.IsVirtualItem = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(locationTypes))
|
if (locationTypes.Length != 0)
|
||||||
{
|
{
|
||||||
var requestedLocationTypes = locationTypes.Split(',');
|
var requestedLocationTypes = locationTypes;
|
||||||
if (requestedLocationTypes.Length > 0 && requestedLocationTypes.Length < 4)
|
if (requestedLocationTypes.Length > 0 && requestedLocationTypes.Length < 4)
|
||||||
{
|
{
|
||||||
query.IsVirtualItem = requestedLocationTypes.Contains(LocationType.Virtual.ToString());
|
query.IsVirtualItem = requestedLocationTypes.Contains(LocationType.Virtual.ToString());
|
||||||
@ -434,9 +434,9 @@ namespace Jellyfin.Api.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Artists
|
// Artists
|
||||||
if (!string.IsNullOrEmpty(artists))
|
if (artists.Length != 0)
|
||||||
{
|
{
|
||||||
query.ArtistIds = artists.Split('|').Select(i =>
|
query.ArtistIds = artists.Select(i =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -461,18 +461,18 @@ namespace Jellyfin.Api.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Albums
|
// Albums
|
||||||
if (!string.IsNullOrEmpty(albums))
|
if (albums.Length != 0)
|
||||||
{
|
{
|
||||||
query.AlbumIds = albums.Split('|').SelectMany(i =>
|
query.AlbumIds = albums.SelectMany(i =>
|
||||||
{
|
{
|
||||||
return _libraryManager.GetItemIds(new InternalItemsQuery { IncludeItemTypes = new[] { nameof(MusicAlbum) }, Name = i, Limit = 1 });
|
return _libraryManager.GetItemIds(new InternalItemsQuery { IncludeItemTypes = new[] { nameof(MusicAlbum) }, Name = i, Limit = 1 });
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Studios
|
// Studios
|
||||||
if (!string.IsNullOrEmpty(studios))
|
if (studios.Length != 0)
|
||||||
{
|
{
|
||||||
query.StudioIds = studios.Split('|').Select(i =>
|
query.StudioIds = studios.Select(i =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user