mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-21 01:24:44 +01:00
update data queries
This commit is contained in:
@@ -10,6 +10,8 @@ namespace MediaBrowser.Controller.Drawing
|
||||
{
|
||||
public class ImageProcessingOptions
|
||||
{
|
||||
public string ItemId { get; set; }
|
||||
public string ItemType { get; set; }
|
||||
public IHasImages Item { get; set; }
|
||||
|
||||
public ItemImageInfo Image { get; set; }
|
||||
|
||||
@@ -23,17 +23,28 @@ namespace MediaBrowser.Controller.Dto
|
||||
public bool AddCurrentProgram { get; set; }
|
||||
|
||||
public DtoOptions()
|
||||
: this(true)
|
||||
{
|
||||
}
|
||||
|
||||
public DtoOptions(bool allFields)
|
||||
{
|
||||
Fields = new List<ItemFields>();
|
||||
ImageTypeLimit = int.MaxValue;
|
||||
EnableImages = true;
|
||||
EnableUserData = true;
|
||||
AddCurrentProgram = true;
|
||||
|
||||
Fields = Enum.GetNames(typeof (ItemFields))
|
||||
.Select(i => (ItemFields) Enum.Parse(typeof (ItemFields), i, true))
|
||||
.Except(DefaultExcludedFields)
|
||||
.ToList();
|
||||
if (allFields)
|
||||
{
|
||||
Fields = Enum.GetNames(typeof(ItemFields))
|
||||
.Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true))
|
||||
.Except(DefaultExcludedFields)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
Fields = new List<ItemFields>();
|
||||
}
|
||||
|
||||
ImageTypes = Enum.GetNames(typeof(ImageType))
|
||||
.Select(i => (ImageType)Enum.Parse(typeof(ImageType), i, true))
|
||||
|
||||
@@ -266,20 +266,6 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||
return info;
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems)
|
||||
{
|
||||
return inputItems.Where(GetItemFilter());
|
||||
}
|
||||
|
||||
public Func<BaseItem, bool> GetItemFilter()
|
||||
{
|
||||
return i =>
|
||||
{
|
||||
var hasArtist = i as IHasArtist;
|
||||
return hasArtist != null && hasArtist.HasAnyArtist(Name);
|
||||
};
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool SupportsPeople
|
||||
{
|
||||
|
||||
@@ -91,16 +91,6 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems)
|
||||
{
|
||||
return inputItems.Where(GetItemFilter());
|
||||
}
|
||||
|
||||
public Func<BaseItem, bool> GetItemFilter()
|
||||
{
|
||||
return i => i is IHasMusicGenres && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool SupportsPeople
|
||||
{
|
||||
|
||||
@@ -22,6 +22,7 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.IO;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Controller.Extensions;
|
||||
using MediaBrowser.Controller.IO;
|
||||
using MediaBrowser.Controller.Sorting;
|
||||
@@ -186,10 +187,15 @@ namespace MediaBrowser.Controller.Entities
|
||||
}
|
||||
set
|
||||
{
|
||||
var isSortNameDefault = IsSortNameDefault(SortName);
|
||||
|
||||
_name = value;
|
||||
|
||||
// lazy load this again
|
||||
_sortName = null;
|
||||
if (isSortNameDefault)
|
||||
{
|
||||
// lazy load this again
|
||||
SortName = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -580,7 +586,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
}
|
||||
}
|
||||
|
||||
private string _forcedSortName;
|
||||
/// <summary>
|
||||
/// Gets or sets the name of the forced sort.
|
||||
/// </summary>
|
||||
@@ -588,8 +593,42 @@ namespace MediaBrowser.Controller.Entities
|
||||
[IgnoreDataMember]
|
||||
public string ForcedSortName
|
||||
{
|
||||
get { return _forcedSortName; }
|
||||
set { _forcedSortName = value; _sortName = null; }
|
||||
get
|
||||
{
|
||||
var sortName = SortName;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(sortName))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (string.Equals(sortName, CreateSortName(), StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return sortName;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
SortName = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
var newValue = CreateSortNameFromCustomValue(value);
|
||||
|
||||
if (string.Equals(newValue, CreateSortName(), StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
SortName = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
SortName = newValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string _sortName;
|
||||
@@ -604,15 +643,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
if (_sortName == null)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(ForcedSortName))
|
||||
{
|
||||
// Need the ToLower because that's what CreateSortName does
|
||||
_sortName = ModifySortChunks(ForcedSortName).ToLower();
|
||||
}
|
||||
else
|
||||
{
|
||||
_sortName = CreateSortName();
|
||||
}
|
||||
_sortName = CreateSortName();
|
||||
}
|
||||
return _sortName;
|
||||
}
|
||||
@@ -622,6 +653,21 @@ namespace MediaBrowser.Controller.Entities
|
||||
}
|
||||
}
|
||||
|
||||
private string CreateSortNameFromCustomValue(string value)
|
||||
{
|
||||
return string.IsNullOrWhiteSpace(value) ? null : ModifySortChunks(value).ToLower();
|
||||
}
|
||||
|
||||
public bool IsSortNameDefault(string value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return string.Equals(CreateSortNameFromCustomValue(value), CreateSortName(), StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
public string GetInternalMetadataPath()
|
||||
{
|
||||
var basePath = ConfigurationManager.ApplicationPaths.InternalMetadataPath;
|
||||
@@ -1303,7 +1349,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
|
||||
public void AfterMetadataRefresh()
|
||||
{
|
||||
_sortName = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2187,8 +2232,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
/// </summary>
|
||||
public virtual bool BeforeMetadataRefresh()
|
||||
{
|
||||
_sortName = null;
|
||||
|
||||
var hasChanges = false;
|
||||
|
||||
if (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Path))
|
||||
@@ -2210,7 +2253,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
return path;
|
||||
}
|
||||
|
||||
public virtual Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, List<ItemFields> itemFields)
|
||||
public virtual Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, List<ItemFields> fields)
|
||||
{
|
||||
if (RunTimeTicks.HasValue)
|
||||
{
|
||||
|
||||
@@ -12,6 +12,7 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.IO;
|
||||
using MediaBrowser.Controller.Channels;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
@@ -672,7 +673,8 @@ namespace MediaBrowser.Controller.Entities
|
||||
return ItemRepository.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
ParentId = Id,
|
||||
GroupByPresentationUniqueKey = false
|
||||
GroupByPresentationUniqueKey = false,
|
||||
DtoOptions = new DtoOptions(true)
|
||||
});
|
||||
}
|
||||
|
||||
@@ -690,7 +692,11 @@ namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
Recursive = false,
|
||||
Limit = 0,
|
||||
ParentId = Id
|
||||
ParentId = Id,
|
||||
DtoOptions = new DtoOptions(false)
|
||||
{
|
||||
EnableImages = false
|
||||
}
|
||||
|
||||
}).Result;
|
||||
|
||||
@@ -705,7 +711,11 @@ namespace MediaBrowser.Controller.Entities
|
||||
IsFolder = false,
|
||||
IsVirtualItem = false,
|
||||
EnableTotalRecordCount = true,
|
||||
Limit = 0
|
||||
Limit = 0,
|
||||
DtoOptions = new DtoOptions(false)
|
||||
{
|
||||
EnableImages = false
|
||||
}
|
||||
|
||||
}).Result.TotalRecordCount;
|
||||
}
|
||||
@@ -1481,7 +1491,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public override async Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, List<ItemFields> itemFields)
|
||||
public override async Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, List<ItemFields> fields)
|
||||
{
|
||||
if (!SupportsUserDataFromChildren)
|
||||
{
|
||||
@@ -1490,7 +1500,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
|
||||
if (itemDto != null)
|
||||
{
|
||||
if (itemFields.Contains(ItemFields.RecursiveItemCount))
|
||||
if (fields.Contains(ItemFields.RecursiveItemCount))
|
||||
{
|
||||
itemDto.RecursiveItemCount = GetRecursiveChildCount(user);
|
||||
}
|
||||
@@ -1505,7 +1515,11 @@ namespace MediaBrowser.Controller.Entities
|
||||
IsVirtualItem = false,
|
||||
EnableTotalRecordCount = true,
|
||||
Limit = 0,
|
||||
IsPlayed = false
|
||||
IsPlayed = false,
|
||||
DtoOptions = new DtoOptions(false)
|
||||
{
|
||||
EnableImages = false
|
||||
}
|
||||
|
||||
}).ConfigureAwait(false);
|
||||
|
||||
|
||||
@@ -69,16 +69,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
return false;
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems)
|
||||
{
|
||||
return inputItems.Where(GetItemFilter());
|
||||
}
|
||||
|
||||
public Func<BaseItem, bool> GetItemFilter()
|
||||
{
|
||||
return i => i is Game && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
||||
{
|
||||
query.GenreIds = new[] { Id.ToString("N") };
|
||||
|
||||
@@ -81,16 +81,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems)
|
||||
{
|
||||
return inputItems.Where(GetItemFilter());
|
||||
}
|
||||
|
||||
public Func<BaseItem, bool> GetItemFilter()
|
||||
{
|
||||
return i => !(i is Game) && !(i is IHasMusicGenres) && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
||||
{
|
||||
query.GenreIds = new[] { Id.ToString("N") };
|
||||
|
||||
@@ -7,13 +7,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
/// </summary>
|
||||
public interface IItemByName : IHasMetadata
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the tagged items.
|
||||
/// </summary>
|
||||
/// <param name="inputItems">The input items.</param>
|
||||
/// <returns>IEnumerable{BaseItem}.</returns>
|
||||
IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems);
|
||||
|
||||
IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query);
|
||||
}
|
||||
|
||||
|
||||
@@ -166,26 +166,31 @@ namespace MediaBrowser.Controller.Entities
|
||||
|
||||
switch (name)
|
||||
{
|
||||
case ItemFields.ThemeSongIds:
|
||||
case ItemFields.ThemeVideoIds:
|
||||
case ItemFields.ProductionLocations:
|
||||
case ItemFields.Keywords:
|
||||
case ItemFields.Taglines:
|
||||
case ItemFields.CustomRating:
|
||||
case ItemFields.DateCreated:
|
||||
case ItemFields.SortName:
|
||||
case ItemFields.Overview:
|
||||
case ItemFields.HomePageUrl:
|
||||
case ItemFields.VoteCount:
|
||||
case ItemFields.Keywords:
|
||||
case ItemFields.DisplayMediaType:
|
||||
//case ItemFields.ServiceName:
|
||||
case ItemFields.Genres:
|
||||
case ItemFields.Studios:
|
||||
case ItemFields.VoteCount:
|
||||
case ItemFields.CustomRating:
|
||||
case ItemFields.ProductionLocations:
|
||||
case ItemFields.Settings:
|
||||
case ItemFields.OriginalTitle:
|
||||
case ItemFields.Taglines:
|
||||
case ItemFields.SortName:
|
||||
case ItemFields.Studios:
|
||||
case ItemFields.Tags:
|
||||
case ItemFields.ThemeSongIds:
|
||||
case ItemFields.ThemeVideoIds:
|
||||
case ItemFields.DateCreated:
|
||||
case ItemFields.Overview:
|
||||
case ItemFields.Genres:
|
||||
case ItemFields.DateLastMediaAdded:
|
||||
return fields.Count == 0 || fields.Contains(name);
|
||||
case ItemFields.ExternalEtag:
|
||||
case ItemFields.PresentationUniqueKey:
|
||||
case ItemFields.InheritedParentalRatingValue:
|
||||
case ItemFields.ExternalSeriesId:
|
||||
return fields.Contains(name);
|
||||
case ItemFields.ServiceName:
|
||||
return true;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -93,22 +93,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems)
|
||||
{
|
||||
var itemsWithPerson = LibraryManager.GetItemIds(new InternalItemsQuery
|
||||
{
|
||||
PersonIds = new[] { Id.ToString("N") }
|
||||
});
|
||||
|
||||
return inputItems.Where(i => itemsWithPerson.Contains(i.Id));
|
||||
}
|
||||
|
||||
|
||||
public Func<BaseItem, bool> GetItemFilter()
|
||||
{
|
||||
return i => LibraryManager.GetPeople(i).Any(p => string.Equals(p.Name, Name, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool SupportsPeople
|
||||
{
|
||||
|
||||
@@ -88,16 +88,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems)
|
||||
{
|
||||
return inputItems.Where(GetItemFilter());
|
||||
}
|
||||
|
||||
public Func<BaseItem, bool> GetItemFilter()
|
||||
{
|
||||
return i => i.Studios.Contains(Name, StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
||||
{
|
||||
query.StudioIds = new[] { Id.ToString("N") };
|
||||
|
||||
@@ -5,6 +5,7 @@ using MediaBrowser.Model.Users;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Model.Configuration;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
|
||||
@@ -160,7 +161,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
|
||||
Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager);
|
||||
|
||||
var items = GetEpisodes(user).Where(filter);
|
||||
var items = GetEpisodes(user, query.DtoOptions).Where(filter);
|
||||
|
||||
var result = PostFilterAndSort(items, query, false, false);
|
||||
|
||||
@@ -170,21 +171,19 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
/// <summary>
|
||||
/// Gets the episodes.
|
||||
/// </summary>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <returns>IEnumerable{Episode}.</returns>
|
||||
public IEnumerable<Episode> GetEpisodes(User user)
|
||||
public IEnumerable<Episode> GetEpisodes(User user, DtoOptions options)
|
||||
{
|
||||
return GetEpisodes(Series, user);
|
||||
return GetEpisodes(Series, user, options);
|
||||
}
|
||||
|
||||
public IEnumerable<Episode> GetEpisodes(Series series, User user)
|
||||
public IEnumerable<Episode> GetEpisodes(Series series, User user, DtoOptions options)
|
||||
{
|
||||
return GetEpisodes(series, user, null);
|
||||
return GetEpisodes(series, user, null, options);
|
||||
}
|
||||
|
||||
public IEnumerable<Episode> GetEpisodes(Series series, User user, IEnumerable<Episode> allSeriesEpisodes)
|
||||
public IEnumerable<Episode> GetEpisodes(Series series, User user, IEnumerable<Episode> allSeriesEpisodes, DtoOptions options)
|
||||
{
|
||||
return series.GetSeasonEpisodes(this, user, allSeriesEpisodes);
|
||||
return series.GetSeasonEpisodes(this, user, allSeriesEpisodes, options);
|
||||
}
|
||||
|
||||
public IEnumerable<Episode> GetEpisodes()
|
||||
@@ -194,7 +193,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
|
||||
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
|
||||
{
|
||||
return GetEpisodes(user);
|
||||
return GetEpisodes(user, new DtoOptions(true));
|
||||
}
|
||||
|
||||
protected override bool GetBlockUnratedValue(UserPolicy config)
|
||||
|
||||
@@ -8,6 +8,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Model.Extensions;
|
||||
using MediaBrowser.Model.Providers;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
@@ -250,12 +251,15 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
|
||||
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
|
||||
{
|
||||
return GetSeasons(user);
|
||||
return GetSeasons(user, new DtoOptions(true));
|
||||
}
|
||||
|
||||
public IEnumerable<Season> GetSeasons(User user)
|
||||
public IEnumerable<Season> GetSeasons(User user, DtoOptions options)
|
||||
{
|
||||
var query = new InternalItemsQuery(user);
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
DtoOptions = options
|
||||
};
|
||||
|
||||
SetSeasonQueryOptions(query, user);
|
||||
|
||||
@@ -321,7 +325,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
return Task.FromResult(LibraryManager.GetItemsResult(query));
|
||||
}
|
||||
|
||||
public IEnumerable<Episode> GetEpisodes(User user)
|
||||
public IEnumerable<Episode> GetEpisodes(User user, DtoOptions options)
|
||||
{
|
||||
var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
|
||||
var seriesKey = GetUniqueSeriesKey(this);
|
||||
@@ -331,7 +335,8 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
|
||||
SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
|
||||
IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name },
|
||||
SortBy = new[] { ItemSortBy.SortName }
|
||||
SortBy = new[] { ItemSortBy.SortName },
|
||||
DtoOptions = options
|
||||
};
|
||||
var config = user.Configuration;
|
||||
if (!config.DisplayMissingEpisodes && !config.DisplayUnairedEpisodes)
|
||||
@@ -352,7 +357,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
var allSeriesEpisodes = allItems.OfType<Episode>().ToList();
|
||||
|
||||
var allEpisodes = allItems.OfType<Season>()
|
||||
.SelectMany(i => i.GetEpisodes(this, user, allSeriesEpisodes))
|
||||
.SelectMany(i => i.GetEpisodes(this, user, allSeriesEpisodes, options))
|
||||
.Reverse()
|
||||
.ToList();
|
||||
|
||||
@@ -429,7 +434,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
progress.Report(100);
|
||||
}
|
||||
|
||||
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user)
|
||||
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, DtoOptions options)
|
||||
{
|
||||
var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
|
||||
|
||||
@@ -445,7 +450,8 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
AncestorWithPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? null : seriesKey,
|
||||
SeriesPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? seriesKey : null,
|
||||
IncludeItemTypes = new[] { typeof(Episode).Name },
|
||||
SortBy = new[] { ItemSortBy.SortName }
|
||||
SortBy = new[] { ItemSortBy.SortName },
|
||||
DtoOptions = options
|
||||
};
|
||||
if (user != null)
|
||||
{
|
||||
@@ -466,14 +472,14 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
|
||||
var allItems = LibraryManager.GetItemList(query).OfType<Episode>();
|
||||
|
||||
return GetSeasonEpisodes(parentSeason, user, allItems);
|
||||
return GetSeasonEpisodes(parentSeason, user, allItems, options);
|
||||
}
|
||||
|
||||
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, IEnumerable<Episode> allSeriesEpisodes)
|
||||
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, IEnumerable<Episode> allSeriesEpisodes, DtoOptions options)
|
||||
{
|
||||
if (allSeriesEpisodes == null)
|
||||
{
|
||||
return GetSeasonEpisodes(parentSeason, user);
|
||||
return GetSeasonEpisodes(parentSeason, user, options);
|
||||
}
|
||||
|
||||
var episodes = FilterEpisodesBySeason(allSeriesEpisodes, parentSeason, ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons);
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Collections.Generic;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
using System.Linq;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
|
||||
namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
@@ -75,7 +76,8 @@ namespace MediaBrowser.Controller.Entities
|
||||
var result = GetItems(new InternalItemsQuery
|
||||
{
|
||||
User = user,
|
||||
EnableTotalRecordCount = false
|
||||
EnableTotalRecordCount = false,
|
||||
DtoOptions = new DtoOptions(true)
|
||||
|
||||
}).Result;
|
||||
|
||||
@@ -100,7 +102,9 @@ namespace MediaBrowser.Controller.Entities
|
||||
Recursive = true,
|
||||
EnableTotalRecordCount = false,
|
||||
|
||||
ForceDirect = true
|
||||
ForceDirect = true,
|
||||
|
||||
DtoOptions = query.DtoOptions
|
||||
|
||||
}).Result;
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Model.Extensions;
|
||||
|
||||
namespace MediaBrowser.Controller.Entities
|
||||
@@ -83,7 +84,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
Limit = query.Limit,
|
||||
StartIndex = query.StartIndex
|
||||
|
||||
}, CancellationToken.None).ConfigureAwait(false);
|
||||
}, new DtoOptions(), CancellationToken.None).ConfigureAwait(false);
|
||||
|
||||
return GetResult(result);
|
||||
}
|
||||
@@ -110,7 +111,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
Limit = query.Limit,
|
||||
StartIndex = query.StartIndex
|
||||
|
||||
}, CancellationToken.None).ConfigureAwait(false);
|
||||
}, new DtoOptions(), CancellationToken.None).ConfigureAwait(false);
|
||||
|
||||
return GetResult(result);
|
||||
}
|
||||
@@ -394,7 +395,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
ParentId = parent == null ? null : parent.Id.ToString("N"),
|
||||
GroupItems = true
|
||||
|
||||
}).Select(i => i.Item1 ?? i.Item2.FirstOrDefault()).Where(i => i != null);
|
||||
}, query.DtoOptions).Select(i => i.Item1 ?? i.Item2.FirstOrDefault()).Where(i => i != null);
|
||||
|
||||
query.SortBy = new string[] { };
|
||||
|
||||
@@ -662,7 +663,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
StartIndex = query.StartIndex,
|
||||
UserId = query.User.Id.ToString("N")
|
||||
|
||||
}, parentFolders);
|
||||
}, parentFolders, query.DtoOptions);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1783,7 +1784,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
Status = RecordingStatus.Completed,
|
||||
UserId = user.Id.ToString("N")
|
||||
|
||||
}, CancellationToken.None).ConfigureAwait(false);
|
||||
}, new DtoOptions(), CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
var list = new List<BaseItem>();
|
||||
|
||||
@@ -65,20 +65,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
return true;
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems)
|
||||
{
|
||||
int year;
|
||||
|
||||
var usCulture = new CultureInfo("en-US");
|
||||
|
||||
if (!int.TryParse(Name, NumberStyles.Integer, usCulture, out year))
|
||||
{
|
||||
return inputItems;
|
||||
}
|
||||
|
||||
return inputItems.Where(i => i.ProductionYear.HasValue && i.ProductionYear.Value == year);
|
||||
}
|
||||
|
||||
public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query)
|
||||
{
|
||||
int year;
|
||||
@@ -107,12 +93,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
return null;
|
||||
}
|
||||
|
||||
public Func<BaseItem, bool> GetItemFilter()
|
||||
{
|
||||
var val = GetYearValue();
|
||||
return i => i.ProductionYear.HasValue && val.HasValue && i.ProductionYear.Value == val.Value;
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool SupportsPeople
|
||||
{
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
|
||||
namespace MediaBrowser.Controller.Library
|
||||
{
|
||||
@@ -9,23 +10,16 @@ namespace MediaBrowser.Controller.Library
|
||||
/// <summary>
|
||||
/// Gets the instant mix from song.
|
||||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <returns>IEnumerable{Audio}.</returns>
|
||||
IEnumerable<Audio> GetInstantMixFromItem(BaseItem item, User user);
|
||||
IEnumerable<Audio> GetInstantMixFromItem(BaseItem item, User user, DtoOptions dtoOptions);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the instant mix from artist.
|
||||
/// </summary>
|
||||
/// <param name="artist">The artist.</param>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <returns>IEnumerable{Audio}.</returns>
|
||||
IEnumerable<Audio> GetInstantMixFromArtist(MusicArtist artist, User user);
|
||||
IEnumerable<Audio> GetInstantMixFromArtist(MusicArtist artist, User user, DtoOptions dtoOptions);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the instant mix from genre.
|
||||
/// </summary>
|
||||
/// <param name="genres">The genres.</param>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <returns>IEnumerable{Audio}.</returns>
|
||||
IEnumerable<Audio> GetInstantMixFromGenres(IEnumerable<string> genres, User user);
|
||||
IEnumerable<Audio> GetInstantMixFromGenres(IEnumerable<string> genres, User user, DtoOptions dtoOptions);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
|
||||
namespace MediaBrowser.Controller.Library
|
||||
{
|
||||
@@ -16,6 +17,6 @@ namespace MediaBrowser.Controller.Library
|
||||
|
||||
Task<UserView> GetUserSubView(string category, string type, string sortName, CancellationToken cancellationToken);
|
||||
|
||||
List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request);
|
||||
List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request, DtoOptions options);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,19 +284,12 @@ namespace MediaBrowser.Controller.LiveTv
|
||||
/// <summary>
|
||||
/// Gets the internal channels.
|
||||
/// </summary>
|
||||
/// <param name="query">The query.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>Task<QueryResult<LiveTvChannel>>.</returns>
|
||||
Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query,
|
||||
CancellationToken cancellationToken);
|
||||
Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the internal recordings.
|
||||
/// </summary>
|
||||
/// <param name="query">The query.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>Task<QueryResult<BaseItem>>.</returns>
|
||||
Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, CancellationToken cancellationToken);
|
||||
Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the recording media sources.
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
|
||||
namespace MediaBrowser.Controller.Playlists
|
||||
@@ -81,7 +82,7 @@ namespace MediaBrowser.Controller.Playlists
|
||||
|
||||
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
|
||||
{
|
||||
return GetPlayableItems(user).Result;
|
||||
return GetPlayableItems(user, new DtoOptions(true)).Result;
|
||||
}
|
||||
|
||||
protected override IEnumerable<BaseItem> GetNonCachedChildren(IDirectoryService directoryService)
|
||||
@@ -91,7 +92,7 @@ namespace MediaBrowser.Controller.Playlists
|
||||
|
||||
public override IEnumerable<BaseItem> GetRecursiveChildren(User user, InternalItemsQuery query)
|
||||
{
|
||||
var items = GetPlayableItems(user).Result;
|
||||
var items = GetPlayableItems(user, query.DtoOptions).Result;
|
||||
|
||||
if (query != null)
|
||||
{
|
||||
@@ -106,12 +107,12 @@ namespace MediaBrowser.Controller.Playlists
|
||||
return GetLinkedChildrenInfos();
|
||||
}
|
||||
|
||||
private Task<IEnumerable<BaseItem>> GetPlayableItems(User user)
|
||||
private Task<IEnumerable<BaseItem>> GetPlayableItems(User user, DtoOptions options)
|
||||
{
|
||||
return GetPlaylistItems(MediaType, base.GetChildren(user, true), user);
|
||||
return GetPlaylistItems(MediaType, base.GetChildren(user, true), user, options);
|
||||
}
|
||||
|
||||
public static async Task<IEnumerable<BaseItem>> GetPlaylistItems(string playlistMediaType, IEnumerable<BaseItem> inputItems, User user)
|
||||
public static async Task<IEnumerable<BaseItem>> GetPlaylistItems(string playlistMediaType, IEnumerable<BaseItem> inputItems, User user, DtoOptions options)
|
||||
{
|
||||
if (user != null)
|
||||
{
|
||||
@@ -122,14 +123,14 @@ namespace MediaBrowser.Controller.Playlists
|
||||
|
||||
foreach (var item in inputItems)
|
||||
{
|
||||
var playlistItems = await GetPlaylistItems(item, user, playlistMediaType).ConfigureAwait(false);
|
||||
var playlistItems = await GetPlaylistItems(item, user, playlistMediaType, options).ConfigureAwait(false);
|
||||
list.AddRange(playlistItems);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private static async Task<IEnumerable<BaseItem>> GetPlaylistItems(BaseItem item, User user, string mediaType)
|
||||
private static async Task<IEnumerable<BaseItem>> GetPlaylistItems(BaseItem item, User user, string mediaType, DtoOptions options)
|
||||
{
|
||||
var musicGenre = item as MusicGenre;
|
||||
if (musicGenre != null)
|
||||
@@ -140,7 +141,8 @@ namespace MediaBrowser.Controller.Playlists
|
||||
IncludeItemTypes = new[] { typeof(Audio).Name },
|
||||
GenreIds = new[] { musicGenre.Id.ToString("N") },
|
||||
SortBy = new[] { ItemSortBy.AlbumArtist, ItemSortBy.Album, ItemSortBy.SortName },
|
||||
SortOrder = SortOrder.Ascending
|
||||
SortOrder = SortOrder.Ascending,
|
||||
DtoOptions = options
|
||||
});
|
||||
}
|
||||
|
||||
@@ -153,7 +155,8 @@ namespace MediaBrowser.Controller.Playlists
|
||||
IncludeItemTypes = new[] { typeof(Audio).Name },
|
||||
ArtistIds = new[] { musicArtist.Id.ToString("N") },
|
||||
SortBy = new[] { ItemSortBy.AlbumArtist, ItemSortBy.Album, ItemSortBy.SortName },
|
||||
SortOrder = SortOrder.Ascending
|
||||
SortOrder = SortOrder.Ascending,
|
||||
DtoOptions = options
|
||||
});
|
||||
}
|
||||
|
||||
@@ -166,7 +169,8 @@ namespace MediaBrowser.Controller.Playlists
|
||||
IsFolder = false,
|
||||
SortBy = new[] { ItemSortBy.SortName },
|
||||
MediaTypes = new[] { mediaType },
|
||||
EnableTotalRecordCount = false
|
||||
EnableTotalRecordCount = false,
|
||||
DtoOptions = options
|
||||
};
|
||||
|
||||
var itemsResult = await folder.GetItems(query).ConfigureAwait(false);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Model.Querying;
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
|
||||
namespace MediaBrowser.Controller.TV
|
||||
{
|
||||
@@ -9,16 +10,11 @@ namespace MediaBrowser.Controller.TV
|
||||
/// <summary>
|
||||
/// Gets the next up.
|
||||
/// </summary>
|
||||
/// <param name="query">The query.</param>
|
||||
/// <returns>QueryResult<BaseItem>.</returns>
|
||||
QueryResult<BaseItem> GetNextUp(NextUpQuery query);
|
||||
QueryResult<BaseItem> GetNextUp(NextUpQuery query, DtoOptions options);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the next up.
|
||||
/// </summary>
|
||||
/// <param name="request">The request.</param>
|
||||
/// <param name="parentsFolders">The parents folders.</param>
|
||||
/// <returns>QueryResult<BaseItem>.</returns>
|
||||
QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders);
|
||||
QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders, DtoOptions options);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user