diff options
Diffstat (limited to 'Emby.Server.Implementations')
21 files changed, 262 insertions, 157 deletions
diff --git a/Emby.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs index 0cdd934b7..067260dfd 100644 --- a/Emby.Server.Implementations/Channels/ChannelManager.cs +++ b/Emby.Server.Implementations/Channels/ChannelManager.cs @@ -460,12 +460,12 @@ namespace Emby.Server.Implementations.Channels public IEnumerable<ChannelFeatures> GetAllChannelFeatures() { - return _libraryManager.GetItemList(new InternalItemsQuery + return _libraryManager.GetItemIds(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(Channel).Name }, SortBy = new[] { ItemSortBy.SortName } - }).Select(i => GetChannelFeatures(i.Id.ToString("N"))); + }).Select(i => GetChannelFeatures(i.ToString("N"))); } public ChannelFeatures GetChannelFeatures(string id) diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs index 51aee444e..49bf9e39c 100644 --- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs @@ -207,8 +207,6 @@ namespace Emby.Server.Implementations.Data AddColumn(db, "TypedBaseItems", "DateCreated", "DATETIME", existingColumnNames); AddColumn(db, "TypedBaseItems", "DateModified", "DATETIME", existingColumnNames); - AddColumn(db, "TypedBaseItems", "ForcedSortName", "Text", existingColumnNames); - AddColumn(db, "TypedBaseItems", "IsSeries", "BIT", existingColumnNames); AddColumn(db, "TypedBaseItems", "IsLive", "BIT", existingColumnNames); AddColumn(db, "TypedBaseItems", "IsNews", "BIT", existingColumnNames); @@ -426,7 +424,7 @@ namespace Emby.Server.Implementations.Data "OfficialRating", "HomePageUrl", "DisplayMediaType", - "ForcedSortName", + "SortName", "RunTimeTicks", "VoteCount", "DateCreated", @@ -549,7 +547,6 @@ namespace Emby.Server.Implementations.Data "DisplayMediaType", "DateCreated", "DateModified", - "ForcedSortName", "PreferredMetadataLanguage", "PreferredMetadataCountryCode", "IsHD", @@ -826,8 +823,6 @@ namespace Emby.Server.Implementations.Data saveItemStatement.TryBind("@DateCreated", item.DateCreated); saveItemStatement.TryBind("@DateModified", item.DateModified); - saveItemStatement.TryBind("@ForcedSortName", item.ForcedSortName); - saveItemStatement.TryBind("@PreferredMetadataLanguage", item.PreferredMetadataLanguage); saveItemStatement.TryBind("@PreferredMetadataCountryCode", item.PreferredMetadataCountryCode); saveItemStatement.TryBind("@IsHD", item.IsHD); @@ -1237,7 +1232,7 @@ namespace Emby.Server.Implementations.Data foreach (var row in statement.ExecuteQuery()) { - return GetItem(row); + return GetItem(row, new InternalItemsQuery()); } } @@ -1246,11 +1241,6 @@ namespace Emby.Server.Implementations.Data } } - private BaseItem GetItem(IReadOnlyList<IResultSetValue> reader) - { - return GetItem(reader, new InternalItemsQuery()); - } - private bool TypeRequiresDeserialization(Type type) { if (_config.Configuration.SkipDeserializationForBasicTypes) @@ -1535,11 +1525,14 @@ namespace Emby.Server.Implementations.Data } index++; - if (!reader.IsDBNull(index)) + if (query.HasField(ItemFields.ExternalEtag)) { - item.ExternalEtag = reader.GetString(index); + if (!reader.IsDBNull(index)) + { + item.ExternalEtag = reader.GetString(index); + } + index++; } - index++; if (!reader.IsDBNull(index)) { @@ -1614,7 +1607,7 @@ namespace Emby.Server.Implementations.Data { if (!reader.IsDBNull(index)) { - item.ForcedSortName = reader.GetString(index); + item.SortName = reader.GetString(index); } index++; } @@ -1821,29 +1814,41 @@ namespace Emby.Server.Implementations.Data } index++; - if (!reader.IsDBNull(index)) + if (query.HasField(ItemFields.PresentationUniqueKey)) { - item.PresentationUniqueKey = reader.GetString(index); + if (!reader.IsDBNull(index)) + { + item.PresentationUniqueKey = reader.GetString(index); + } + index++; } - index++; - if (!reader.IsDBNull(index)) + if (query.HasField(ItemFields.InheritedParentalRatingValue)) { - item.InheritedParentalRatingValue = reader.GetInt32(index); + if (!reader.IsDBNull(index)) + { + item.InheritedParentalRatingValue = reader.GetInt32(index); + } + index++; } - index++; - if (!reader.IsDBNull(index)) + if (query.HasField(ItemFields.Tags)) { - item.InheritedTags = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + if (!reader.IsDBNull(index)) + { + item.InheritedTags = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + } + index++; } - index++; - if (!reader.IsDBNull(index)) + if (query.HasField(ItemFields.ExternalSeriesId)) { - item.ExternalSeriesId = reader.GetString(index); + if (!reader.IsDBNull(index)) + { + item.ExternalSeriesId = reader.GetString(index); + } + index++; } - index++; if (query.HasField(ItemFields.Taglines)) { @@ -2240,12 +2245,16 @@ namespace Emby.Server.Implementations.Data } if (field == ItemFields.SortName) { - return new[] { "ForcedSortName" }; + return new[] { "SortName" }; } if (field == ItemFields.Taglines) { return new[] { "Tagline" }; } + if (field == ItemFields.Tags) + { + return new[] { "Tags", "InheritedTags" }; + } return new[] { field.ToString() }; } @@ -4916,7 +4925,9 @@ namespace Emby.Server.Implementations.Data var columns = _retriveItemColumns.ToList(); columns.AddRange(itemCountColumns.Select(i => i.Item2).ToArray()); - var commandText = "select " + string.Join(",", GetFinalColumnsToSelect(query, columns.ToArray())) + GetFromText(); + columns = GetFinalColumnsToSelect(query, columns.ToArray()).ToList(); + + var commandText = "select " + string.Join(",", columns.ToArray()) + GetFromText(); commandText += GetJoinUserDataText(query); var innerQuery = new InternalItemsQuery(query.User) @@ -5042,7 +5053,7 @@ namespace Emby.Server.Implementations.Data foreach (var row in statement.ExecuteQuery()) { - var item = GetItem(row); + var item = GetItem(row, query); if (item != null) { var countStartColumn = columns.Count - 1; diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs index ec4f552a6..bb46e6006 100644 --- a/Emby.Server.Implementations/Dto/DtoService.cs +++ b/Emby.Server.Implementations/Dto/DtoService.cs @@ -127,7 +127,11 @@ namespace Emby.Server.Implementations.Dto { var libraryItems = byName.GetTaggedItems(new InternalItemsQuery(user) { - Recursive = true + Recursive = true, + DtoOptions = new DtoOptions(false) + { + EnableImages = false + } }); SetItemByNameInfo(item, dto, libraryItems.ToList(), user); @@ -177,7 +181,11 @@ namespace Emby.Server.Implementations.Dto { if (options.Fields.Contains(ItemFields.ItemCounts)) { - SetItemByNameInfo(item, dto, GetTaggedItems(byName, user), user); + SetItemByNameInfo(item, dto, GetTaggedItems(byName, user, new DtoOptions(false) + { + EnableImages = false + + }), user); } FillSyncInfo(dto, item, options, user, syncDictionary); @@ -189,11 +197,12 @@ namespace Emby.Server.Implementations.Dto return dto; } - private List<BaseItem> GetTaggedItems(IItemByName byName, User user) + private List<BaseItem> GetTaggedItems(IItemByName byName, User user, DtoOptions options) { var items = byName.GetTaggedItems(new InternalItemsQuery(user) { - Recursive = true + Recursive = true, + DtoOptions = options }).ToList(); @@ -595,16 +604,17 @@ namespace Emby.Server.Implementations.Dto { if (!string.IsNullOrEmpty(item.Album)) { - var parentAlbum = _libraryManager.GetItemList(new InternalItemsQuery + var parentAlbumIds = _libraryManager.GetItemIds(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(MusicAlbum).Name }, - Name = item.Album + Name = item.Album, + Limit = 1 - }).FirstOrDefault(); + }); - if (parentAlbum != null) + if (parentAlbumIds.Count > 0) { - dto.AlbumId = GetDtoId(parentAlbum); + dto.AlbumId = parentAlbumIds[0].ToString("N"); } } diff --git a/Emby.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs b/Emby.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs index 86c8c5f68..7371b4fdb 100644 --- a/Emby.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs +++ b/Emby.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs @@ -16,6 +16,7 @@ using System.Threading; using System.Threading.Tasks; using Emby.Server.Implementations.Library; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; @@ -588,7 +589,8 @@ namespace Emby.Server.Implementations.FileOrganization var series = _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(Series).Name }, - Recursive = true + Recursive = true, + DtoOptions = new DtoOptions(true) }) .Cast<Series>() .Select(i => NameUtils.GetMatchScore(nameWithoutYear, yearInName, i)) @@ -607,7 +609,8 @@ namespace Emby.Server.Implementations.FileOrganization { IncludeItemTypes = new[] { typeof(Series).Name }, Recursive = true, - Name = info.ItemName + Name = info.ItemName, + DtoOptions = new DtoOptions(true) }).Cast<Series>().FirstOrDefault(); } diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index c8151ec86..a423db9d6 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -41,6 +41,7 @@ using SortOrder = MediaBrowser.Model.Entities.SortOrder; using VideoResolver = MediaBrowser.Naming.Video.VideoResolver; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Tasks; @@ -313,7 +314,8 @@ namespace Emby.Server.Implementations.Library { IncludeItemTypes = new[] { typeof(Season).Name }, Recursive = true, - IndexNumber = 0 + IndexNumber = 0, + DtoOptions = new DtoOptions(true) }).Cast<Season>() .Where(i => !string.Equals(i.Name, newName, StringComparison.Ordinal)) @@ -342,7 +344,7 @@ namespace Emby.Server.Implementations.Library } if (item is IItemByName) { - if (!(item is MusicArtist) && !(item is Studio)) + if (!(item is MusicArtist)) { return; } @@ -868,7 +870,8 @@ namespace Emby.Server.Implementations.Library IsFolder = isFolder, SortBy = new[] { ItemSortBy.DateCreated }, SortOrder = SortOrder.Descending, - Limit = 1 + Limit = 1, + DtoOptions = new DtoOptions(true) }; return GetItemList(query) @@ -981,7 +984,8 @@ namespace Emby.Server.Implementations.Library var existing = GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(T).Name }, - Name = name + Name = name, + DtoOptions = new DtoOptions(true) }).Cast<MusicArtist>() .OrderBy(i => i.IsAccessedByName ? 1 : 0) diff --git a/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs b/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs index 7424ed5e5..e64980dff 100644 --- a/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs +++ b/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs @@ -6,6 +6,7 @@ using System; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; @@ -27,7 +28,8 @@ namespace Emby.Server.Implementations.Library var items = _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(BoxSet).Name, typeof(Game).Name, typeof(Movie).Name, typeof(Series).Name }, - Recursive = true + Recursive = true, + DtoOptions = new DtoOptions(true) }).OfType<IHasTrailers>().ToList(); @@ -40,7 +42,8 @@ namespace Emby.Server.Implementations.Library { IncludeItemTypes = new[] { typeof(Trailer).Name }, TrailerTypes = trailerTypes, - Recursive = true + Recursive = true, + DtoOptions = new DtoOptions(false) }).ToArray(); diff --git a/Emby.Server.Implementations/Library/MusicManager.cs b/Emby.Server.Implementations/Library/MusicManager.cs index b15c01125..f0d07cc3c 100644 --- a/Emby.Server.Implementations/Library/MusicManager.cs +++ b/Emby.Server.Implementations/Library/MusicManager.cs @@ -5,6 +5,7 @@ using MediaBrowser.Controller.Playlists; using System; using System.Collections.Generic; using System.Linq; +using MediaBrowser.Controller.Dto; using MediaBrowser.Model.Querying; namespace Emby.Server.Implementations.Library @@ -18,47 +19,48 @@ namespace Emby.Server.Implementations.Library _libraryManager = libraryManager; } - public IEnumerable<Audio> GetInstantMixFromSong(Audio item, User user) + public IEnumerable<Audio> GetInstantMixFromSong(Audio item, User user, DtoOptions dtoOptions) { var list = new List<Audio> { item }; - return list.Concat(GetInstantMixFromGenres(item.Genres, user)); + return list.Concat(GetInstantMixFromGenres(item.Genres, user, dtoOptions)); } - public IEnumerable<Audio> GetInstantMixFromArtist(MusicArtist item, User user) + public IEnumerable<Audio> GetInstantMixFromArtist(MusicArtist item, User user, DtoOptions dtoOptions) { - return GetInstantMixFromGenres(item.Genres, user); + return GetInstantMixFromGenres(item.Genres, user, dtoOptions); } - public IEnumerable<Audio> GetInstantMixFromAlbum(MusicAlbum item, User user) + public IEnumerable<Audio> GetInstantMixFromAlbum(MusicAlbum item, User user, DtoOptions dtoOptions) { - return GetInstantMixFromGenres(item.Genres, user); + return GetInstantMixFromGenres(item.Genres, user, dtoOptions); } - public IEnumerable<Audio> GetInstantMixFromFolder(Folder item, User user) + public IEnumerable<Audio> GetInstantMixFromFolder(Folder item, User user, DtoOptions dtoOptions) { var genres = item .GetRecursiveChildren(user, new InternalItemsQuery(user) { - IncludeItemTypes = new[] { typeof(Audio).Name } + IncludeItemTypes = new[] { typeof(Audio).Name }, + DtoOptions = dtoOptions }) .Cast<Audio>() .SelectMany(i => i.Genres) .Concat(item.Genres) .DistinctNames(); - return GetInstantMixFromGenres(genres, user); + return GetInstantMixFromGenres(genres, user, dtoOptions); } - public IEnumerable<Audio> GetInstantMixFromPlaylist(Playlist item, User user) + public IEnumerable<Audio> GetInstantMixFromPlaylist(Playlist item, User user, DtoOptions dtoOptions) { - return GetInstantMixFromGenres(item.Genres, user); + return GetInstantMixFromGenres(item.Genres, user, dtoOptions); } - public IEnumerable<Audio> GetInstantMixFromGenres(IEnumerable<string> genres, User user) + public IEnumerable<Audio> GetInstantMixFromGenres(IEnumerable<string> genres, User user, DtoOptions dtoOptions) { var genreIds = genres.DistinctNames().Select(i => { @@ -73,10 +75,10 @@ namespace Emby.Server.Implementations.Library }).Where(i => i != null); - return GetInstantMixFromGenreIds(genreIds, user); + return GetInstantMixFromGenreIds(genreIds, user, dtoOptions); } - public IEnumerable<Audio> GetInstantMixFromGenreIds(IEnumerable<string> genreIds, User user) + public IEnumerable<Audio> GetInstantMixFromGenreIds(IEnumerable<string> genreIds, User user, DtoOptions dtoOptions) { return _libraryManager.GetItemList(new InternalItemsQuery(user) { @@ -86,47 +88,49 @@ namespace Emby.Server.Implementations.Library Limit = 200, - SortBy = new[] { ItemSortBy.Random } + SortBy = new[] { ItemSortBy.Random }, + + DtoOptions = dtoOptions }).Cast<Audio>(); } - public IEnumerable<Audio> GetInstantMixFromItem(BaseItem item, User user) + public IEnumerable<Audio> GetInstantMixFromItem(BaseItem item, User user, DtoOptions dtoOptions) { var genre = item as MusicGenre; if (genre != null) { - return GetInstantMixFromGenreIds(new[] { item.Id.ToString("N") }, user); + return GetInstantMixFromGenreIds(new[] { item.Id.ToString("N") }, user, dtoOptions); } var playlist = item as Playlist; if (playlist != null) { - return GetInstantMixFromPlaylist(playlist, user); + return GetInstantMixFromPlaylist(playlist, user, dtoOptions); } var album = item as MusicAlbum; if (album != null) { - return GetInstantMixFromAlbum(album, user); + return GetInstantMixFromAlbum(album, user, dtoOptions); } var artist = item as MusicArtist; if (artist != null) { - return GetInstantMixFromArtist(artist, user); + return GetInstantMixFromArtist(artist, user, dtoOptions); } var song = item as Audio; if (song != null) { - return GetInstantMixFromSong(song, user); + return GetInstantMixFromSong(song, user, dtoOptions); } var folder = item as Folder; if (folder != null) { - return GetInstantMixFromFolder(folder, user); + return GetInstantMixFromFolder(folder, user, dtoOptions); } return new Audio[] { }; diff --git a/Emby.Server.Implementations/Library/SearchEngine.cs b/Emby.Server.Implementations/Library/SearchEngine.cs index 5f88a6c66..6f63322c8 100644 --- a/Emby.Server.Implementations/Library/SearchEngine.cs +++ b/Emby.Server.Implementations/Library/SearchEngine.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Extensions; namespace Emby.Server.Implementations.Library @@ -175,7 +176,17 @@ namespace Emby.Server.Implementations.Library IsNews = query.IsNews, IsSeries = query.IsSeries, IsSports = query.IsSports, - MediaTypes = query.MediaTypes + MediaTypes = query.MediaTypes, + + DtoOptions = new DtoOptions + { + Fields = new List<ItemFields> + { + ItemFields.AirTime, + ItemFields.DateCreated, + ItemFields.ChannelInfo + } + } }); // Add search hints based on item name diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs index 9e1291847..f403ca266 100644 --- a/Emby.Server.Implementations/Library/UserViewManager.cs +++ b/Emby.Server.Implementations/Library/UserViewManager.cs @@ -12,6 +12,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Model.Globalization; @@ -190,11 +191,11 @@ namespace Emby.Server.Implementations.Library return _libraryManager.GetShadowView(parent, viewType, sortName, cancellationToken); } - public List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request) + public List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request, DtoOptions options) { var user = _userManager.GetUserById(request.UserId); - var libraryItems = GetItemsForLatestItems(user, request); + var libraryItems = GetItemsForLatestItems(user, request, options); var list = new List<Tuple<BaseItem, List<BaseItem>>>(); @@ -230,7 +231,7 @@ namespace Emby.Server.Implementations.Library return list; } - private IEnumerable<BaseItem> GetItemsForLatestItems(User user, LatestItemsQuery request) + private IEnumerable<BaseItem> GetItemsForLatestItems(User user, LatestItemsQuery request, DtoOptions options) { var parentId = request.ParentId; @@ -289,7 +290,8 @@ namespace Emby.Server.Implementations.Library IsVirtualItem = false, Limit = limit * 5, SourceTypes = parents.Count == 0 ? new[] { SourceType.Library } : new SourceType[] { }, - IsPlayed = isPlayed + IsPlayed = isPlayed, + DtoOptions = options }, parents); } diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs index 7f1a9ba6d..89b772731 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs @@ -30,6 +30,7 @@ using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.IO; @@ -1232,7 +1233,9 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV RequiresClosing = false, Protocol = MediaBrowser.Model.MediaInfo.MediaProtocol.Http, BufferMs = 0, - IgnoreDts = true + IgnoreDts = true, + IgnoreIndex = true, + GenPtsInput = true }; var isAudio = false; @@ -1640,7 +1643,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV SortOrder = SortOrder.Descending, IsVirtualItem = false, IsFolder = false, - Recursive = true + Recursive = true, + DtoOptions = new DtoOptions(true) }).ConfigureAwait(false)) .Items @@ -1977,7 +1981,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV { IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, Limit = 1, - ExternalId = timer.ProgramId + ExternalId = timer.ProgramId, + DtoOptions = new DtoOptions(true) }).FirstOrDefault() as LiveTvProgram; @@ -2511,16 +2516,17 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV if (program.EpisodeNumber.HasValue && program.SeasonNumber.HasValue) { - var result = _libraryManager.GetItemsResult(new InternalItemsQuery + var result = _libraryManager.GetItemIds(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(Episode).Name }, ParentIndexNumber = program.SeasonNumber.Value, IndexNumber = program.EpisodeNumber.Value, AncestorIds = seriesIds, - IsVirtualItem = false + IsVirtualItem = false, + Limit = 1 }); - if (result.TotalRecordCount > 0) + if (result.Count > 0) { return true; } diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs index 2f449bee2..cec158633 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs @@ -200,27 +200,32 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV flags.Add("+genpts"); } - var inputModifiers = "-async 1 -vsync -1"; + var inputModifier = "-async 1 -vsync -1"; if (flags.Count > 0) { - inputModifiers += " -fflags " + string.Join("", flags.ToArray()); + inputModifier += " -fflags " + string.Join("", flags.ToArray()); } if (!string.IsNullOrWhiteSpace(GetEncodingOptions().HardwareAccelerationType)) { - inputModifiers += " -hwaccel auto"; + inputModifier += " -hwaccel auto"; } if (mediaSource.ReadAtNativeFramerate) { - inputModifiers += " -re"; + inputModifier += " -re"; + } + + if (mediaSource.RequiresLooping) + { + inputModifier += " -stream_loop -1"; } var analyzeDurationSeconds = 5; var analyzeDuration = " -analyzeduration " + (analyzeDurationSeconds * 1000000).ToString(CultureInfo.InvariantCulture); - inputModifiers += analyzeDuration; + inputModifier += analyzeDuration; var subtitleArgs = CopySubtitles ? " -codec:s copy" : " -sn"; @@ -239,7 +244,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV durationParam, outputParam); - return inputModifiers + " " + commandLineArgs; + return inputModifier + " " + commandLineArgs; } private string GetAudioArgs(MediaSourceInfo mediaSource) diff --git a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs index 43b055098..5c5072192 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -149,7 +149,11 @@ namespace Emby.Server.Implementations.LiveTv IncludeItemTypes = new string[] { typeof(Series).Name }, Name = seriesName, Limit = 1, - ImageTypes = new ImageType[] { ImageType.Thumb } + ImageTypes = new ImageType[] { ImageType.Thumb }, + DtoOptions = new DtoOptions + { + Fields = new List<MediaBrowser.Model.Querying.ItemFields>() + } }).FirstOrDefault(); @@ -191,7 +195,11 @@ namespace Emby.Server.Implementations.LiveTv IncludeItemTypes = new string[] { typeof(LiveTvProgram).Name }, ExternalSeriesId = programSeriesId, Limit = 1, - ImageTypes = new ImageType[] { ImageType.Primary } + ImageTypes = new ImageType[] { ImageType.Primary }, + DtoOptions = new DtoOptions + { + Fields = new List<MediaBrowser.Model.Querying.ItemFields>() + } }).FirstOrDefault(); @@ -239,7 +247,11 @@ namespace Emby.Server.Implementations.LiveTv IncludeItemTypes = new string[] { typeof(Series).Name }, Name = seriesName, Limit = 1, - ImageTypes = new ImageType[] { ImageType.Thumb } + ImageTypes = new ImageType[] { ImageType.Thumb }, + DtoOptions = new DtoOptions + { + Fields = new List<MediaBrowser.Model.Querying.ItemFields>() + } }).FirstOrDefault(); @@ -281,14 +293,22 @@ namespace Emby.Server.Implementations.LiveTv IncludeItemTypes = new string[] { typeof(Series).Name }, Name = seriesName, Limit = 1, - ImageTypes = new ImageType[] { ImageType.Primary } + ImageTypes = new ImageType[] { ImageType.Primary }, + DtoOptions = new DtoOptions + { + Fields = new List<MediaBrowser.Model.Querying.ItemFields>() + } }).FirstOrDefault() ?? _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new string[] { typeof(LiveTvProgram).Name }, ExternalSeriesId = programSeriesId, Limit = 1, - ImageTypes = new ImageType[] { ImageType.Primary } + ImageTypes = new ImageType[] { ImageType.Primary }, + DtoOptions = new DtoOptions + { + Fields = new List<MediaBrowser.Model.Querying.ItemFields>() + } }).FirstOrDefault(); diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs index 5ba96283b..fa505d3fb 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs @@ -173,7 +173,7 @@ namespace Emby.Server.Implementations.LiveTv } } - public async Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, CancellationToken cancellationToken) + public async Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); @@ -192,7 +192,8 @@ namespace Emby.Server.Implementations.LiveTv IsFavorite = query.IsFavorite, IsLiked = query.IsLiked, StartIndex = query.StartIndex, - Limit = query.Limit + Limit = query.Limit, + DtoOptions = dtoOptions }; internalQuery.OrderBy.AddRange(query.SortBy.Select(i => new Tuple<string, SortOrder>(i, query.SortOrder ?? SortOrder.Ascending))); @@ -249,7 +250,7 @@ namespace Emby.Server.Implementations.LiveTv { Id = id - }, cancellationToken).ConfigureAwait(false); + }, new DtoOptions(), cancellationToken).ConfigureAwait(false); return result.Items.FirstOrDefault(); } @@ -865,13 +866,6 @@ namespace Emby.Server.Implementations.LiveTv return item.Id; } - - - private string GetExternalSeriesIdLegacy(BaseItem item) - { - return item.GetProviderId("ProviderExternalSeriesId"); - } - public async Task<BaseItemDto> GetProgram(string id, CancellationToken cancellationToken, User user = null) { var program = GetInternalProgram(id); @@ -882,11 +876,6 @@ namespace Emby.Server.Implementations.LiveTv var externalSeriesId = program.ExternalSeriesId; - if (string.IsNullOrWhiteSpace(externalSeriesId)) - { - externalSeriesId = GetExternalSeriesIdLegacy(program); - } - list.Add(new Tuple<BaseItemDto, string, string, string>(dto, program.ServiceName, GetItemExternalId(program), externalSeriesId)); await AddRecordingInfo(list, cancellationToken).ConfigureAwait(false); @@ -906,6 +895,8 @@ namespace Emby.Server.Implementations.LiveTv query.SortBy = new[] { ItemSortBy.StartDate }; } + RemoveFields(options); + var internalQuery = new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, @@ -965,8 +956,6 @@ namespace Emby.Server.Implementations.LiveTv var queryResult = _libraryManager.QueryItems(internalQuery); - RemoveFields(options); - var returnArray = (await _dtoService.GetBaseItemDtos(queryResult.Items, options, user).ConfigureAwait(false)).ToArray(); var result = new QueryResult<BaseItemDto> @@ -1045,12 +1034,12 @@ namespace Emby.Server.Implementations.LiveTv public async Task<QueryResult<BaseItemDto>> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken) { + RemoveFields(options); + var internalResult = await GetRecommendedProgramsInternal(query, options, cancellationToken).ConfigureAwait(false); var user = _userManager.GetUserById(query.UserId); - RemoveFields(options); - var returnArray = (await _dtoService.GetBaseItemDtos(internalResult.Items, options, user).ConfigureAwait(false)).ToArray(); var result = new QueryResult<BaseItemDto> @@ -1333,7 +1322,8 @@ namespace Emby.Server.Implementations.LiveTv { IncludeItemTypes = new string[] { typeof(LiveTvProgram).Name }, - ChannelIds = new string[] { currentChannel.Id.ToString("N") } + ChannelIds = new string[] { currentChannel.Id.ToString("N") }, + DtoOptions = new DtoOptions(true) }).Cast<LiveTvProgram>().ToDictionary(i => i.Id); @@ -1436,7 +1426,8 @@ namespace Emby.Server.Implementations.LiveTv { var list = _itemRepo.GetItemIdsList(new InternalItemsQuery { - IncludeItemTypes = validTypes + IncludeItemTypes = validTypes, + DtoOptions = new DtoOptions(false) }).ToList(); @@ -1663,6 +1654,8 @@ namespace Emby.Server.Implementations.LiveTv includeItemTypes.Add(typeof(Series).Name); + RemoveFields(options); + var internalResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user) { Recursive = true, @@ -1672,11 +1665,10 @@ namespace Emby.Server.Implementations.LiveTv SortOrder = SortOrder.Descending, EnableTotalRecordCount = query.EnableTotalRecordCount, IncludeItemTypes = includeItemTypes.ToArray(), - ExcludeItemTypes = excludeItemTypes.ToArray() + ExcludeItemTypes = excludeItemTypes.ToArray(), + DtoOptions = options }); - RemoveFields(options); - var returnArray = (await _dtoService.GetBaseItemDtos(internalResult.Items, options, user).ConfigureAwait(false)).ToArray(); return new QueryResult<BaseItemDto> @@ -1686,7 +1678,7 @@ namespace Emby.Server.Implementations.LiveTv }; } - public async Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, CancellationToken cancellationToken) + public async Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); if (user != null && !IsLiveTvEnabled(user)) @@ -1696,14 +1688,15 @@ namespace Emby.Server.Implementations.LiveTv if (_services.Count == 1 && !(query.IsInProgress ?? false) && (!query.IsLibraryItem.HasValue || query.IsLibraryItem.Value)) { - return GetEmbyRecordings(query, new DtoOptions(), user); + return GetEmbyRecordings(query, options, user); } await RefreshRecordings(cancellationToken).ConfigureAwait(false); var internalQuery = new InternalItemsQuery(user) { - IncludeItemTypes = new[] { typeof(LiveTvVideoRecording).Name, typeof(LiveTvAudioRecording).Name } + IncludeItemTypes = new[] { typeof(LiveTvVideoRecording).Name, typeof(LiveTvAudioRecording).Name }, + DtoOptions = options }; if (!string.IsNullOrEmpty(query.ChannelId)) @@ -1872,11 +1865,6 @@ namespace Emby.Server.Implementations.LiveTv var externalSeriesId = program.ExternalSeriesId; - if (string.IsNullOrWhiteSpace(externalSeriesId)) - { - externalSeriesId = GetExternalSeriesIdLegacy(program); - } - programTuples.Add(new Tuple<BaseItemDto, string, string, string>(dto, serviceName, GetItemExternalId(program), externalSeriesId)); } @@ -1953,10 +1941,10 @@ namespace Emby.Server.Implementations.LiveTv { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); - var internalResult = await GetInternalRecordings(query, cancellationToken).ConfigureAwait(false); - RemoveFields(options); + var internalResult = await GetInternalRecordings(query, options, cancellationToken).ConfigureAwait(false); + var returnArray = (await _dtoService.GetBaseItemDtos(internalResult.Items, options, user).ConfigureAwait(false)).ToArray(); return new QueryResult<BaseItemDto> @@ -2299,7 +2287,8 @@ namespace Emby.Server.Implementations.LiveTv MinEndDate = now, Limit = channelIds.Length, SortBy = new[] { "StartDate" }, - TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Result.Id.ToString("N") } + TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Result.Id.ToString("N") }, + DtoOptions = options }).ToList() : new List<BaseItem>(); @@ -2601,7 +2590,7 @@ namespace Emby.Server.Implementations.LiveTv { UserId = query.UserId - }, cancellationToken).ConfigureAwait(false); + }, new DtoOptions(), cancellationToken).ConfigureAwait(false); var recordings = recordingResult.Items.OfType<ILiveTvRecording>().ToList(); diff --git a/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs b/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs index 9514c12ca..75124cab8 100644 --- a/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs +++ b/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Threading.Tasks; using Emby.Server.Implementations.Images; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; @@ -89,7 +90,8 @@ namespace Emby.Server.Implementations.Playlists SortBy = new[] { ItemSortBy.Random }, Limit = 4, Recursive = true, - ImageTypes = new[] { ImageType.Primary } + ImageTypes = new[] { ImageType.Primary }, + DtoOptions = new DtoOptions(false) }).ToList(); @@ -120,7 +122,8 @@ namespace Emby.Server.Implementations.Playlists SortBy = new[] { ItemSortBy.Random }, Limit = 4, Recursive = true, - ImageTypes = new[] { ImageType.Primary } + ImageTypes = new[] { ImageType.Primary }, + DtoOptions = new DtoOptions(false) }).ToList(); diff --git a/Emby.Server.Implementations/Playlists/PlaylistManager.cs b/Emby.Server.Implementations/Playlists/PlaylistManager.cs index 18042b587..6a290c664 100644 --- a/Emby.Server.Implementations/Playlists/PlaylistManager.cs +++ b/Emby.Server.Implementations/Playlists/PlaylistManager.cs @@ -13,6 +13,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; @@ -135,7 +136,10 @@ namespace Emby.Server.Implementations.Playlists if (options.ItemIdList.Count > 0) { - await AddToPlaylistInternal(playlist.Id.ToString("N"), options.ItemIdList, user); + await AddToPlaylistInternal(playlist.Id.ToString("N"), options.ItemIdList, user, new DtoOptions(false) + { + EnableImages = true + }); } return new PlaylistCreationResult @@ -160,21 +164,24 @@ namespace Emby.Server.Implementations.Playlists return path; } - private Task<IEnumerable<BaseItem>> GetPlaylistItems(IEnumerable<string> itemIds, string playlistMediaType, User user) + private Task<IEnumerable<BaseItem>> GetPlaylistItems(IEnumerable<string> itemIds, string playlistMediaType, User user, DtoOptions options) { var items = itemIds.Select(i => _libraryManager.GetItemById(i)).Where(i => i != null); - return Playlist.GetPlaylistItems(playlistMediaType, items, user); + return Playlist.GetPlaylistItems(playlistMediaType, items, user, options); } public Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds, string userId) { var user = string.IsNullOrWhiteSpace(userId) ? null : _userManager.GetUserById(userId); - return AddToPlaylistInternal(playlistId, itemIds, user); + return AddToPlaylistInternal(playlistId, itemIds, user, new DtoOptions(false) + { + EnableImages = true + }); } - private async Task AddToPlaylistInternal(string playlistId, IEnumerable<string> itemIds, User user) + private async Task AddToPlaylistInternal(string playlistId, IEnumerable<string> itemIds, User user, DtoOptions options) { var playlist = _libraryManager.GetItemById(playlistId) as Playlist; @@ -185,7 +192,7 @@ namespace Emby.Server.Implementations.Playlists var list = new List<LinkedChild>(); - var items = (await GetPlaylistItems(itemIds, playlist.MediaType, user).ConfigureAwait(false)) + var items = (await GetPlaylistItems(itemIds, playlist.MediaType, user, options).ConfigureAwait(false)) .Where(i => i.SupportsAddingToPlaylist) .ToList(); diff --git a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs index d1c70ba1d..22d54831e 100644 --- a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; using MediaBrowser.Model.Entities; @@ -85,7 +86,9 @@ namespace Emby.Server.Implementations.ScheduledTasks { MediaTypes = new[] { MediaType.Video }, IsFolder = false, - Recursive = true + Recursive = true, + DtoOptions = new DtoOptions(false) + }) .OfType<Video>() .ToList(); diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs index de00cf239..7031ad770 100644 --- a/Emby.Server.Implementations/Session/SessionManager.cs +++ b/Emby.Server.Implementations/Session/SessionManager.cs @@ -1022,7 +1022,10 @@ namespace Emby.Server.Implementations.Session var series = episode.Series; if (series != null) { - var episodes = series.GetEpisodes(user) + var episodes = series.GetEpisodes(user, new DtoOptions(false) + { + EnableImages = false + }) .Where(i => !i.IsVirtualItem) .SkipWhile(i => i.Id != episode.Id) .ToList(); @@ -1065,7 +1068,11 @@ namespace Emby.Server.Implementations.Session var items = byName.GetTaggedItems(new InternalItemsQuery(user) { IsFolder = false, - Recursive = true + Recursive = true, + DtoOptions = new DtoOptions(false) + { + EnableImages = false + } }); return FilterToSingleMediaType(items) @@ -1080,7 +1087,11 @@ namespace Emby.Server.Implementations.Session var itemsResult = await folder.GetItems(new InternalItemsQuery(user) { Recursive = true, - IsFolder = false + IsFolder = false, + DtoOptions = new DtoOptions(false) + { + EnableImages = false + } }).ConfigureAwait(false); @@ -1111,7 +1122,7 @@ namespace Emby.Server.Implementations.Session return new List<BaseItem>(); } - return _musicManager.GetInstantMixFromItem(item, user); + return _musicManager.GetInstantMixFromItem(item, user, new DtoOptions(false) { EnableImages = false }); } public Task SendBrowseCommand(string controllingSessionId, string sessionId, BrowseRequest command, CancellationToken cancellationToken) diff --git a/Emby.Server.Implementations/TV/SeriesPostScanTask.cs b/Emby.Server.Implementations/TV/SeriesPostScanTask.cs index 3d93561f1..23b6a3cb5 100644 --- a/Emby.Server.Implementations/TV/SeriesPostScanTask.cs +++ b/Emby.Server.Implementations/TV/SeriesPostScanTask.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; @@ -58,7 +59,8 @@ namespace Emby.Server.Implementations.TV { IncludeItemTypes = new[] { typeof(Series).Name }, Recursive = true, - GroupByPresentationUniqueKey = false + GroupByPresentationUniqueKey = false, + DtoOptions = new DtoOptions(true) }).Cast<Series>().ToList(); @@ -188,7 +190,8 @@ namespace Emby.Server.Implementations.TV { IncludeItemTypes = new[] { typeof(Series).Name }, Recursive = true, - GroupByPresentationUniqueKey = false + GroupByPresentationUniqueKey = false, + DtoOptions = new DtoOptions(true) }).Cast<Series>().ToList(); diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs index b5e64bc23..255c93b5f 100644 --- a/Emby.Server.Implementations/TV/TVSeriesManager.cs +++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; using System.Linq; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; namespace Emby.Server.Implementations.TV { @@ -26,7 +27,7 @@ namespace Emby.Server.Implementations.TV _config = config; } - public QueryResult<BaseItem> GetNextUp(NextUpQuery request) + public QueryResult<BaseItem> GetNextUp(NextUpQuery request, DtoOptions dtoOptions) { var user = _userManager.GetUserById(request.UserId); @@ -75,12 +76,12 @@ namespace Emby.Server.Implementations.TV }).Cast<Series>().Select(GetUniqueSeriesKey); // Avoid implicitly captured closure - var episodes = GetNextUpEpisodes(request, user, items); + var episodes = GetNextUpEpisodes(request, user, items, dtoOptions); return GetResult(episodes, request); } - public QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders) + public QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders, DtoOptions dtoOptions) { var user = _userManager.GetUserById(request.UserId); @@ -126,18 +127,18 @@ namespace Emby.Server.Implementations.TV }, parentsFolders.Cast<BaseItem>().ToList()).Cast<Series>().Select(GetUniqueSeriesKey); // Avoid implicitly captured closure - var episodes = GetNextUpEpisodes(request, user, items); + var episodes = GetNextUpEpisodes(request, user, items, dtoOptions); return GetResult(episodes, request); } - public IEnumerable<Episode> GetNextUpEpisodes(NextUpQuery request, User user, IEnumerable<string> seriesKeys) + public IEnumerable<Episode> GetNextUpEpisodes(NextUpQuery request, User user, IEnumerable<string> seriesKeys, DtoOptions dtoOptions) { // Avoid implicitly captured closure var currentUser = user; var allNextUp = seriesKeys - .Select(i => GetNextUp(i, currentUser)); + .Select(i => GetNextUp(i, currentUser, dtoOptions)); //allNextUp = allNextUp.OrderByDescending(i => i.Item1); @@ -175,7 +176,7 @@ namespace Emby.Server.Implementations.TV /// Gets the next up. /// </summary> /// <returns>Task{Episode}.</returns> - private Tuple<DateTime, Func<Episode>> GetNextUp(string seriesKey, User user) + private Tuple<DateTime, Func<Episode>> GetNextUp(string seriesKey, User user, DtoOptions dtoOptions) { var enableSeriesPresentationKey = _config.Configuration.EnableSeriesPresentationUniqueKey; @@ -213,7 +214,8 @@ namespace Emby.Server.Implementations.TV IsPlayed = false, IsVirtualItem = false, ParentIndexNumberNotEquals = 0, - MinSortName = lastWatchedEpisode == null ? null : lastWatchedEpisode.SortName + MinSortName = lastWatchedEpisode == null ? null : lastWatchedEpisode.SortName, + DtoOptions = dtoOptions }).Cast<Episode>().FirstOrDefault(); }; diff --git a/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs b/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs index 7d3a118c0..376696536 100644 --- a/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs +++ b/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs @@ -14,6 +14,7 @@ using Emby.Server.Implementations.Images; using MediaBrowser.Common.IO; using MediaBrowser.Model.IO; using MediaBrowser.Controller.Collections; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; @@ -46,7 +47,8 @@ namespace Emby.Server.Implementations.UserViews { CollapseBoxSetItems = false, Recursive = recursive, - ExcludeItemTypes = new[] { "UserView", "CollectionFolder", "Playlist" } + ExcludeItemTypes = new[] { "UserView", "CollectionFolder", "Playlist" }, + DtoOptions = new DtoOptions(false) }).ConfigureAwait(false); @@ -144,7 +146,8 @@ namespace Emby.Server.Implementations.UserViews Recursive = recursive, IncludeItemTypes = new[] { typeof(BoxSet).Name }, Limit = 20, - SortBy = new[] { ItemSortBy.Random } + SortBy = new[] { ItemSortBy.Random }, + DtoOptions = new DtoOptions(false) }); return GetFinalItems(items.Where(i => i.HasImage(ImageType.Primary) || i.HasImage(ImageType.Thumb)).ToList(), 8); diff --git a/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs b/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs index b0fb954e2..06f7d73e5 100644 --- a/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -12,6 +12,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using Emby.Server.Implementations.Images; +using MediaBrowser.Controller.Dto; using MediaBrowser.Model.IO; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Extensions; @@ -58,7 +59,9 @@ namespace Emby.Server.Implementations.UserViews IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, ImageTypes = new[] { ImageType.Primary }, Limit = 30, - IsMovie = true + IsMovie = true, + DtoOptions = new DtoOptions(false) + }).ToList(); return GetFinalItems(programs).ToList(); @@ -69,7 +72,8 @@ namespace Emby.Server.Implementations.UserViews { var userItemsResult = await view.GetItems(new InternalItemsQuery { - CollapseBoxSetItems = false + CollapseBoxSetItems = false, + DtoOptions = new DtoOptions(false) }); return userItemsResult.Items.ToList(); @@ -84,6 +88,7 @@ namespace Emby.Server.Implementations.UserViews CollapseBoxSetItems = false, Recursive = recursive, ExcludeItemTypes = new[] { "UserView", "CollectionFolder", "Person" }, + DtoOptions = new DtoOptions(false) }).ConfigureAwait(false); |
