Merge pull request #6979 from crobibero/baseitemkind
Use BaseItemKind where possible
This commit is contained in:
commit
4c9bd905c6
|
@ -539,7 +539,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
User = user,
|
||||
Recursive = true,
|
||||
IsMissing = false,
|
||||
ExcludeItemTypes = new[] { nameof(Book) },
|
||||
ExcludeItemTypes = new[] { BaseItemKind.Book },
|
||||
IsFolder = isFolder,
|
||||
MediaTypes = mediaTypes,
|
||||
DtoOptions = GetDtoOptions()
|
||||
|
@ -619,7 +619,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
Limit = limit,
|
||||
StartIndex = startIndex,
|
||||
IsVirtualItem = false,
|
||||
ExcludeItemTypes = new[] { nameof(Book) },
|
||||
ExcludeItemTypes = new[] { BaseItemKind.Book },
|
||||
IsPlaceHolder = false,
|
||||
DtoOptions = GetDtoOptions(),
|
||||
OrderBy = GetOrderBy(sort, folder.IsPreSorted)
|
||||
|
@ -644,7 +644,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
{
|
||||
StartIndex = startIndex,
|
||||
Limit = limit,
|
||||
IncludeItemTypes = new[] { nameof(LiveTvChannel) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvChannel },
|
||||
OrderBy = GetOrderBy(sort, false)
|
||||
};
|
||||
|
||||
|
@ -675,23 +675,23 @@ namespace Emby.Dlna.ContentDirectory
|
|||
switch (stubType)
|
||||
{
|
||||
case StubType.Latest:
|
||||
return GetLatest(item, query, nameof(Audio));
|
||||
return GetLatest(item, query, BaseItemKind.Audio);
|
||||
case StubType.Playlists:
|
||||
return GetMusicPlaylists(query);
|
||||
case StubType.Albums:
|
||||
return GetChildrenOfItem(item, query, nameof(MusicAlbum));
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.MusicAlbum);
|
||||
case StubType.Artists:
|
||||
return GetMusicArtists(item, query);
|
||||
case StubType.AlbumArtists:
|
||||
return GetMusicAlbumArtists(item, query);
|
||||
case StubType.FavoriteAlbums:
|
||||
return GetChildrenOfItem(item, query, nameof(MusicAlbum), true);
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.MusicAlbum, true);
|
||||
case StubType.FavoriteArtists:
|
||||
return GetFavoriteArtists(item, query);
|
||||
case StubType.FavoriteSongs:
|
||||
return GetChildrenOfItem(item, query, nameof(Audio), true);
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.Audio, true);
|
||||
case StubType.Songs:
|
||||
return GetChildrenOfItem(item, query, nameof(Audio));
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.Audio);
|
||||
case StubType.Genres:
|
||||
return GetMusicGenres(item, query);
|
||||
}
|
||||
|
@ -746,13 +746,13 @@ namespace Emby.Dlna.ContentDirectory
|
|||
case StubType.ContinueWatching:
|
||||
return GetMovieContinueWatching(item, query);
|
||||
case StubType.Latest:
|
||||
return GetLatest(item, query, nameof(Movie));
|
||||
return GetLatest(item, query, BaseItemKind.Movie);
|
||||
case StubType.Movies:
|
||||
return GetChildrenOfItem(item, query, nameof(Movie));
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.Movie);
|
||||
case StubType.Collections:
|
||||
return GetMovieCollections(query);
|
||||
case StubType.Favorites:
|
||||
return GetChildrenOfItem(item, query, nameof(Movie), true);
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.Movie, true);
|
||||
case StubType.Genres:
|
||||
return GetGenres(item, query);
|
||||
}
|
||||
|
@ -831,13 +831,13 @@ namespace Emby.Dlna.ContentDirectory
|
|||
case StubType.NextUp:
|
||||
return GetNextUp(item, query);
|
||||
case StubType.Latest:
|
||||
return GetLatest(item, query, nameof(Episode));
|
||||
return GetLatest(item, query, BaseItemKind.Episode);
|
||||
case StubType.Series:
|
||||
return GetChildrenOfItem(item, query, nameof(Series));
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.Series);
|
||||
case StubType.FavoriteSeries:
|
||||
return GetChildrenOfItem(item, query, nameof(Series), true);
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.Series, true);
|
||||
case StubType.FavoriteEpisodes:
|
||||
return GetChildrenOfItem(item, query, nameof(Episode), true);
|
||||
return GetChildrenOfItem(item, query, BaseItemKind.Episode, true);
|
||||
case StubType.Genres:
|
||||
return GetGenres(item, query);
|
||||
}
|
||||
|
@ -898,7 +898,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
private QueryResult<ServerItem> GetMovieCollections(InternalItemsQuery query)
|
||||
{
|
||||
query.Recursive = true;
|
||||
query.IncludeItemTypes = new[] { nameof(BoxSet) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.BoxSet };
|
||||
|
||||
var result = _libraryManager.GetItemsResult(query);
|
||||
|
||||
|
@ -913,7 +913,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
/// <param name="itemType">The item type.</param>
|
||||
/// <param name="isFavorite">A value indicating whether to only fetch favorite items.</param>
|
||||
/// <returns>The <see cref="QueryResult{ServerItem}"/>.</returns>
|
||||
private QueryResult<ServerItem> GetChildrenOfItem(BaseItem parent, InternalItemsQuery query, string itemType, bool isFavorite = false)
|
||||
private QueryResult<ServerItem> GetChildrenOfItem(BaseItem parent, InternalItemsQuery query, BaseItemKind itemType, bool isFavorite = false)
|
||||
{
|
||||
query.Recursive = true;
|
||||
query.Parent = parent;
|
||||
|
@ -1013,7 +1013,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
private QueryResult<ServerItem> GetMusicPlaylists(InternalItemsQuery query)
|
||||
{
|
||||
query.Parent = null;
|
||||
query.IncludeItemTypes = new[] { nameof(Playlist) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Playlist };
|
||||
query.Recursive = true;
|
||||
|
||||
var result = _libraryManager.GetItemsResult(query);
|
||||
|
@ -1052,7 +1052,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
/// <param name="query">The <see cref="InternalItemsQuery"/>.</param>
|
||||
/// <param name="itemType">The item type.</param>
|
||||
/// <returns>The <see cref="QueryResult{ServerItem}"/>.</returns>
|
||||
private QueryResult<ServerItem> GetLatest(BaseItem parent, InternalItemsQuery query, string itemType)
|
||||
private QueryResult<ServerItem> GetLatest(BaseItem parent, InternalItemsQuery query, BaseItemKind itemType)
|
||||
{
|
||||
query.OrderBy = Array.Empty<(string, SortOrder)>();
|
||||
|
||||
|
@ -1086,7 +1086,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
{
|
||||
Recursive = true,
|
||||
ArtistIds = new[] { item.Id },
|
||||
IncludeItemTypes = new[] { nameof(MusicAlbum) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.MusicAlbum },
|
||||
Limit = limit,
|
||||
StartIndex = startIndex,
|
||||
DtoOptions = GetDtoOptions(),
|
||||
|
@ -1115,8 +1115,8 @@ namespace Emby.Dlna.ContentDirectory
|
|||
GenreIds = new[] { item.Id },
|
||||
IncludeItemTypes = new[]
|
||||
{
|
||||
nameof(Movie),
|
||||
nameof(Series)
|
||||
BaseItemKind.Movie,
|
||||
BaseItemKind.Series
|
||||
},
|
||||
Limit = limit,
|
||||
StartIndex = startIndex,
|
||||
|
@ -1144,7 +1144,7 @@ namespace Emby.Dlna.ContentDirectory
|
|||
{
|
||||
Recursive = true,
|
||||
GenreIds = new[] { item.Id },
|
||||
IncludeItemTypes = new[] { nameof(MusicAlbum) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.MusicAlbum },
|
||||
Limit = limit,
|
||||
StartIndex = startIndex,
|
||||
DtoOptions = GetDtoOptions(),
|
||||
|
|
|
@ -541,7 +541,7 @@ namespace Emby.Server.Implementations.Channels
|
|||
return _libraryManager.GetItemIds(
|
||||
new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Channel) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Channel },
|
||||
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) }
|
||||
}).Select(i => GetChannelFeatures(i)).ToArray();
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ using System;
|
|||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Controller.Channels;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
|
@ -51,7 +52,7 @@ namespace Emby.Server.Implementations.Channels
|
|||
|
||||
var uninstalledChannels = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Channel) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Channel },
|
||||
ExcludeItemIds = installedChannelIds.ToArray()
|
||||
});
|
||||
|
||||
|
|
|
@ -196,57 +196,56 @@ namespace Emby.Server.Implementations.Data
|
|||
|
||||
private static readonly string _mediaAttachmentInsertPrefix;
|
||||
|
||||
private static readonly HashSet<string> _programTypes = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
||||
private static readonly BaseItemKind[] _programTypes = new[]
|
||||
{
|
||||
"Program",
|
||||
"TvChannel",
|
||||
"LiveTvProgram",
|
||||
"LiveTvTvChannel"
|
||||
BaseItemKind.Program,
|
||||
BaseItemKind.TvChannel,
|
||||
BaseItemKind.LiveTvProgram,
|
||||
BaseItemKind.LiveTvChannel
|
||||
};
|
||||
|
||||
private static readonly HashSet<string> _programExcludeParentTypes = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
||||
private static readonly BaseItemKind[] _programExcludeParentTypes = new[]
|
||||
{
|
||||
"Series",
|
||||
"Season",
|
||||
"MusicAlbum",
|
||||
"MusicArtist",
|
||||
"PhotoAlbum"
|
||||
BaseItemKind.Series,
|
||||
BaseItemKind.Season,
|
||||
BaseItemKind.MusicAlbum,
|
||||
BaseItemKind.MusicArtist,
|
||||
BaseItemKind.PhotoAlbum
|
||||
};
|
||||
|
||||
private static readonly HashSet<string> _serviceTypes = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
||||
private static readonly BaseItemKind[] _serviceTypes = new[]
|
||||
{
|
||||
"TvChannel",
|
||||
"LiveTvTvChannel"
|
||||
BaseItemKind.TvChannel,
|
||||
BaseItemKind.LiveTvChannel
|
||||
};
|
||||
|
||||
private static readonly HashSet<string> _startDateTypes = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
||||
private static readonly BaseItemKind[] _startDateTypes = new[]
|
||||
{
|
||||
"Program",
|
||||
"LiveTvProgram"
|
||||
BaseItemKind.Program,
|
||||
BaseItemKind.LiveTvProgram
|
||||
};
|
||||
|
||||
private static readonly HashSet<string> _seriesTypes = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
||||
private static readonly BaseItemKind[] _seriesTypes = new[]
|
||||
{
|
||||
"Book",
|
||||
"AudioBook",
|
||||
"Episode",
|
||||
"Season"
|
||||
BaseItemKind.Book,
|
||||
BaseItemKind.AudioBook,
|
||||
BaseItemKind.Episode,
|
||||
BaseItemKind.Season
|
||||
};
|
||||
|
||||
private static readonly HashSet<string> _artistExcludeParentTypes = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
||||
private static readonly BaseItemKind[] _artistExcludeParentTypes = new[]
|
||||
{
|
||||
"Series",
|
||||
"Season",
|
||||
"PhotoAlbum"
|
||||
BaseItemKind.Series,
|
||||
BaseItemKind.Season,
|
||||
BaseItemKind.PhotoAlbum
|
||||
};
|
||||
|
||||
private static readonly HashSet<string> _artistsTypes = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
||||
private static readonly BaseItemKind[] _artistsTypes = new[]
|
||||
{
|
||||
"Audio",
|
||||
"MusicAlbum",
|
||||
"MusicVideo",
|
||||
"AudioBook",
|
||||
"AudioPodcast"
|
||||
BaseItemKind.Audio,
|
||||
BaseItemKind.MusicAlbum,
|
||||
BaseItemKind.MusicVideo,
|
||||
BaseItemKind.AudioBook
|
||||
};
|
||||
|
||||
private static readonly Type[] _knownTypes =
|
||||
|
@ -2212,7 +2211,7 @@ namespace Emby.Server.Implementations.Data
|
|||
|
||||
private bool HasProgramAttributes(InternalItemsQuery query)
|
||||
{
|
||||
if (_programExcludeParentTypes.Contains(query.ParentType))
|
||||
if (query.ParentType != null && _programExcludeParentTypes.Contains(query.ParentType.Value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -2227,7 +2226,7 @@ namespace Emby.Server.Implementations.Data
|
|||
|
||||
private bool HasServiceName(InternalItemsQuery query)
|
||||
{
|
||||
if (_programExcludeParentTypes.Contains(query.ParentType))
|
||||
if (query.ParentType != null && _programExcludeParentTypes.Contains(query.ParentType.Value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -2242,7 +2241,7 @@ namespace Emby.Server.Implementations.Data
|
|||
|
||||
private bool HasStartDate(InternalItemsQuery query)
|
||||
{
|
||||
if (_programExcludeParentTypes.Contains(query.ParentType))
|
||||
if (query.ParentType != null && _programExcludeParentTypes.Contains(query.ParentType.Value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -2262,7 +2261,7 @@ namespace Emby.Server.Implementations.Data
|
|||
return true;
|
||||
}
|
||||
|
||||
return query.IncludeItemTypes.Contains("Episode", StringComparer.OrdinalIgnoreCase);
|
||||
return query.IncludeItemTypes.Contains(BaseItemKind.Episode);
|
||||
}
|
||||
|
||||
private bool HasTrailerTypes(InternalItemsQuery query)
|
||||
|
@ -2272,12 +2271,12 @@ namespace Emby.Server.Implementations.Data
|
|||
return true;
|
||||
}
|
||||
|
||||
return query.IncludeItemTypes.Contains("Trailer", StringComparer.OrdinalIgnoreCase);
|
||||
return query.IncludeItemTypes.Contains(BaseItemKind.Trailer);
|
||||
}
|
||||
|
||||
private bool HasArtistFields(InternalItemsQuery query)
|
||||
{
|
||||
if (_artistExcludeParentTypes.Contains(query.ParentType))
|
||||
if (query.ParentType != null && _artistExcludeParentTypes.Contains(query.ParentType.Value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -2292,7 +2291,7 @@ namespace Emby.Server.Implementations.Data
|
|||
|
||||
private bool HasSeriesFields(InternalItemsQuery query)
|
||||
{
|
||||
if (string.Equals(query.ParentType, "PhotoAlbum", StringComparison.OrdinalIgnoreCase))
|
||||
if (query.ParentType == BaseItemKind.PhotoAlbum)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -3487,8 +3486,8 @@ namespace Emby.Server.Implementations.Data
|
|||
if (query.IsMovie == true)
|
||||
{
|
||||
if (query.IncludeItemTypes.Length == 0
|
||||
|| query.IncludeItemTypes.Contains(nameof(Movie))
|
||||
|| query.IncludeItemTypes.Contains(nameof(Trailer)))
|
||||
|| query.IncludeItemTypes.Contains(BaseItemKind.Movie)
|
||||
|| query.IncludeItemTypes.Contains(BaseItemKind.Trailer))
|
||||
{
|
||||
whereClauses.Add("(IsMovie is null OR IsMovie=@IsMovie)");
|
||||
}
|
||||
|
@ -3563,15 +3562,15 @@ namespace Emby.Server.Implementations.Data
|
|||
statement?.TryBind("@IsFolder", query.IsFolder);
|
||||
}
|
||||
|
||||
var includeTypes = query.IncludeItemTypes.Select(MapIncludeItemTypes).Where(x => x != null).ToArray();
|
||||
var includeTypes = query.IncludeItemTypes;
|
||||
// Only specify excluded types if no included types are specified
|
||||
if (includeTypes.Length == 0)
|
||||
if (query.IncludeItemTypes.Length == 0)
|
||||
{
|
||||
var excludeTypes = query.ExcludeItemTypes.Select(MapIncludeItemTypes).Where(x => x != null).ToArray();
|
||||
var excludeTypes = query.ExcludeItemTypes;
|
||||
if (excludeTypes.Length == 1)
|
||||
{
|
||||
whereClauses.Add("type<>@type");
|
||||
statement?.TryBind("@type", excludeTypes[0]);
|
||||
statement?.TryBind("@type", excludeTypes[0].ToString());
|
||||
}
|
||||
else if (excludeTypes.Length > 1)
|
||||
{
|
||||
|
@ -3582,7 +3581,7 @@ namespace Emby.Server.Implementations.Data
|
|||
else if (includeTypes.Length == 1)
|
||||
{
|
||||
whereClauses.Add("type=@type");
|
||||
statement?.TryBind("@type", includeTypes[0]);
|
||||
statement?.TryBind("@type", includeTypes[0].ToString());
|
||||
}
|
||||
else if (includeTypes.Length > 1)
|
||||
{
|
||||
|
@ -3911,7 +3910,7 @@ namespace Emby.Server.Implementations.Data
|
|||
if (query.IsPlayed.HasValue)
|
||||
{
|
||||
// We should probably figure this out for all folders, but for right now, this is the only place where we need it
|
||||
if (query.IncludeItemTypes.Length == 1 && string.Equals(query.IncludeItemTypes[0], nameof(Series), StringComparison.OrdinalIgnoreCase))
|
||||
if (query.IncludeItemTypes.Length == 1 && query.IncludeItemTypes[0] == BaseItemKind.Series)
|
||||
{
|
||||
if (query.IsPlayed.Value)
|
||||
{
|
||||
|
@ -4761,27 +4760,27 @@ namespace Emby.Server.Implementations.Data
|
|||
{
|
||||
var list = new List<string>();
|
||||
|
||||
if (IsTypeInQuery(nameof(Person), query))
|
||||
if (IsTypeInQuery(BaseItemKind.Person, query))
|
||||
{
|
||||
list.Add(typeof(Person).FullName);
|
||||
}
|
||||
|
||||
if (IsTypeInQuery(nameof(Genre), query))
|
||||
if (IsTypeInQuery(BaseItemKind.Genre, query))
|
||||
{
|
||||
list.Add(typeof(Genre).FullName);
|
||||
}
|
||||
|
||||
if (IsTypeInQuery(nameof(MusicGenre), query))
|
||||
if (IsTypeInQuery(BaseItemKind.MusicGenre, query))
|
||||
{
|
||||
list.Add(typeof(MusicGenre).FullName);
|
||||
}
|
||||
|
||||
if (IsTypeInQuery(nameof(MusicArtist), query))
|
||||
if (IsTypeInQuery(BaseItemKind.MusicArtist, query))
|
||||
{
|
||||
list.Add(typeof(MusicArtist).FullName);
|
||||
}
|
||||
|
||||
if (IsTypeInQuery(nameof(Studio), query))
|
||||
if (IsTypeInQuery(BaseItemKind.Studio, query))
|
||||
{
|
||||
list.Add(typeof(Studio).FullName);
|
||||
}
|
||||
|
@ -4789,14 +4788,14 @@ namespace Emby.Server.Implementations.Data
|
|||
return list;
|
||||
}
|
||||
|
||||
private bool IsTypeInQuery(string type, InternalItemsQuery query)
|
||||
private bool IsTypeInQuery(BaseItemKind type, InternalItemsQuery query)
|
||||
{
|
||||
if (query.ExcludeItemTypes.Contains(type, StringComparer.OrdinalIgnoreCase))
|
||||
if (query.ExcludeItemTypes.Contains(type))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(type, StringComparer.OrdinalIgnoreCase);
|
||||
return query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(type);
|
||||
}
|
||||
|
||||
private string GetCleanValue(string value)
|
||||
|
@ -4836,12 +4835,12 @@ namespace Emby.Server.Implementations.Data
|
|||
return true;
|
||||
}
|
||||
|
||||
if (query.IncludeItemTypes.Contains(nameof(Episode), StringComparer.OrdinalIgnoreCase)
|
||||
|| query.IncludeItemTypes.Contains(nameof(Video), StringComparer.OrdinalIgnoreCase)
|
||||
|| query.IncludeItemTypes.Contains(nameof(Movie), StringComparer.OrdinalIgnoreCase)
|
||||
|| query.IncludeItemTypes.Contains(nameof(MusicVideo), StringComparer.OrdinalIgnoreCase)
|
||||
|| query.IncludeItemTypes.Contains(nameof(Series), StringComparer.OrdinalIgnoreCase)
|
||||
|| query.IncludeItemTypes.Contains(nameof(Season), StringComparer.OrdinalIgnoreCase))
|
||||
if (query.IncludeItemTypes.Contains(BaseItemKind.Episode)
|
||||
|| query.IncludeItemTypes.Contains(BaseItemKind.Video)
|
||||
|| query.IncludeItemTypes.Contains(BaseItemKind.Movie)
|
||||
|| query.IncludeItemTypes.Contains(BaseItemKind.MusicVideo)
|
||||
|| query.IncludeItemTypes.Contains(BaseItemKind.Series)
|
||||
|| query.IncludeItemTypes.Contains(BaseItemKind.Season))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -4890,22 +4889,6 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
|||
return dict;
|
||||
}
|
||||
|
||||
private string MapIncludeItemTypes(string value)
|
||||
{
|
||||
if (_types.TryGetValue(value, out string result))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
if (IsValidType(value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
Logger.LogWarning("Unknown item type: {ItemType}", value);
|
||||
return null;
|
||||
}
|
||||
|
||||
public void DeleteItem(Guid id)
|
||||
{
|
||||
if (id == Guid.Empty)
|
||||
|
@ -5569,7 +5552,7 @@ AND Type = @InternalPersonType)");
|
|||
return result;
|
||||
}
|
||||
|
||||
private static ItemCounts GetItemCounts(IReadOnlyList<ResultSetValue> reader, int countStartColumn, string[] typesToCount)
|
||||
private static ItemCounts GetItemCounts(IReadOnlyList<ResultSetValue> reader, int countStartColumn, BaseItemKind[] typesToCount)
|
||||
{
|
||||
var counts = new ItemCounts();
|
||||
|
||||
|
|
|
@ -470,7 +470,7 @@ namespace Emby.Server.Implementations.Dto
|
|||
{
|
||||
var parentAlbumIds = _libraryManager.GetItemIds(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(MusicAlbum) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.MusicAlbum },
|
||||
Name = item.Album,
|
||||
Limit = 1
|
||||
});
|
||||
|
|
|
@ -28,35 +28,35 @@ namespace Emby.Server.Implementations.Images
|
|||
var view = (CollectionFolder)item;
|
||||
var viewType = view.CollectionType;
|
||||
|
||||
string[] includeItemTypes;
|
||||
BaseItemKind[] includeItemTypes;
|
||||
|
||||
if (string.Equals(viewType, CollectionType.Movies, StringComparison.Ordinal))
|
||||
{
|
||||
includeItemTypes = new string[] { "Movie" };
|
||||
includeItemTypes = new[] { BaseItemKind.Movie };
|
||||
}
|
||||
else if (string.Equals(viewType, CollectionType.TvShows, StringComparison.Ordinal))
|
||||
{
|
||||
includeItemTypes = new string[] { "Series" };
|
||||
includeItemTypes = new[] { BaseItemKind.Series };
|
||||
}
|
||||
else if (string.Equals(viewType, CollectionType.Music, StringComparison.Ordinal))
|
||||
{
|
||||
includeItemTypes = new string[] { "MusicAlbum" };
|
||||
includeItemTypes = new[] { BaseItemKind.MusicAlbum };
|
||||
}
|
||||
else if (string.Equals(viewType, CollectionType.Books, StringComparison.Ordinal))
|
||||
{
|
||||
includeItemTypes = new string[] { "Book", "AudioBook" };
|
||||
includeItemTypes = new[] { BaseItemKind.Book, BaseItemKind.AudioBook };
|
||||
}
|
||||
else if (string.Equals(viewType, CollectionType.BoxSets, StringComparison.Ordinal))
|
||||
{
|
||||
includeItemTypes = new string[] { "BoxSet" };
|
||||
includeItemTypes = new[] { BaseItemKind.BoxSet };
|
||||
}
|
||||
else if (string.Equals(viewType, CollectionType.HomeVideos, StringComparison.Ordinal) || string.Equals(viewType, CollectionType.Photos, StringComparison.Ordinal))
|
||||
{
|
||||
includeItemTypes = new string[] { "Video", "Photo" };
|
||||
includeItemTypes = new[] { BaseItemKind.Video, BaseItemKind.Photo };
|
||||
}
|
||||
else
|
||||
{
|
||||
includeItemTypes = new string[] { "Video", "Audio", "Photo", "Movie", "Series" };
|
||||
includeItemTypes = new[] { BaseItemKind.Video, BaseItemKind.Audio, BaseItemKind.Photo, BaseItemKind.Movie, BaseItemKind.Series };
|
||||
}
|
||||
|
||||
var recursive = !string.Equals(CollectionType.Playlists, viewType, StringComparison.OrdinalIgnoreCase);
|
||||
|
|
|
@ -6,6 +6,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Controller.Drawing;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
|
@ -41,7 +42,7 @@ namespace Emby.Server.Implementations.Images
|
|||
User = view.UserId.HasValue ? _userManager.GetUserById(view.UserId.Value) : null,
|
||||
CollapseBoxSetItems = false,
|
||||
Recursive = recursive,
|
||||
ExcludeItemTypes = new[] { "UserView", "CollectionFolder", "Person" },
|
||||
ExcludeItemTypes = new[] { BaseItemKind.UserView, BaseItemKind.CollectionFolder, BaseItemKind.Person },
|
||||
DtoOptions = new DtoOptions(false)
|
||||
});
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ namespace Emby.Server.Implementations.Images
|
|||
return _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
Genres = new[] { item.Name },
|
||||
IncludeItemTypes = new[] { nameof(Series), nameof(Movie) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Series, BaseItemKind.Movie },
|
||||
OrderBy = new[] { (ItemSortBy.Random, SortOrder.Ascending) },
|
||||
Limit = 4,
|
||||
Recursive = true,
|
||||
|
|
|
@ -44,9 +44,9 @@ namespace Emby.Server.Implementations.Images
|
|||
Genres = new[] { item.Name },
|
||||
IncludeItemTypes = new[]
|
||||
{
|
||||
nameof(MusicAlbum),
|
||||
nameof(MusicVideo),
|
||||
nameof(Audio)
|
||||
BaseItemKind.MusicAlbum,
|
||||
BaseItemKind.MusicVideo,
|
||||
BaseItemKind.Audio
|
||||
},
|
||||
OrderBy = new[] { (ItemSortBy.Random, SortOrder.Ascending) },
|
||||
Limit = 4,
|
||||
|
|
|
@ -965,7 +965,7 @@ namespace Emby.Server.Implementations.Library
|
|||
{
|
||||
var existing = GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(MusicArtist) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.MusicArtist },
|
||||
Name = name,
|
||||
DtoOptions = options
|
||||
}).Cast<MusicArtist>()
|
||||
|
|
|
@ -52,7 +52,7 @@ namespace Emby.Server.Implementations.Library
|
|||
var genres = item
|
||||
.GetRecursiveChildren(user, new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Audio) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Audio },
|
||||
DtoOptions = dtoOptions
|
||||
})
|
||||
.Cast<Audio>()
|
||||
|
@ -89,7 +89,7 @@ namespace Emby.Server.Implementations.Library
|
|||
{
|
||||
return _libraryManager.GetItemList(new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Audio) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Audio },
|
||||
|
||||
GenreIds = genreIds.ToArray(),
|
||||
|
||||
|
|
|
@ -59,9 +59,9 @@ namespace Emby.Server.Implementations.Library
|
|||
};
|
||||
}
|
||||
|
||||
private static void AddIfMissing(List<string> list, string value)
|
||||
private static void AddIfMissing(List<BaseItemKind> list, BaseItemKind value)
|
||||
{
|
||||
if (!list.Contains(value, StringComparer.OrdinalIgnoreCase))
|
||||
if (!list.Contains(value))
|
||||
{
|
||||
list.Add(value);
|
||||
}
|
||||
|
@ -86,63 +86,63 @@ namespace Emby.Server.Implementations.Library
|
|||
searchTerm = searchTerm.Trim().RemoveDiacritics();
|
||||
|
||||
var excludeItemTypes = query.ExcludeItemTypes.ToList();
|
||||
var includeItemTypes = (query.IncludeItemTypes ?? Array.Empty<string>()).ToList();
|
||||
var includeItemTypes = (query.IncludeItemTypes ?? Array.Empty<BaseItemKind>()).ToList();
|
||||
|
||||
excludeItemTypes.Add(nameof(Year));
|
||||
excludeItemTypes.Add(nameof(Folder));
|
||||
excludeItemTypes.Add(BaseItemKind.Year);
|
||||
excludeItemTypes.Add(BaseItemKind.Folder);
|
||||
|
||||
if (query.IncludeGenres && (includeItemTypes.Count == 0 || includeItemTypes.Contains("Genre", StringComparer.OrdinalIgnoreCase)))
|
||||
if (query.IncludeGenres && (includeItemTypes.Count == 0 || includeItemTypes.Contains(BaseItemKind.Genre)))
|
||||
{
|
||||
if (!query.IncludeMedia)
|
||||
{
|
||||
AddIfMissing(includeItemTypes, nameof(Genre));
|
||||
AddIfMissing(includeItemTypes, nameof(MusicGenre));
|
||||
AddIfMissing(includeItemTypes, BaseItemKind.Genre);
|
||||
AddIfMissing(includeItemTypes, BaseItemKind.MusicGenre);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AddIfMissing(excludeItemTypes, nameof(Genre));
|
||||
AddIfMissing(excludeItemTypes, nameof(MusicGenre));
|
||||
AddIfMissing(excludeItemTypes, BaseItemKind.Genre);
|
||||
AddIfMissing(excludeItemTypes, BaseItemKind.MusicGenre);
|
||||
}
|
||||
|
||||
if (query.IncludePeople && (includeItemTypes.Count == 0 || includeItemTypes.Contains("People", StringComparer.OrdinalIgnoreCase) || includeItemTypes.Contains("Person", StringComparer.OrdinalIgnoreCase)))
|
||||
if (query.IncludePeople && (includeItemTypes.Count == 0 || includeItemTypes.Contains(BaseItemKind.Person)))
|
||||
{
|
||||
if (!query.IncludeMedia)
|
||||
{
|
||||
AddIfMissing(includeItemTypes, nameof(Person));
|
||||
AddIfMissing(includeItemTypes, BaseItemKind.Person);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AddIfMissing(excludeItemTypes, nameof(Person));
|
||||
AddIfMissing(excludeItemTypes, BaseItemKind.Person);
|
||||
}
|
||||
|
||||
if (query.IncludeStudios && (includeItemTypes.Count == 0 || includeItemTypes.Contains("Studio", StringComparer.OrdinalIgnoreCase)))
|
||||
if (query.IncludeStudios && (includeItemTypes.Count == 0 || includeItemTypes.Contains(BaseItemKind.Studio)))
|
||||
{
|
||||
if (!query.IncludeMedia)
|
||||
{
|
||||
AddIfMissing(includeItemTypes, nameof(Studio));
|
||||
AddIfMissing(includeItemTypes, BaseItemKind.Studio);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AddIfMissing(excludeItemTypes, nameof(Studio));
|
||||
AddIfMissing(excludeItemTypes, BaseItemKind.Studio);
|
||||
}
|
||||
|
||||
if (query.IncludeArtists && (includeItemTypes.Count == 0 || includeItemTypes.Contains("MusicArtist", StringComparer.OrdinalIgnoreCase)))
|
||||
if (query.IncludeArtists && (includeItemTypes.Count == 0 || includeItemTypes.Contains(BaseItemKind.MusicArtist)))
|
||||
{
|
||||
if (!query.IncludeMedia)
|
||||
{
|
||||
AddIfMissing(includeItemTypes, nameof(MusicArtist));
|
||||
AddIfMissing(includeItemTypes, BaseItemKind.MusicArtist);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AddIfMissing(excludeItemTypes, nameof(MusicArtist));
|
||||
AddIfMissing(excludeItemTypes, BaseItemKind.MusicArtist);
|
||||
}
|
||||
|
||||
AddIfMissing(excludeItemTypes, nameof(CollectionFolder));
|
||||
AddIfMissing(excludeItemTypes, nameof(Folder));
|
||||
AddIfMissing(excludeItemTypes, BaseItemKind.CollectionFolder);
|
||||
AddIfMissing(excludeItemTypes, BaseItemKind.Folder);
|
||||
var mediaTypes = query.MediaTypes.ToList();
|
||||
|
||||
if (includeItemTypes.Count > 0)
|
||||
|
@ -183,7 +183,7 @@ namespace Emby.Server.Implementations.Library
|
|||
|
||||
List<BaseItem> mediaItems;
|
||||
|
||||
if (searchQuery.IncludeItemTypes.Length == 1 && string.Equals(searchQuery.IncludeItemTypes[0], "MusicArtist", StringComparison.OrdinalIgnoreCase))
|
||||
if (searchQuery.IncludeItemTypes.Length == 1 && searchQuery.IncludeItemTypes[0] == BaseItemKind.MusicArtist)
|
||||
{
|
||||
if (!searchQuery.ParentId.Equals(Guid.Empty))
|
||||
{
|
||||
|
@ -192,7 +192,7 @@ namespace Emby.Server.Implementations.Library
|
|||
|
||||
searchQuery.ParentId = Guid.Empty;
|
||||
searchQuery.IncludeItemsByName = true;
|
||||
searchQuery.IncludeItemTypes = Array.Empty<string>();
|
||||
searchQuery.IncludeItemTypes = Array.Empty<BaseItemKind>();
|
||||
mediaItems = _libraryManager.GetAllArtists(searchQuery).Items.Select(i => i.Item1).ToList();
|
||||
}
|
||||
else
|
||||
|
|
|
@ -300,11 +300,11 @@ namespace Emby.Server.Implementations.Library
|
|||
{
|
||||
if (hasCollectionType.All(i => string.Equals(i.CollectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
includeItemTypes = new string[] { "Movie" };
|
||||
includeItemTypes = new[] { BaseItemKind.Movie };
|
||||
}
|
||||
else if (hasCollectionType.All(i => string.Equals(i.CollectionType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
includeItemTypes = new string[] { "Episode" };
|
||||
includeItemTypes = new[] { BaseItemKind.Episode };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -344,13 +344,13 @@ namespace Emby.Server.Implementations.Library
|
|||
var excludeItemTypes = includeItemTypes.Length == 0 && mediaTypes.Count == 0
|
||||
? new[]
|
||||
{
|
||||
nameof(Person),
|
||||
nameof(Studio),
|
||||
nameof(Year),
|
||||
nameof(MusicGenre),
|
||||
nameof(Genre)
|
||||
BaseItemKind.Person,
|
||||
BaseItemKind.Studio,
|
||||
BaseItemKind.Year,
|
||||
BaseItemKind.MusicGenre,
|
||||
BaseItemKind.Genre
|
||||
}
|
||||
: Array.Empty<string>();
|
||||
: Array.Empty<BaseItemKind>();
|
||||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@ using System.Globalization;
|
|||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Library;
|
||||
|
@ -81,7 +82,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
|||
|
||||
var deadEntities = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(MusicArtist) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.MusicArtist },
|
||||
IsDeadArtist = true,
|
||||
IsLocked = false
|
||||
}).Cast<MusicArtist>().ToList();
|
||||
|
|
|
@ -64,7 +64,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
|||
var movies = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
MediaTypes = new string[] { MediaType.Video },
|
||||
IncludeItemTypes = new[] { nameof(Movie) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Movie },
|
||||
IsVirtualItem = false,
|
||||
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) },
|
||||
Parent = library,
|
||||
|
@ -108,7 +108,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
|||
|
||||
var boxSets = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(BoxSet) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.BoxSet },
|
||||
CollapseBoxSetItems = false,
|
||||
Recursive = true
|
||||
});
|
||||
|
|
|
@ -2,6 +2,7 @@ using System;
|
|||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
|
@ -91,7 +92,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
|||
|
||||
var deadEntities = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Person) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Person },
|
||||
IsDeadPerson = true,
|
||||
IsLocked = false
|
||||
});
|
||||
|
|
|
@ -2,6 +2,7 @@ using System;
|
|||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
|
@ -80,7 +81,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
|||
|
||||
var deadEntities = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Studio) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Studio },
|
||||
IsDeadStudio = true,
|
||||
IsLocked = false
|
||||
});
|
||||
|
|
|
@ -1778,7 +1778,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||
{
|
||||
var program = string.IsNullOrWhiteSpace(timer.ProgramId) ? null : _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
Limit = 1,
|
||||
ExternalId = timer.ProgramId,
|
||||
DtoOptions = new DtoOptions(true)
|
||||
|
@ -2137,7 +2137,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||
{
|
||||
var query = new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
Limit = 1,
|
||||
DtoOptions = new DtoOptions(true)
|
||||
{
|
||||
|
@ -2352,7 +2352,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||
|
||||
var query = new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
ExternalSeriesId = seriesTimer.SeriesId,
|
||||
DtoOptions = new DtoOptions(true)
|
||||
{
|
||||
|
@ -2387,7 +2387,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||
channel = _libraryManager.GetItemList(
|
||||
new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(LiveTvChannel) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvChannel },
|
||||
ItemIds = new[] { parent.ChannelId },
|
||||
DtoOptions = new DtoOptions()
|
||||
}).FirstOrDefault() as LiveTvChannel;
|
||||
|
@ -2446,7 +2446,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||
channel = _libraryManager.GetItemList(
|
||||
new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(LiveTvChannel) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvChannel },
|
||||
ItemIds = new[] { programInfo.ChannelId },
|
||||
DtoOptions = new DtoOptions()
|
||||
}).FirstOrDefault() as LiveTvChannel;
|
||||
|
@ -2511,7 +2511,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||
var seriesIds = _libraryManager.GetItemIds(
|
||||
new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Series) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Series },
|
||||
Name = program.Name
|
||||
}).ToArray();
|
||||
|
||||
|
@ -2524,7 +2524,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
|||
{
|
||||
var result = _libraryManager.GetItemIds(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Episode) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
||||
ParentIndexNumber = program.SeasonNumber.Value,
|
||||
IndexNumber = program.EpisodeNumber.Value,
|
||||
AncestorIds = seriesIds,
|
||||
|
|
|
@ -7,6 +7,7 @@ using System.Globalization;
|
|||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Common;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Controller.Drawing;
|
||||
|
@ -161,7 +162,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
{
|
||||
var librarySeries = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(Series) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Series },
|
||||
Name = seriesName,
|
||||
Limit = 1,
|
||||
ImageTypes = new ImageType[] { ImageType.Thumb },
|
||||
|
@ -204,7 +205,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
|
||||
var program = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
ExternalSeriesId = programSeriesId,
|
||||
Limit = 1,
|
||||
ImageTypes = new ImageType[] { ImageType.Primary },
|
||||
|
@ -255,7 +256,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
{
|
||||
var librarySeries = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(Series) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Series },
|
||||
Name = seriesName,
|
||||
Limit = 1,
|
||||
ImageTypes = new ImageType[] { ImageType.Thumb },
|
||||
|
@ -298,7 +299,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
|
||||
var program = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(Series) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Series },
|
||||
Name = seriesName,
|
||||
Limit = 1,
|
||||
ImageTypes = new ImageType[] { ImageType.Primary },
|
||||
|
@ -309,7 +310,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
{
|
||||
program = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
ExternalSeriesId = programSeriesId,
|
||||
Limit = 1,
|
||||
ImageTypes = new ImageType[] { ImageType.Primary },
|
||||
|
|
|
@ -191,7 +191,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
IsKids = query.IsKids,
|
||||
IsSports = query.IsSports,
|
||||
IsSeries = query.IsSeries,
|
||||
IncludeItemTypes = new[] { nameof(LiveTvChannel) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvChannel },
|
||||
TopParentIds = new[] { topFolder.Id },
|
||||
IsFavorite = query.IsFavorite,
|
||||
IsLiked = query.IsLiked,
|
||||
|
@ -810,7 +810,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
|
||||
var internalQuery = new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
MinEndDate = query.MinEndDate,
|
||||
MinStartDate = query.MinStartDate,
|
||||
MaxEndDate = query.MaxEndDate,
|
||||
|
@ -874,7 +874,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
|
||||
var internalQuery = new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
IsAiring = query.IsAiring,
|
||||
HasAired = query.HasAired,
|
||||
IsNews = query.IsNews,
|
||||
|
@ -1085,8 +1085,8 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
|
||||
if (cleanDatabase)
|
||||
{
|
||||
CleanDatabaseInternal(newChannelIdList.ToArray(), new[] { nameof(LiveTvChannel) }, progress, cancellationToken);
|
||||
CleanDatabaseInternal(newProgramIdList.ToArray(), new[] { nameof(LiveTvProgram) }, progress, cancellationToken);
|
||||
CleanDatabaseInternal(newChannelIdList.ToArray(), new[] { BaseItemKind.LiveTvChannel }, progress, cancellationToken);
|
||||
CleanDatabaseInternal(newProgramIdList.ToArray(), new[] { BaseItemKind.LiveTvProgram }, progress, cancellationToken);
|
||||
}
|
||||
|
||||
var coreService = _services.OfType<EmbyTV.EmbyTV>().FirstOrDefault();
|
||||
|
@ -1177,7 +1177,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
|
||||
var existingPrograms = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new string[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
ChannelIds = new Guid[] { currentChannel.Id },
|
||||
DtoOptions = new DtoOptions(true)
|
||||
}).Cast<LiveTvProgram>().ToDictionary(i => i.Id);
|
||||
|
@ -1261,7 +1261,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
return new Tuple<List<Guid>, List<Guid>>(channels, programs);
|
||||
}
|
||||
|
||||
private void CleanDatabaseInternal(Guid[] currentIdList, string[] validTypes, IProgress<double> progress, CancellationToken cancellationToken)
|
||||
private void CleanDatabaseInternal(Guid[] currentIdList, BaseItemKind[] validTypes, IProgress<double> progress, CancellationToken cancellationToken)
|
||||
{
|
||||
var list = _itemRepo.GetItemIdsList(new InternalItemsQuery
|
||||
{
|
||||
|
@ -1328,25 +1328,25 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
.Select(i => i.Id)
|
||||
.ToList();
|
||||
|
||||
var excludeItemTypes = new List<string>();
|
||||
var excludeItemTypes = new List<BaseItemKind>();
|
||||
|
||||
if (folderIds.Count == 0)
|
||||
{
|
||||
return new QueryResult<BaseItem>();
|
||||
}
|
||||
|
||||
var includeItemTypes = new List<string>();
|
||||
var includeItemTypes = new List<BaseItemKind>();
|
||||
var genres = new List<string>();
|
||||
|
||||
if (query.IsMovie.HasValue)
|
||||
{
|
||||
if (query.IsMovie.Value)
|
||||
{
|
||||
includeItemTypes.Add(nameof(Movie));
|
||||
includeItemTypes.Add(BaseItemKind.Movie);
|
||||
}
|
||||
else
|
||||
{
|
||||
excludeItemTypes.Add(nameof(Movie));
|
||||
excludeItemTypes.Add(BaseItemKind.Movie);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1354,11 +1354,11 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
{
|
||||
if (query.IsSeries.Value)
|
||||
{
|
||||
includeItemTypes.Add(nameof(Episode));
|
||||
includeItemTypes.Add(BaseItemKind.Episode);
|
||||
}
|
||||
else
|
||||
{
|
||||
excludeItemTypes.Add(nameof(Episode));
|
||||
excludeItemTypes.Add(BaseItemKind.Episode);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1878,7 +1878,7 @@ namespace Emby.Server.Implementations.LiveTv
|
|||
|
||||
var programs = options.AddCurrentProgram ? _libraryManager.GetItemList(new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(LiveTvProgram) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.LiveTvProgram },
|
||||
ChannelIds = channelIds,
|
||||
MaxStartDate = now,
|
||||
MinEndDate = now,
|
||||
|
|
|
@ -4,6 +4,7 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Text.Json.Serialization;
|
||||
using Jellyfin.Data.Entities;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Playlists;
|
||||
using MediaBrowser.Model.Querying;
|
||||
|
@ -45,7 +46,7 @@ namespace Emby.Server.Implementations.Playlists
|
|||
}
|
||||
|
||||
query.Recursive = true;
|
||||
query.IncludeItemTypes = new[] { "Playlist" };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Playlist };
|
||||
query.Parent = null;
|
||||
return LibraryManager.GetItemsResult(query);
|
||||
}
|
||||
|
|
|
@ -1292,7 +1292,7 @@ namespace Emby.Server.Implementations.Session
|
|||
{
|
||||
["ItemId"] = command.ItemId,
|
||||
["ItemName"] = command.ItemName,
|
||||
["ItemType"] = command.ItemType
|
||||
["ItemType"] = command.ItemType.ToString()
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ namespace Emby.Server.Implementations.TV
|
|||
.GetItemList(
|
||||
new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Episode) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
||||
OrderBy = new[] { new ValueTuple<string, SortOrder>(ItemSortBy.DatePlayed, SortOrder.Descending) },
|
||||
SeriesPresentationUniqueKey = presentationUniqueKey,
|
||||
Limit = limit,
|
||||
|
@ -191,7 +191,7 @@ namespace Emby.Server.Implementations.TV
|
|||
{
|
||||
AncestorWithPresentationUniqueKey = null,
|
||||
SeriesPresentationUniqueKey = seriesKey,
|
||||
IncludeItemTypes = new[] { nameof(Episode) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
||||
OrderBy = new[] { new ValueTuple<string, SortOrder>(ItemSortBy.SortName, SortOrder.Descending) },
|
||||
IsPlayed = true,
|
||||
Limit = 1,
|
||||
|
@ -209,7 +209,7 @@ namespace Emby.Server.Implementations.TV
|
|||
{
|
||||
AncestorWithPresentationUniqueKey = null,
|
||||
SeriesPresentationUniqueKey = seriesKey,
|
||||
IncludeItemTypes = new[] { nameof(Episode) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
||||
OrderBy = new[] { new ValueTuple<string, SortOrder>(ItemSortBy.SortName, SortOrder.Ascending) },
|
||||
Limit = 1,
|
||||
IsPlayed = false,
|
||||
|
@ -226,7 +226,7 @@ namespace Emby.Server.Implementations.TV
|
|||
AncestorWithPresentationUniqueKey = null,
|
||||
SeriesPresentationUniqueKey = seriesKey,
|
||||
ParentIndexNumber = 0,
|
||||
IncludeItemTypes = new[] { nameof(Episode) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
||||
IsPlayed = false,
|
||||
IsVirtualItem = false,
|
||||
DtoOptions = dtoOptions
|
||||
|
|
|
@ -133,8 +133,8 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
MediaTypes = mediaTypes,
|
||||
StartIndex = startIndex,
|
||||
Limit = limit,
|
||||
|
@ -337,8 +337,8 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
MediaTypes = mediaTypes,
|
||||
StartIndex = startIndex,
|
||||
Limit = limit,
|
||||
|
|
|
@ -71,7 +71,7 @@ namespace Jellyfin.Api.Controllers
|
|||
{
|
||||
User = user,
|
||||
MediaTypes = mediaTypes,
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
Recursive = true,
|
||||
EnableTotalRecordCount = false,
|
||||
DtoOptions = new DtoOptions
|
||||
|
@ -166,7 +166,7 @@ namespace Jellyfin.Api.Controllers
|
|||
var filters = new QueryFilters();
|
||||
var genreQuery = new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
DtoOptions = new DtoOptions
|
||||
{
|
||||
Fields = Array.Empty<ItemFields>(),
|
||||
|
|
|
@ -101,8 +101,8 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
StartIndex = startIndex,
|
||||
Limit = limit,
|
||||
IsFavorite = isFavorite,
|
||||
|
@ -160,7 +160,7 @@ namespace Jellyfin.Api.Controllers
|
|||
Genre item = new Genre();
|
||||
if (genreName.IndexOf(BaseItem.SlugChar, StringComparison.OrdinalIgnoreCase) != -1)
|
||||
{
|
||||
var result = GetItemFromSlugName<Genre>(_libraryManager, genreName, dtoOptions);
|
||||
var result = GetItemFromSlugName<Genre>(_libraryManager, genreName, dtoOptions, BaseItemKind.Genre);
|
||||
|
||||
if (result != null)
|
||||
{
|
||||
|
@ -182,27 +182,27 @@ namespace Jellyfin.Api.Controllers
|
|||
return _dtoService.GetBaseItemDto(item, dtoOptions);
|
||||
}
|
||||
|
||||
private T? GetItemFromSlugName<T>(ILibraryManager libraryManager, string name, DtoOptions dtoOptions)
|
||||
private T? GetItemFromSlugName<T>(ILibraryManager libraryManager, string name, DtoOptions dtoOptions, BaseItemKind baseItemKind)
|
||||
where T : BaseItem, new()
|
||||
{
|
||||
var result = libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
Name = name.Replace(BaseItem.SlugChar, '&'),
|
||||
IncludeItemTypes = new[] { typeof(T).Name },
|
||||
IncludeItemTypes = new[] { baseItemKind },
|
||||
DtoOptions = dtoOptions
|
||||
}).OfType<T>().FirstOrDefault();
|
||||
|
||||
result ??= libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
Name = name.Replace(BaseItem.SlugChar, '/'),
|
||||
IncludeItemTypes = new[] { typeof(T).Name },
|
||||
IncludeItemTypes = new[] { baseItemKind },
|
||||
DtoOptions = dtoOptions
|
||||
}).OfType<T>().FirstOrDefault();
|
||||
|
||||
result ??= libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
Name = name.Replace(BaseItem.SlugChar, '?'),
|
||||
IncludeItemTypes = new[] { typeof(T).Name },
|
||||
IncludeItemTypes = new[] { baseItemKind },
|
||||
DtoOptions = dtoOptions
|
||||
}).OfType<T>().FirstOrDefault();
|
||||
|
||||
|
|
|
@ -296,8 +296,8 @@ namespace Jellyfin.Api.Controllers
|
|||
{
|
||||
IsPlayed = isPlayed,
|
||||
MediaTypes = mediaTypes,
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
Recursive = recursive ?? false,
|
||||
OrderBy = RequestHelpers.GetOrderBy(sortBy, sortOrder),
|
||||
IsFavorite = isFavorite,
|
||||
|
@ -459,7 +459,7 @@ namespace Jellyfin.Api.Controllers
|
|||
{
|
||||
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[] { BaseItemKind.MusicAlbum }, Name = i, Limit = 1 });
|
||||
}).ToArray();
|
||||
}
|
||||
|
||||
|
@ -483,7 +483,7 @@ namespace Jellyfin.Api.Controllers
|
|||
if (query.OrderBy.Count == 0)
|
||||
{
|
||||
// Albums by artist
|
||||
if (query.ArtistIds.Length > 0 && query.IncludeItemTypes.Length == 1 && string.Equals(query.IncludeItemTypes[0], "MusicAlbum", StringComparison.OrdinalIgnoreCase))
|
||||
if (query.ArtistIds.Length > 0 && query.IncludeItemTypes.Length == 1 && query.IncludeItemTypes[0] == BaseItemKind.MusicAlbum)
|
||||
{
|
||||
query.OrderBy = new[] { new ValueTuple<string, SortOrder>(ItemSortBy.ProductionYear, SortOrder.Descending), new ValueTuple<string, SortOrder>(ItemSortBy.SortName, SortOrder.Ascending) };
|
||||
}
|
||||
|
@ -831,8 +831,8 @@ namespace Jellyfin.Api.Controllers
|
|||
CollapseBoxSetItems = false,
|
||||
EnableTotalRecordCount = enableTotalRecordCount,
|
||||
AncestorIds = ancestorIds,
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
SearchTerm = searchTerm,
|
||||
ExcludeItemIds = excludeItemIds
|
||||
});
|
||||
|
|
|
@ -14,6 +14,7 @@ using Jellyfin.Api.Extensions;
|
|||
using Jellyfin.Api.ModelBinders;
|
||||
using Jellyfin.Api.Models.LibraryDtos;
|
||||
using Jellyfin.Data.Entities;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Common.Progress;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
|
@ -413,14 +414,14 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var counts = new ItemCounts
|
||||
{
|
||||
AlbumCount = GetCount(typeof(MusicAlbum), user, isFavorite),
|
||||
EpisodeCount = GetCount(typeof(Episode), user, isFavorite),
|
||||
MovieCount = GetCount(typeof(Movie), user, isFavorite),
|
||||
SeriesCount = GetCount(typeof(Series), user, isFavorite),
|
||||
SongCount = GetCount(typeof(Audio), user, isFavorite),
|
||||
MusicVideoCount = GetCount(typeof(MusicVideo), user, isFavorite),
|
||||
BoxSetCount = GetCount(typeof(BoxSet), user, isFavorite),
|
||||
BookCount = GetCount(typeof(Book), user, isFavorite)
|
||||
AlbumCount = GetCount(BaseItemKind.MusicAlbum, user, isFavorite),
|
||||
EpisodeCount = GetCount(BaseItemKind.Episode, user, isFavorite),
|
||||
MovieCount = GetCount(BaseItemKind.Movie, user, isFavorite),
|
||||
SeriesCount = GetCount(BaseItemKind.Series, user, isFavorite),
|
||||
SongCount = GetCount(BaseItemKind.Audio, user, isFavorite),
|
||||
MusicVideoCount = GetCount(BaseItemKind.MusicVideo, user, isFavorite),
|
||||
BoxSetCount = GetCount(BaseItemKind.BoxSet, user, isFavorite),
|
||||
BookCount = GetCount(BaseItemKind.Book, user, isFavorite)
|
||||
};
|
||||
|
||||
return counts;
|
||||
|
@ -529,7 +530,7 @@ namespace Jellyfin.Api.Controllers
|
|||
{
|
||||
var series = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Series) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Series },
|
||||
DtoOptions = new DtoOptions(false)
|
||||
{
|
||||
EnableImages = false
|
||||
|
@ -559,7 +560,7 @@ namespace Jellyfin.Api.Controllers
|
|||
{
|
||||
var movies = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Movie) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Movie },
|
||||
DtoOptions = new DtoOptions(false)
|
||||
{
|
||||
EnableImages = false
|
||||
|
@ -715,26 +716,26 @@ namespace Jellyfin.Api.Controllers
|
|||
bool? isMovie = item is Movie || (program != null && program.IsMovie) || item is Trailer;
|
||||
bool? isSeries = item is Series || (program != null && program.IsSeries);
|
||||
|
||||
var includeItemTypes = new List<string>();
|
||||
var includeItemTypes = new List<BaseItemKind>();
|
||||
if (isMovie.Value)
|
||||
{
|
||||
includeItemTypes.Add(nameof(Movie));
|
||||
includeItemTypes.Add(BaseItemKind.Movie);
|
||||
if (_serverConfigurationManager.Configuration.EnableExternalContentInSuggestions)
|
||||
{
|
||||
includeItemTypes.Add(nameof(Trailer));
|
||||
includeItemTypes.Add(nameof(LiveTvProgram));
|
||||
includeItemTypes.Add(BaseItemKind.Trailer);
|
||||
includeItemTypes.Add(BaseItemKind.LiveTvProgram);
|
||||
}
|
||||
}
|
||||
else if (isSeries.Value)
|
||||
{
|
||||
includeItemTypes.Add(nameof(Series));
|
||||
includeItemTypes.Add(BaseItemKind.Series);
|
||||
}
|
||||
else
|
||||
{
|
||||
// For non series and movie types these columns are typically null
|
||||
isSeries = null;
|
||||
isMovie = null;
|
||||
includeItemTypes.Add(item.GetType().Name);
|
||||
includeItemTypes.Add(item.GetBaseItemKind());
|
||||
}
|
||||
|
||||
var query = new InternalItemsQuery(user)
|
||||
|
@ -871,11 +872,11 @@ namespace Jellyfin.Api.Controllers
|
|||
return result;
|
||||
}
|
||||
|
||||
private int GetCount(Type type, User? user, bool? isFavorite)
|
||||
private int GetCount(BaseItemKind itemKind, User? user, bool? isFavorite)
|
||||
{
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { type.Name },
|
||||
IncludeItemTypes = new[] { itemKind },
|
||||
Limit = 0,
|
||||
Recursive = true,
|
||||
IsVirtualItem = false,
|
||||
|
|
|
@ -84,7 +84,7 @@ namespace Jellyfin.Api.Controllers
|
|||
{
|
||||
IncludeItemTypes = new[]
|
||||
{
|
||||
nameof(Movie),
|
||||
BaseItemKind.Movie,
|
||||
// nameof(Trailer),
|
||||
// nameof(LiveTvProgram)
|
||||
},
|
||||
|
@ -99,11 +99,11 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var recentlyPlayedMovies = _libraryManager.GetItemList(query);
|
||||
|
||||
var itemTypes = new List<string> { nameof(Movie) };
|
||||
var itemTypes = new List<BaseItemKind> { BaseItemKind.Movie };
|
||||
if (_serverConfigurationManager.Configuration.EnableExternalContentInSuggestions)
|
||||
{
|
||||
itemTypes.Add(nameof(Trailer));
|
||||
itemTypes.Add(nameof(LiveTvProgram));
|
||||
itemTypes.Add(BaseItemKind.Trailer);
|
||||
itemTypes.Add(BaseItemKind.LiveTvProgram);
|
||||
}
|
||||
|
||||
var likedMovies = _libraryManager.GetItemList(new InternalItemsQuery(user)
|
||||
|
@ -182,11 +182,11 @@ namespace Jellyfin.Api.Controllers
|
|||
DtoOptions dtoOptions,
|
||||
RecommendationType type)
|
||||
{
|
||||
var itemTypes = new List<string> { nameof(Movie) };
|
||||
var itemTypes = new List<BaseItemKind> { BaseItemKind.Movie };
|
||||
if (_serverConfigurationManager.Configuration.EnableExternalContentInSuggestions)
|
||||
{
|
||||
itemTypes.Add(nameof(Trailer));
|
||||
itemTypes.Add(nameof(LiveTvProgram));
|
||||
itemTypes.Add(BaseItemKind.Trailer);
|
||||
itemTypes.Add(BaseItemKind.LiveTvProgram);
|
||||
}
|
||||
|
||||
foreach (var name in names)
|
||||
|
@ -224,11 +224,11 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
private IEnumerable<RecommendationDto> GetWithActor(User? user, IEnumerable<string> names, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
|
||||
{
|
||||
var itemTypes = new List<string> { nameof(Movie) };
|
||||
var itemTypes = new List<BaseItemKind> { BaseItemKind.Movie };
|
||||
if (_serverConfigurationManager.Configuration.EnableExternalContentInSuggestions)
|
||||
{
|
||||
itemTypes.Add(nameof(Trailer));
|
||||
itemTypes.Add(nameof(LiveTvProgram));
|
||||
itemTypes.Add(BaseItemKind.Trailer);
|
||||
itemTypes.Add(BaseItemKind.LiveTvProgram);
|
||||
}
|
||||
|
||||
foreach (var name in names)
|
||||
|
@ -264,11 +264,11 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
private IEnumerable<RecommendationDto> GetSimilarTo(User? user, IEnumerable<BaseItem> baselineItems, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
|
||||
{
|
||||
var itemTypes = new List<string> { nameof(Movie) };
|
||||
var itemTypes = new List<BaseItemKind> { BaseItemKind.Movie };
|
||||
if (_serverConfigurationManager.Configuration.EnableExternalContentInSuggestions)
|
||||
{
|
||||
itemTypes.Add(nameof(Trailer));
|
||||
itemTypes.Add(nameof(LiveTvProgram));
|
||||
itemTypes.Add(BaseItemKind.Trailer);
|
||||
itemTypes.Add(BaseItemKind.LiveTvProgram);
|
||||
}
|
||||
|
||||
foreach (var item in baselineItems)
|
||||
|
|
|
@ -101,8 +101,8 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
StartIndex = startIndex,
|
||||
Limit = limit,
|
||||
IsFavorite = isFavorite,
|
||||
|
@ -149,7 +149,7 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
if (genreName.IndexOf(BaseItem.SlugChar, StringComparison.OrdinalIgnoreCase) != -1)
|
||||
{
|
||||
item = GetItemFromSlugName<MusicGenre>(_libraryManager, genreName, dtoOptions);
|
||||
item = GetItemFromSlugName<MusicGenre>(_libraryManager, genreName, dtoOptions, BaseItemKind.MusicGenre);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -166,27 +166,27 @@ namespace Jellyfin.Api.Controllers
|
|||
return _dtoService.GetBaseItemDto(item, dtoOptions);
|
||||
}
|
||||
|
||||
private T? GetItemFromSlugName<T>(ILibraryManager libraryManager, string name, DtoOptions dtoOptions)
|
||||
private T? GetItemFromSlugName<T>(ILibraryManager libraryManager, string name, DtoOptions dtoOptions, BaseItemKind baseItemKind)
|
||||
where T : BaseItem, new()
|
||||
{
|
||||
var result = libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
Name = name.Replace(BaseItem.SlugChar, '&'),
|
||||
IncludeItemTypes = new[] { typeof(T).Name },
|
||||
IncludeItemTypes = new[] { baseItemKind },
|
||||
DtoOptions = dtoOptions
|
||||
}).OfType<T>().FirstOrDefault();
|
||||
|
||||
result ??= libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
Name = name.Replace(BaseItem.SlugChar, '/'),
|
||||
IncludeItemTypes = new[] { typeof(T).Name },
|
||||
IncludeItemTypes = new[] { baseItemKind },
|
||||
DtoOptions = dtoOptions
|
||||
}).OfType<T>().FirstOrDefault();
|
||||
|
||||
result ??= libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
Name = name.Replace(BaseItem.SlugChar, '?'),
|
||||
IncludeItemTypes = new[] { typeof(T).Name },
|
||||
IncludeItemTypes = new[] { baseItemKind },
|
||||
DtoOptions = dtoOptions
|
||||
}).OfType<T>().FirstOrDefault();
|
||||
|
||||
|
|
|
@ -110,8 +110,8 @@ namespace Jellyfin.Api.Controllers
|
|||
IncludeStudios = includeStudios,
|
||||
StartIndex = startIndex,
|
||||
UserId = userId ?? Guid.Empty,
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
MediaTypes = mediaTypes,
|
||||
ParentId = parentId,
|
||||
|
||||
|
|
|
@ -127,7 +127,7 @@ namespace Jellyfin.Api.Controllers
|
|||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
public async Task<ActionResult> DisplayContent(
|
||||
[FromRoute, Required] string sessionId,
|
||||
[FromQuery, Required] string itemType,
|
||||
[FromQuery, Required] BaseItemKind itemType,
|
||||
[FromQuery, Required] string itemId,
|
||||
[FromQuery, Required] string itemName)
|
||||
{
|
||||
|
|
|
@ -97,8 +97,8 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
StartIndex = startIndex,
|
||||
Limit = limit,
|
||||
IsFavorite = isFavorite,
|
||||
|
|
|
@ -58,7 +58,7 @@ namespace Jellyfin.Api.Controllers
|
|||
public ActionResult<QueryResult<BaseItemDto>> GetSuggestions(
|
||||
[FromRoute, Required] Guid userId,
|
||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] mediaType,
|
||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] type,
|
||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] BaseItemKind[] type,
|
||||
[FromQuery] int? startIndex,
|
||||
[FromQuery] int? limit,
|
||||
[FromQuery] bool enableTotalRecordCount = false)
|
||||
|
|
|
@ -157,7 +157,7 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Episode) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
||||
OrderBy = new[] { (ItemSortBy.PremiereDate, SortOrder.Ascending), (ItemSortBy.SortName, SortOrder.Ascending) },
|
||||
MinPremiereDate = minPremiereDate,
|
||||
StartIndex = startIndex,
|
||||
|
|
|
@ -297,7 +297,7 @@ namespace Jellyfin.Api.Controllers
|
|||
new LatestItemsQuery
|
||||
{
|
||||
GroupItems = groupItems,
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
IsPlayed = isPlayed,
|
||||
Limit = limit,
|
||||
ParentId = parentId ?? Guid.Empty,
|
||||
|
|
|
@ -101,8 +101,8 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
ExcludeItemTypes = RequestHelpers.GetItemTypeStrings(excludeItemTypes),
|
||||
IncludeItemTypes = RequestHelpers.GetItemTypeStrings(includeItemTypes),
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
IncludeItemTypes = includeItemTypes,
|
||||
MediaTypes = mediaTypes,
|
||||
DtoOptions = dtoOptions
|
||||
};
|
||||
|
|
|
@ -137,21 +137,5 @@ namespace Jellyfin.Api.Helpers
|
|||
TotalRecordCount = result.TotalRecordCount
|
||||
};
|
||||
}
|
||||
|
||||
internal static string[] GetItemTypeStrings(IReadOnlyList<BaseItemKind> itemKinds)
|
||||
{
|
||||
if (itemKinds.Count == 0)
|
||||
{
|
||||
return Array.Empty<string>();
|
||||
}
|
||||
|
||||
var itemTypes = new string[itemKinds.Count];
|
||||
for (var i = 0; i < itemKinds.Count; i++)
|
||||
{
|
||||
itemTypes[i] = itemKinds[i].ToString();
|
||||
}
|
||||
|
||||
return itemTypes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -88,7 +88,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
|||
{
|
||||
if (query.IncludeItemTypes.Length == 0)
|
||||
{
|
||||
query.IncludeItemTypes = new[] { nameof(Audio), nameof(MusicVideo), nameof(MusicAlbum) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Audio, BaseItemKind.MusicVideo, BaseItemKind.MusicAlbum };
|
||||
query.ArtistIds = new[] { Id };
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
using Diacritics.Extensions;
|
||||
using Jellyfin.Data.Enums;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace MediaBrowser.Controller.Entities.Audio
|
||||
|
@ -66,7 +67,7 @@ namespace MediaBrowser.Controller.Entities.Audio
|
|||
public IList<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
||||
{
|
||||
query.GenreIds = new[] { Id };
|
||||
query.IncludeItemTypes = new[] { nameof(MusicVideo), nameof(Audio), nameof(MusicAlbum), nameof(MusicArtist) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.MusicVideo, BaseItemKind.Audio, BaseItemKind.MusicAlbum, BaseItemKind.MusicArtist };
|
||||
|
||||
return LibraryManager.GetItemList(query);
|
||||
}
|
||||
|
|
|
@ -40,6 +40,8 @@ namespace MediaBrowser.Controller.Entities
|
|||
/// </summary>
|
||||
public abstract class BaseItem : IHasProviderIds, IHasLookupInfo<ItemLookupInfo>, IEquatable<BaseItem>
|
||||
{
|
||||
private BaseItemKind? _baseItemKind;
|
||||
|
||||
/// <summary>
|
||||
/// The trailer folder name.
|
||||
/// </summary>
|
||||
|
@ -2009,7 +2011,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
|
||||
public BaseItemKind GetBaseItemKind()
|
||||
{
|
||||
return Enum.Parse<BaseItemKind>(GetClientTypeName());
|
||||
return _baseItemKind ??= Enum.Parse<BaseItemKind>(GetClientTypeName());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -792,7 +792,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
|
||||
private bool RequiresPostFiltering2(InternalItemsQuery query)
|
||||
{
|
||||
if (query.IncludeItemTypes.Length == 1 && string.Equals(query.IncludeItemTypes[0], nameof(BoxSet), StringComparison.OrdinalIgnoreCase))
|
||||
if (query.IncludeItemTypes.Length == 1 && query.IncludeItemTypes[0] == BaseItemKind.BoxSet)
|
||||
{
|
||||
Logger.LogDebug("Query requires post-filtering due to BoxSet query");
|
||||
return true;
|
||||
|
@ -882,7 +882,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
|
||||
if (query.IsPlayed.HasValue)
|
||||
{
|
||||
if (query.IncludeItemTypes.Length == 1 && query.IncludeItemTypes.Contains(nameof(Series)))
|
||||
if (query.IncludeItemTypes.Length == 1 && query.IncludeItemTypes.Contains(BaseItemKind.Series))
|
||||
{
|
||||
Logger.LogDebug("Query requires post-filtering due to IsPlayed");
|
||||
return true;
|
||||
|
@ -1101,7 +1101,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
return false;
|
||||
}
|
||||
|
||||
if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains("Movie", StringComparer.OrdinalIgnoreCase))
|
||||
if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(BaseItemKind.Movie))
|
||||
{
|
||||
param = true;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
using Diacritics.Extensions;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using Jellyfin.Data.Enums;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace MediaBrowser.Controller.Entities
|
||||
|
@ -66,10 +66,10 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.GenreIds = new[] { Id };
|
||||
query.ExcludeItemTypes = new[]
|
||||
{
|
||||
nameof(MusicVideo),
|
||||
nameof(Entities.Audio.Audio),
|
||||
nameof(MusicAlbum),
|
||||
nameof(MusicArtist)
|
||||
BaseItemKind.MusicVideo,
|
||||
BaseItemKind.Audio,
|
||||
BaseItemKind.MusicAlbum,
|
||||
BaseItemKind.MusicArtist
|
||||
};
|
||||
|
||||
return LibraryManager.GetItemList(query);
|
||||
|
|
|
@ -27,13 +27,13 @@ namespace MediaBrowser.Controller.Entities
|
|||
ExcludeArtistIds = Array.Empty<Guid>();
|
||||
ExcludeInheritedTags = Array.Empty<string>();
|
||||
ExcludeItemIds = Array.Empty<Guid>();
|
||||
ExcludeItemTypes = Array.Empty<string>();
|
||||
ExcludeItemTypes = Array.Empty<BaseItemKind>();
|
||||
ExcludeTags = Array.Empty<string>();
|
||||
GenreIds = Array.Empty<Guid>();
|
||||
Genres = Array.Empty<string>();
|
||||
GroupByPresentationUniqueKey = true;
|
||||
ImageTypes = Array.Empty<ImageType>();
|
||||
IncludeItemTypes = Array.Empty<string>();
|
||||
IncludeItemTypes = Array.Empty<BaseItemKind>();
|
||||
ItemIds = Array.Empty<Guid>();
|
||||
MediaTypes = Array.Empty<string>();
|
||||
MinSimilarityScore = 20;
|
||||
|
@ -87,9 +87,9 @@ namespace MediaBrowser.Controller.Entities
|
|||
|
||||
public string[] MediaTypes { get; set; }
|
||||
|
||||
public string[] IncludeItemTypes { get; set; }
|
||||
public BaseItemKind[] IncludeItemTypes { get; set; }
|
||||
|
||||
public string[] ExcludeItemTypes { get; set; }
|
||||
public BaseItemKind[] ExcludeItemTypes { get; set; }
|
||||
|
||||
public string[] ExcludeTags { get; set; }
|
||||
|
||||
|
@ -229,7 +229,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
|
||||
public Guid ParentId { get; set; }
|
||||
|
||||
public string? ParentType { get; set; }
|
||||
public BaseItemKind? ParentType { get; set; }
|
||||
|
||||
public Guid[] AncestorIds { get; set; }
|
||||
|
||||
|
@ -314,7 +314,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
else
|
||||
{
|
||||
ParentId = value.Id;
|
||||
ParentType = value.GetType().Name;
|
||||
ParentType = value.GetBaseItemKind();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -131,7 +131,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||
{
|
||||
AncestorWithPresentationUniqueKey = null,
|
||||
SeriesPresentationUniqueKey = seriesKey,
|
||||
IncludeItemTypes = new[] { nameof(Season) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Season },
|
||||
IsVirtualItem = false,
|
||||
Limit = 0,
|
||||
DtoOptions = new DtoOptions(false)
|
||||
|
@ -159,7 +159,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||
|
||||
if (query.IncludeItemTypes.Length == 0)
|
||||
{
|
||||
query.IncludeItemTypes = new[] { nameof(Episode) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Episode };
|
||||
}
|
||||
|
||||
query.IsVirtualItem = false;
|
||||
|
@ -213,7 +213,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||
|
||||
query.AncestorWithPresentationUniqueKey = null;
|
||||
query.SeriesPresentationUniqueKey = seriesKey;
|
||||
query.IncludeItemTypes = new[] { nameof(Season) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Season };
|
||||
query.OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) };
|
||||
|
||||
if (user != null && !user.DisplayMissingEpisodes)
|
||||
|
@ -239,7 +239,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||
|
||||
if (query.IncludeItemTypes.Length == 0)
|
||||
{
|
||||
query.IncludeItemTypes = new[] { nameof(Episode), nameof(Season) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Episode, BaseItemKind.Season };
|
||||
}
|
||||
|
||||
query.IsVirtualItem = false;
|
||||
|
@ -259,7 +259,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||
{
|
||||
AncestorWithPresentationUniqueKey = null,
|
||||
SeriesPresentationUniqueKey = seriesKey,
|
||||
IncludeItemTypes = new[] { nameof(Episode), nameof(Season) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Episode, BaseItemKind.Season },
|
||||
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) },
|
||||
DtoOptions = options
|
||||
};
|
||||
|
@ -363,7 +363,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|||
{
|
||||
AncestorWithPresentationUniqueKey = queryFromSeries ? null : seriesKey,
|
||||
SeriesPresentationUniqueKey = queryFromSeries ? seriesKey : null,
|
||||
IncludeItemTypes = new[] { nameof(Episode) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
||||
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) },
|
||||
DtoOptions = options
|
||||
};
|
||||
|
|
|
@ -140,7 +140,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
|
||||
if (query.IncludeItemTypes.Length == 0)
|
||||
{
|
||||
query.IncludeItemTypes = new[] { nameof(Movie) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Movie };
|
||||
}
|
||||
|
||||
return parent.QueryRecursive(query);
|
||||
|
@ -165,7 +165,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
query.IsFavorite = true;
|
||||
query.IncludeItemTypes = new[] { nameof(Movie) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Movie };
|
||||
|
||||
return _libraryManager.GetItemsResult(query);
|
||||
}
|
||||
|
@ -176,7 +176,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
query.IsFavorite = true;
|
||||
query.IncludeItemTypes = new[] { nameof(Series) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Series };
|
||||
|
||||
return _libraryManager.GetItemsResult(query);
|
||||
}
|
||||
|
@ -187,7 +187,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
query.IsFavorite = true;
|
||||
query.IncludeItemTypes = new[] { nameof(Episode) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Episode };
|
||||
|
||||
return _libraryManager.GetItemsResult(query);
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
|
||||
query.IncludeItemTypes = new[] { nameof(Movie) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Movie };
|
||||
|
||||
return _libraryManager.GetItemsResult(query);
|
||||
}
|
||||
|
@ -206,7 +206,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
private QueryResult<BaseItem> GetMovieCollections(User user, InternalItemsQuery query)
|
||||
{
|
||||
query.Parent = null;
|
||||
query.IncludeItemTypes = new[] { nameof(BoxSet) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.BoxSet };
|
||||
query.SetUser(user);
|
||||
query.Recursive = true;
|
||||
|
||||
|
@ -220,7 +220,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
query.Limit = GetSpecialItemsLimit();
|
||||
query.IncludeItemTypes = new[] { nameof(Movie) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Movie };
|
||||
|
||||
return ConvertToResult(_libraryManager.GetItemList(query));
|
||||
}
|
||||
|
@ -233,7 +233,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
query.Limit = GetSpecialItemsLimit();
|
||||
query.IncludeItemTypes = new[] { nameof(Movie) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Movie };
|
||||
|
||||
return ConvertToResult(_libraryManager.GetItemList(query));
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
{
|
||||
var genres = parent.QueryRecursive(new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Movie) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Movie },
|
||||
Recursive = true,
|
||||
EnableTotalRecordCount = false
|
||||
}).Items
|
||||
|
@ -283,7 +283,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.GenreIds = new[] { displayParent.Id };
|
||||
query.SetUser(user);
|
||||
|
||||
query.IncludeItemTypes = new[] { nameof(Movie) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Movie };
|
||||
|
||||
return _libraryManager.GetItemsResult(query);
|
||||
}
|
||||
|
@ -299,9 +299,9 @@ namespace MediaBrowser.Controller.Entities
|
|||
{
|
||||
query.IncludeItemTypes = new[]
|
||||
{
|
||||
nameof(Series),
|
||||
nameof(Season),
|
||||
nameof(Episode)
|
||||
BaseItemKind.Series,
|
||||
BaseItemKind.Season,
|
||||
BaseItemKind.Episode
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -329,7 +329,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
query.Limit = GetSpecialItemsLimit();
|
||||
query.IncludeItemTypes = new[] { nameof(Episode) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Episode };
|
||||
query.IsVirtualItem = false;
|
||||
|
||||
return ConvertToResult(_libraryManager.GetItemList(query));
|
||||
|
@ -360,7 +360,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
query.Limit = GetSpecialItemsLimit();
|
||||
query.IncludeItemTypes = new[] { nameof(Episode) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Episode };
|
||||
|
||||
return ConvertToResult(_libraryManager.GetItemList(query));
|
||||
}
|
||||
|
@ -371,7 +371,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.Parent = parent;
|
||||
query.SetUser(user);
|
||||
|
||||
query.IncludeItemTypes = new[] { nameof(Series) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Series };
|
||||
|
||||
return _libraryManager.GetItemsResult(query);
|
||||
}
|
||||
|
@ -380,7 +380,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
{
|
||||
var genres = parent.QueryRecursive(new InternalItemsQuery(user)
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(Series) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Series },
|
||||
Recursive = true,
|
||||
EnableTotalRecordCount = false
|
||||
}).Items
|
||||
|
@ -411,7 +411,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
query.GenreIds = new[] { displayParent.Id };
|
||||
query.SetUser(user);
|
||||
|
||||
query.IncludeItemTypes = new[] { nameof(Series) };
|
||||
query.IncludeItemTypes = new[] { BaseItemKind.Series };
|
||||
|
||||
return _libraryManager.GetItemsResult(query);
|
||||
}
|
||||
|
@ -499,12 +499,12 @@ namespace MediaBrowser.Controller.Entities
|
|||
return false;
|
||||
}
|
||||
|
||||
if (query.IncludeItemTypes.Length > 0 && !query.IncludeItemTypes.Contains(item.GetClientTypeName(), StringComparer.OrdinalIgnoreCase))
|
||||
if (query.IncludeItemTypes.Length > 0 && !query.IncludeItemTypes.Contains(item.GetBaseItemKind()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (query.ExcludeItemTypes.Length > 0 && query.ExcludeItemTypes.Contains(item.GetClientTypeName(), StringComparer.OrdinalIgnoreCase))
|
||||
if (query.ExcludeItemTypes.Length > 0 && query.ExcludeItemTypes.Contains(item.GetBaseItemKind()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -189,7 +189,7 @@ namespace MediaBrowser.Controller.Playlists
|
|||
return LibraryManager.GetItemList(new InternalItemsQuery(user)
|
||||
{
|
||||
Recursive = true,
|
||||
IncludeItemTypes = new[] { nameof(Audio) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Audio },
|
||||
GenreIds = new[] { musicGenre.Id },
|
||||
OrderBy = new[] { (ItemSortBy.AlbumArtist, SortOrder.Ascending), (ItemSortBy.Album, SortOrder.Ascending), (ItemSortBy.SortName, SortOrder.Ascending) },
|
||||
DtoOptions = options
|
||||
|
@ -201,7 +201,7 @@ namespace MediaBrowser.Controller.Playlists
|
|||
return LibraryManager.GetItemList(new InternalItemsQuery(user)
|
||||
{
|
||||
Recursive = true,
|
||||
IncludeItemTypes = new[] { nameof(Audio) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Audio },
|
||||
ArtistIds = new[] { musicArtist.Id },
|
||||
OrderBy = new[] { (ItemSortBy.AlbumArtist, SortOrder.Ascending), (ItemSortBy.Album, SortOrder.Ascending), (ItemSortBy.SortName, SortOrder.Ascending) },
|
||||
DtoOptions = options
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#pragma warning disable CS1591
|
||||
|
||||
using System;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Model.Querying
|
||||
|
@ -48,7 +49,7 @@ namespace MediaBrowser.Model.Querying
|
|||
/// Gets or sets the include item types.
|
||||
/// </summary>
|
||||
/// <value>The include item types.</value>
|
||||
public string[] IncludeItemTypes { get; set; }
|
||||
public BaseItemKind[] IncludeItemTypes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this instance is played.
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#pragma warning disable CS1591
|
||||
|
||||
using System;
|
||||
using Jellyfin.Data.Enums;
|
||||
|
||||
namespace MediaBrowser.Model.Search
|
||||
{
|
||||
|
@ -16,8 +17,8 @@ namespace MediaBrowser.Model.Search
|
|||
IncludeStudios = true;
|
||||
|
||||
MediaTypes = Array.Empty<string>();
|
||||
IncludeItemTypes = Array.Empty<string>();
|
||||
ExcludeItemTypes = Array.Empty<string>();
|
||||
IncludeItemTypes = Array.Empty<BaseItemKind>();
|
||||
ExcludeItemTypes = Array.Empty<BaseItemKind>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -56,9 +57,9 @@ namespace MediaBrowser.Model.Search
|
|||
|
||||
public string[] MediaTypes { get; set; }
|
||||
|
||||
public string[] IncludeItemTypes { get; set; }
|
||||
public BaseItemKind[] IncludeItemTypes { get; set; }
|
||||
|
||||
public string[] ExcludeItemTypes { get; set; }
|
||||
public BaseItemKind[] ExcludeItemTypes { get; set; }
|
||||
|
||||
public Guid? ParentId { get; set; }
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
using Jellyfin.Data.Enums;
|
||||
|
||||
#nullable disable
|
||||
namespace MediaBrowser.Model.Session
|
||||
{
|
||||
|
@ -8,10 +10,9 @@ namespace MediaBrowser.Model.Session
|
|||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the item type.
|
||||
/// Artist, Genre, Studio, Person, or any kind of BaseItem.
|
||||
/// </summary>
|
||||
/// <value>The type of the item.</value>
|
||||
public string ItemType { get; set; }
|
||||
public BaseItemKind ItemType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the item id.
|
||||
|
|
|
@ -11,6 +11,7 @@ using System.Net.Http;
|
|||
using System.Net.Mime;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Enums;
|
||||
using Jellyfin.Data.Events;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Common.Progress;
|
||||
|
@ -1133,7 +1134,7 @@ namespace MediaBrowser.Providers.Manager
|
|||
var albums = _libraryManager
|
||||
.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { nameof(MusicAlbum) },
|
||||
IncludeItemTypes = new[] { BaseItemKind.MusicAlbum },
|
||||
ArtistIds = new[] { item.Id },
|
||||
DtoOptions = new DtoOptions(false)
|
||||
{
|
||||
|
|
|
@ -7,6 +7,7 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
|
@ -66,7 +67,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|||
{
|
||||
var options = GetOptions();
|
||||
|
||||
var types = new[] { "Episode", "Movie" };
|
||||
var types = new[] { BaseItemKind.Episode, BaseItemKind.Movie };
|
||||
|
||||
var dict = new Dictionary<Guid, BaseItem>();
|
||||
|
||||
|
|
|
@ -55,35 +55,5 @@ namespace Jellyfin.Api.Tests.Helpers
|
|||
|
||||
return data;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public static void GetItemTypeStrings_Empty_Empty()
|
||||
{
|
||||
Assert.Empty(RequestHelpers.GetItemTypeStrings(Array.Empty<BaseItemKind>()));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public static void GetItemTypeStrings_Valid_Success()
|
||||
{
|
||||
BaseItemKind[] input =
|
||||
{
|
||||
BaseItemKind.AggregateFolder,
|
||||
BaseItemKind.Audio,
|
||||
BaseItemKind.BasePluginFolder,
|
||||
BaseItemKind.CollectionFolder
|
||||
};
|
||||
|
||||
string[] expected =
|
||||
{
|
||||
"AggregateFolder",
|
||||
"Audio",
|
||||
"BasePluginFolder",
|
||||
"CollectionFolder"
|
||||
};
|
||||
|
||||
var res = RequestHelpers.GetItemTypeStrings(input);
|
||||
|
||||
Assert.Equal(expected, res);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user