diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-05-21 03:25:49 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-05-21 03:25:49 -0400 |
| commit | da77b058172e1c7cdeb6dadd6106ea3fdd739544 (patch) | |
| tree | 570215d192714f18170558e6664bcab539a7b07c /Emby.Server.Implementations/LiveTv | |
| parent | ead88d3b65c8bd1023d6915af0aed1c703e21979 (diff) | |
update data queries
Diffstat (limited to 'Emby.Server.Implementations/LiveTv')
4 files changed, 73 insertions, 53 deletions
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(); |
