update data queries

This commit is contained in:
Luke Pulverenti
2017-05-21 03:25:49 -04:00
parent ead88d3b65
commit da77b05817
62 changed files with 620 additions and 446 deletions

View File

@@ -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; }

View File

@@ -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))

View File

@@ -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
{

View File

@@ -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
{

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -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") };

View File

@@ -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") };

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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
{

View File

@@ -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") };

View File

@@ -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)

View File

@@ -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);

View File

@@ -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;

View File

@@ -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>();

View File

@@ -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
{

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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&lt;QueryResult&lt;LiveTvChannel&gt;&gt;.</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&lt;QueryResult&lt;BaseItem&gt;&gt;.</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.

View File

@@ -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);

View File

@@ -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&lt;BaseItem&gt;.</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&lt;BaseItem&gt;.</returns>
QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders);
QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders, DtoOptions options);
}
}