|
@@ -80,27 +80,25 @@ namespace Emby.Server.Implementations.Dto
|
|
|
return GetBaseItemDto(item, options, user, owner);
|
|
|
}
|
|
|
|
|
|
- public BaseItemDto[] GetBaseItemDtos(IReadOnlyList<BaseItem> items, DtoOptions options, User user = null, BaseItem owner = null)
|
|
|
- => GetBaseItemDtos(items, items.Count, options, user, owner);
|
|
|
-
|
|
|
- public BaseItemDto[] GetBaseItemDtos(IEnumerable<BaseItem> items, int itemCount, DtoOptions options, User user = null, BaseItem owner = null)
|
|
|
+ /// <inheritdoc />
|
|
|
+ public IReadOnlyList<BaseItemDto> GetBaseItemDtos(IReadOnlyList<BaseItem> items, DtoOptions options, User user = null, BaseItem owner = null)
|
|
|
{
|
|
|
- var returnItems = new BaseItemDto[itemCount];
|
|
|
- var programTuples = new List<Tuple<BaseItem, BaseItemDto>>();
|
|
|
- var channelTuples = new List<Tuple<BaseItemDto, LiveTvChannel>>();
|
|
|
+ var returnItems = new BaseItemDto[items.Count];
|
|
|
+ var programTuples = new List<(BaseItem, BaseItemDto)>();
|
|
|
+ var channelTuples = new List<(BaseItemDto, LiveTvChannel)>();
|
|
|
|
|
|
- var index = 0;
|
|
|
- foreach (var item in items)
|
|
|
+ for (int index = 0; index < items.Count; index++)
|
|
|
{
|
|
|
+ var item = items[index];
|
|
|
var dto = GetBaseItemDtoInternal(item, options, user, owner);
|
|
|
|
|
|
if (item is LiveTvChannel tvChannel)
|
|
|
{
|
|
|
- channelTuples.Add(new Tuple<BaseItemDto, LiveTvChannel>(dto, tvChannel));
|
|
|
+ channelTuples.Add((dto, tvChannel));
|
|
|
}
|
|
|
else if (item is LiveTvProgram)
|
|
|
{
|
|
|
- programTuples.Add(new Tuple<BaseItem, BaseItemDto>(item, dto));
|
|
|
+ programTuples.Add((item, dto));
|
|
|
}
|
|
|
|
|
|
if (item is IItemByName byName)
|
|
@@ -121,7 +119,6 @@ namespace Emby.Server.Implementations.Dto
|
|
|
}
|
|
|
|
|
|
returnItems[index] = dto;
|
|
|
- index++;
|
|
|
}
|
|
|
|
|
|
if (programTuples.Count > 0)
|
|
@@ -140,33 +137,32 @@ namespace Emby.Server.Implementations.Dto
|
|
|
public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
|
|
|
{
|
|
|
var dto = GetBaseItemDtoInternal(item, options, user, owner);
|
|
|
- var tvChannel = item as LiveTvChannel;
|
|
|
- if (tvChannel != null)
|
|
|
+ if (item is LiveTvChannel tvChannel)
|
|
|
{
|
|
|
- var list = new List<Tuple<BaseItemDto, LiveTvChannel>> { new Tuple<BaseItemDto, LiveTvChannel>(dto, tvChannel) };
|
|
|
+ var list = new List<(BaseItemDto, LiveTvChannel)>(1) { (dto, tvChannel) };
|
|
|
_livetvManager().AddChannelInfo(list, options, user);
|
|
|
}
|
|
|
else if (item is LiveTvProgram)
|
|
|
{
|
|
|
- var list = new List<Tuple<BaseItem, BaseItemDto>> { new Tuple<BaseItem, BaseItemDto>(item, dto) };
|
|
|
+ var list = new List<(BaseItem, BaseItemDto)>(1) { (item, dto) };
|
|
|
var task = _livetvManager().AddInfoToProgramDto(list, options.Fields, user);
|
|
|
Task.WaitAll(task);
|
|
|
}
|
|
|
|
|
|
- var byName = item as IItemByName;
|
|
|
-
|
|
|
- if (byName != null)
|
|
|
+ if (item is IItemByName itemByName
|
|
|
+ && options.ContainsField(ItemFields.ItemCounts))
|
|
|
{
|
|
|
- if (options.ContainsField(ItemFields.ItemCounts))
|
|
|
- {
|
|
|
- SetItemByNameInfo(item, dto, GetTaggedItems(byName, user, new DtoOptions(false)
|
|
|
- {
|
|
|
- EnableImages = false
|
|
|
-
|
|
|
- }), user);
|
|
|
- }
|
|
|
-
|
|
|
- return dto;
|
|
|
+ SetItemByNameInfo(
|
|
|
+ item,
|
|
|
+ dto,
|
|
|
+ GetTaggedItems(
|
|
|
+ itemByName,
|
|
|
+ user,
|
|
|
+ new DtoOptions(false)
|
|
|
+ {
|
|
|
+ EnableImages = false
|
|
|
+ }),
|
|
|
+ user);
|
|
|
}
|
|
|
|
|
|
return dto;
|
|
@@ -174,12 +170,12 @@ namespace Emby.Server.Implementations.Dto
|
|
|
|
|
|
private static IList<BaseItem> GetTaggedItems(IItemByName byName, User user, DtoOptions options)
|
|
|
{
|
|
|
- return byName.GetTaggedItems(new InternalItemsQuery(user)
|
|
|
- {
|
|
|
- Recursive = true,
|
|
|
- DtoOptions = options
|
|
|
-
|
|
|
- });
|
|
|
+ return byName.GetTaggedItems(
|
|
|
+ new InternalItemsQuery(user)
|
|
|
+ {
|
|
|
+ Recursive = true,
|
|
|
+ DtoOptions = options
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
|
|
@@ -222,8 +218,7 @@ namespace Emby.Server.Implementations.Dto
|
|
|
AttachUserSpecificInfo(dto, item, user, options);
|
|
|
}
|
|
|
|
|
|
- var hasMediaSources = item as IHasMediaSources;
|
|
|
- if (hasMediaSources != null)
|
|
|
+ if (item is IHasMediaSources hasMediaSources)
|
|
|
{
|
|
|
if (options.ContainsField(ItemFields.MediaSources))
|
|
|
{
|
|
@@ -769,14 +764,12 @@ namespace Emby.Server.Implementations.Dto
|
|
|
|
|
|
dto.CriticRating = item.CriticRating;
|
|
|
|
|
|
- var hasDisplayOrder = item as IHasDisplayOrder;
|
|
|
- if (hasDisplayOrder != null)
|
|
|
+ if (item is IHasDisplayOrder hasDisplayOrder)
|
|
|
{
|
|
|
dto.DisplayOrder = hasDisplayOrder.DisplayOrder;
|
|
|
}
|
|
|
|
|
|
- var hasCollectionType = item as IHasCollectionType;
|
|
|
- if (hasCollectionType != null)
|
|
|
+ if (item is IHasCollectionType hasCollectionType)
|
|
|
{
|
|
|
dto.CollectionType = hasCollectionType.CollectionType;
|
|
|
}
|
|
@@ -1073,17 +1066,24 @@ namespace Emby.Server.Implementations.Dto
|
|
|
|
|
|
if (options.ContainsField(ItemFields.LocalTrailerCount))
|
|
|
{
|
|
|
+ int trailerCount = 0;
|
|
|
if (allExtras == null)
|
|
|
{
|
|
|
allExtras = item.GetExtras().ToArray();
|
|
|
}
|
|
|
|
|
|
- dto.LocalTrailerCount = allExtras.Count(i => i.ExtraType.HasValue && i.ExtraType.Value == ExtraType.Trailer) + item.GetTrailers().Count();
|
|
|
+ trailerCount += allExtras.Count(i => i.ExtraType.HasValue && i.ExtraType.Value == ExtraType.Trailer);
|
|
|
+
|
|
|
+ if (item is IHasTrailers hasTrailers)
|
|
|
+ {
|
|
|
+ trailerCount += hasTrailers.GetTrailerCount();
|
|
|
+ }
|
|
|
+
|
|
|
+ dto.LocalTrailerCount = trailerCount;
|
|
|
}
|
|
|
|
|
|
// Add EpisodeInfo
|
|
|
- var episode = item as Episode;
|
|
|
- if (episode != null)
|
|
|
+ if (item is Episode episode)
|
|
|
{
|
|
|
dto.IndexNumberEnd = episode.IndexNumberEnd;
|
|
|
dto.SeriesName = episode.SeriesName;
|
|
@@ -1101,7 +1101,7 @@ namespace Emby.Server.Implementations.Dto
|
|
|
|
|
|
Series episodeSeries = null;
|
|
|
|
|
|
- //if (options.ContainsField(ItemFields.SeriesPrimaryImage))
|
|
|
+ if (options.ContainsField(ItemFields.SeriesPrimaryImage))
|
|
|
{
|
|
|
episodeSeries = episodeSeries ?? episode.Series;
|
|
|
if (episodeSeries != null)
|
|
@@ -1121,8 +1121,7 @@ namespace Emby.Server.Implementations.Dto
|
|
|
}
|
|
|
|
|
|
// Add SeriesInfo
|
|
|
- var series = item as Series;
|
|
|
- if (series != null)
|
|
|
+ if (item is Series series)
|
|
|
{
|
|
|
dto.AirDays = series.AirDays;
|
|
|
dto.AirTime = series.AirTime;
|
|
@@ -1130,8 +1129,7 @@ namespace Emby.Server.Implementations.Dto
|
|
|
}
|
|
|
|
|
|
// Add SeasonInfo
|
|
|
- var season = item as Season;
|
|
|
- if (season != null)
|
|
|
+ if (item is Season season)
|
|
|
{
|
|
|
dto.SeriesName = season.SeriesName;
|
|
|
dto.SeriesId = season.SeriesId;
|
|
@@ -1147,7 +1145,7 @@ namespace Emby.Server.Implementations.Dto
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //if (options.ContainsField(ItemFields.SeriesPrimaryImage))
|
|
|
+ if (options.ContainsField(ItemFields.SeriesPrimaryImage))
|
|
|
{
|
|
|
series = series ?? season.Series;
|
|
|
if (series != null)
|
|
@@ -1157,14 +1155,12 @@ namespace Emby.Server.Implementations.Dto
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var musicVideo = item as MusicVideo;
|
|
|
- if (musicVideo != null)
|
|
|
+ if (item is MusicVideo musicVideo)
|
|
|
{
|
|
|
SetMusicVideoProperties(dto, musicVideo);
|
|
|
}
|
|
|
|
|
|
- var book = item as Book;
|
|
|
- if (book != null)
|
|
|
+ if (item is Book book)
|
|
|
{
|
|
|
SetBookProperties(dto, book);
|
|
|
}
|
|
@@ -1204,8 +1200,7 @@ namespace Emby.Server.Implementations.Dto
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var photo = item as Photo;
|
|
|
- if (photo != null)
|
|
|
+ if (item is Photo photo)
|
|
|
{
|
|
|
SetPhotoProperties(dto, photo);
|
|
|
}
|
|
@@ -1224,8 +1219,7 @@ namespace Emby.Server.Implementations.Dto
|
|
|
|
|
|
private BaseItem GetImageDisplayParent(BaseItem currentItem, BaseItem originalItem)
|
|
|
{
|
|
|
- var musicAlbum = currentItem as MusicAlbum;
|
|
|
- if (musicAlbum != null)
|
|
|
+ if (currentItem is MusicAlbum musicAlbum)
|
|
|
{
|
|
|
var artist = musicAlbum.GetMusicArtist(new DtoOptions(false));
|
|
|
if (artist != null)
|