From a69ca6c55bb7183d247c2c3b25203dbed99fd5d9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 6 Oct 2016 14:55:01 -0400 Subject: avoid buffering http responses --- MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'MediaBrowser.Server.Implementations/Playlists') diff --git a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs index ff0e4a0e01..07b63718cd 100644 --- a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs +++ b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs @@ -17,7 +17,7 @@ namespace MediaBrowser.Server.Implementations.Playlists public override bool IsVisible(User user) { - return base.IsVisible(user) && GetChildren(user, false).Any(); + return base.IsVisible(user); } protected override IEnumerable GetEligibleChildrenForRecursiveChildren(User user) -- cgit v1.2.3 From 2c6fc11dcffcaf44aebc8db5c9555e5f72a9269f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 11 Oct 2016 17:33:38 -0400 Subject: update live stream sharing --- MediaBrowser.Controller/Entities/Audio/Audio.cs | 9 +++++ MediaBrowser.Controller/Entities/Folder.cs | 12 ------- MediaBrowser.Controller/Entities/Game.cs | 2 -- .../Entities/InternalItemsQuery.cs | 2 ++ MediaBrowser.Controller/Entities/Movies/Movie.cs | 9 +++++ MediaBrowser.Controller/Entities/Video.cs | 9 +++++ .../LiveTv/LiveTvVideoRecording.cs | 9 +++++ MediaBrowser.Controller/Playlists/Playlist.cs | 14 ++++---- MediaBrowser.Model/Querying/ItemFields.cs | 4 ++- .../Library/UserDataManager.cs | 4 +++ .../LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs | 21 ++---------- .../Persistence/SqliteItemRepository.cs | 40 ++++++++++++++++++---- .../Playlists/ManualPlaylistsFolder.cs | 2 +- 13 files changed, 90 insertions(+), 47 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Playlists') diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 891fb7d522..56c3248f33 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -59,6 +59,15 @@ namespace MediaBrowser.Controller.Entities.Audio AlbumArtists = new List(); } + [IgnoreDataMember] + public override bool SupportsPlayedStatus + { + get + { + return true; + } + } + [IgnoreDataMember] public override bool SupportsAddingToPlaylist { diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 993e36fd82..1e466ec089 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -807,18 +807,6 @@ namespace MediaBrowser.Controller.Entities return true; } - if (query.HasThemeSong.HasValue) - { - Logger.Debug("Query requires post-filtering due to HasThemeSong"); - return true; - } - - if (query.HasThemeVideo.HasValue) - { - Logger.Debug("Query requires post-filtering due to HasThemeVideo"); - return true; - } - // Filter by VideoType if (query.VideoTypes.Length > 0) { diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs index 59bfc2363c..aa2ccf4bc0 100644 --- a/MediaBrowser.Controller/Entities/Game.cs +++ b/MediaBrowser.Controller/Entities/Game.cs @@ -16,8 +16,6 @@ namespace MediaBrowser.Controller.Entities RemoteTrailers = new List(); LocalTrailerIds = new List(); RemoteTrailerIds = new List(); - ThemeSongIds = new List(); - ThemeVideoIds = new List(); } public List LocalTrailerIds { get; set; } diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index f375e1b1c2..fec703b946 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -168,6 +168,8 @@ namespace MediaBrowser.Controller.Entities switch (name) { + case ItemFields.ThemeSongIds: + case ItemFields.ThemeVideoIds: case ItemFields.ProductionLocations: case ItemFields.Keywords: case ItemFields.Taglines: diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 9a10a63bd0..22cc0316a8 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -68,6 +68,15 @@ namespace MediaBrowser.Controller.Entities.Movies set { TmdbCollectionName = value; } } + [IgnoreDataMember] + protected override bool SupportsIsInMixedFolderDetection + { + get + { + return false; + } + } + protected override async Task RefreshedOwnedItems(MetadataRefreshOptions options, List fileSystemChildren, CancellationToken cancellationToken) { var hasChanges = await base.RefreshedOwnedItems(options, fileSystemChildren, cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index e83d1298e1..5aaff6fef4 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -53,6 +53,15 @@ namespace MediaBrowser.Controller.Entities } } + [IgnoreDataMember] + protected override bool SupportsIsInMixedFolderDetection + { + get + { + return true; + } + } + public override string CreatePresentationUniqueKey() { if (!string.IsNullOrWhiteSpace(PrimaryVersionId)) diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs index 635df5dc7b..c255630f52 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs @@ -54,6 +54,15 @@ namespace MediaBrowser.Controller.LiveTv } } + [IgnoreDataMember] + protected override bool SupportsIsInMixedFolderDetection + { + get + { + return false; + } + } + [IgnoreDataMember] public override bool SupportsPlayedStatus { diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs index 8e0ac7ea88..6ab85f079c 100644 --- a/MediaBrowser.Controller/Playlists/Playlist.cs +++ b/MediaBrowser.Controller/Playlists/Playlist.cs @@ -207,15 +207,15 @@ namespace MediaBrowser.Controller.Playlists public override bool IsVisible(User user) { - if (base.IsVisible(user)) - { - var userId = user.Id.ToString("N"); + var userId = user.Id.ToString("N"); - return Shares.Any(i => string.Equals(userId, i.UserId, StringComparison.OrdinalIgnoreCase)) || - string.Equals(OwnerUserId, userId, StringComparison.OrdinalIgnoreCase); - } + return Shares.Any(i => string.Equals(userId, i.UserId, StringComparison.OrdinalIgnoreCase)) || + string.Equals(OwnerUserId, userId, StringComparison.OrdinalIgnoreCase); + } - return false; + public override bool IsVisibleStandalone(User user) + { + return IsVisible(user); } } } diff --git a/MediaBrowser.Model/Querying/ItemFields.cs b/MediaBrowser.Model/Querying/ItemFields.cs index fcacc621c5..dfca9e7718 100644 --- a/MediaBrowser.Model/Querying/ItemFields.cs +++ b/MediaBrowser.Model/Querying/ItemFields.cs @@ -260,6 +260,8 @@ /// /// The service name /// - ServiceName + ServiceName, + ThemeSongIds, + ThemeVideoIds } } diff --git a/MediaBrowser.Server.Implementations/Library/UserDataManager.cs b/MediaBrowser.Server.Implementations/Library/UserDataManager.cs index 139ea0ab61..9ee65a57c6 100644 --- a/MediaBrowser.Server.Implementations/Library/UserDataManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserDataManager.cs @@ -274,6 +274,10 @@ namespace MediaBrowser.Server.Implementations.Library positionTicks = 0; data.Played = false; } + if (item is Audio) + { + positionTicks = 0; + } data.PlaybackPositionTicks = positionTicks; diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs index 365f784a79..c4922eec57 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs @@ -512,29 +512,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun if (EnableLocalBuffer()) { var liveStream = new HdHomerunLiveStream(mediaSource, streamId, _fileSystem, _httpClient, Logger, Config.ApplicationPaths, _appHost); - if (info.AllowHWTranscoding) - { - var model = await GetModelInfo(info, cancellationToken).ConfigureAwait(false); - - if ((model ?? string.Empty).IndexOf("hdtc", StringComparison.OrdinalIgnoreCase) != -1) - { - liveStream.EnableStreamSharing = !info.AllowHWTranscoding; - } - else - { - liveStream.EnableStreamSharing = true; - } - } - else - { - liveStream.EnableStreamSharing = true; - } + liveStream.EnableStreamSharing = true; return liveStream; } else { var liveStream = new LiveStream(mediaSource); - liveStream.EnableStreamSharing = false; + liveStream.EnableStreamSharing = true; + //liveStream.EnableStreamSharing = false; return liveStream; } } diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 1656d8304d..2235bfe0da 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -1875,17 +1875,23 @@ namespace MediaBrowser.Server.Implementations.Persistence index++; } - if (!reader.IsDBNull(index)) + if (query.HasField(ItemFields.ThemeSongIds)) { - item.ThemeSongIds = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => new Guid(i)).ToList(); + if (!reader.IsDBNull(index)) + { + item.ThemeSongIds = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => new Guid(i)).ToList(); + } + index++; } - index++; - if (!reader.IsDBNull(index)) + if (query.HasField(ItemFields.ThemeVideoIds)) { - item.ThemeVideoIds = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => new Guid(i)).ToList(); + if (!reader.IsDBNull(index)) + { + item.ThemeVideoIds = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => new Guid(i)).ToList(); + } + index++; } - index++; if (string.IsNullOrWhiteSpace(item.Tagline)) { @@ -3826,6 +3832,28 @@ namespace MediaBrowser.Server.Implementations.Persistence clause += ")"; whereClauses.Add(clause); } + if (query.HasThemeSong.HasValue) + { + if (query.HasThemeSong.Value) + { + whereClauses.Add("ThemeSongIds not null"); + } + else + { + whereClauses.Add("ThemeSongIds is null"); + } + } + if (query.HasThemeVideo.HasValue) + { + if (query.HasThemeVideo.Value) + { + whereClauses.Add("ThemeVideoIds not null"); + } + else + { + whereClauses.Add("ThemeVideoIds is null"); + } + } //var enableItemsByName = query.IncludeItemsByName ?? query.IncludeItemTypes.Length > 0; var enableItemsByName = query.IncludeItemsByName ?? false; diff --git a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs index 07b63718cd..d9c36cd3b0 100644 --- a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs +++ b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs @@ -17,7 +17,7 @@ namespace MediaBrowser.Server.Implementations.Playlists public override bool IsVisible(User user) { - return base.IsVisible(user); + return base.IsVisible(user) && GetChildren(user, true).Any(); } protected override IEnumerable GetEligibleChildrenForRecursiveChildren(User user) -- cgit v1.2.3 From 038b11702ec1cdafd49e31deaaf219f8b4d1313e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 12 Oct 2016 14:23:09 -0400 Subject: update playlist content --- MediaBrowser.Api/UserLibrary/ItemsService.cs | 14 +++++++++-- MediaBrowser.Controller/LiveTv/LiveTvChannel.cs | 5 ++-- MediaBrowser.Model/Dto/BaseItemDto.cs | 2 -- MediaBrowser.Model/LiveTv/LiveTvOptions.cs | 1 + .../LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs | 27 ++++------------------ .../Playlists/ManualPlaylistsFolder.cs | 8 +++++++ 6 files changed, 29 insertions(+), 28 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Playlists') diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 6a9b5631b9..04395da3cd 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -134,18 +134,28 @@ namespace MediaBrowser.Api.UserLibrary private async Task> GetQueryResult(GetItems request, DtoOptions dtoOptions, User user) { var item = string.IsNullOrEmpty(request.ParentId) ? - user == null ? _libraryManager.RootFolder : user.RootFolder : + null : _libraryManager.GetItemById(request.ParentId); if (string.Equals(request.IncludeItemTypes, "Playlist", StringComparison.OrdinalIgnoreCase)) { - //item = user == null ? _libraryManager.RootFolder : user.RootFolder; + if (item == null || user != null) + { + item = _libraryManager.RootFolder.Children.OfType().FirstOrDefault(i => string.Equals(i.GetType().Name, "PlaylistsFolder", StringComparison.OrdinalIgnoreCase)); + } } else if (string.Equals(request.IncludeItemTypes, "BoxSet", StringComparison.OrdinalIgnoreCase)) { item = user == null ? _libraryManager.RootFolder : user.RootFolder; } + if (item == null) + { + item = string.IsNullOrEmpty(request.ParentId) ? + user == null ? _libraryManager.RootFolder : user.RootFolder : + _libraryManager.GetItemById(request.ParentId); + } + // Default list type = children var folder = item as Folder; diff --git a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs index 69a1c24ea3..610d4b6f8a 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs @@ -5,6 +5,7 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.MediaInfo; using System.Collections.Generic; +using System.Globalization; using System.Runtime.Serialization; namespace MediaBrowser.Controller.LiveTv @@ -81,10 +82,10 @@ namespace MediaBrowser.Controller.LiveTv if (!string.IsNullOrEmpty(Number)) { - double.TryParse(Number, out number); + double.TryParse(Number, NumberStyles.Any, CultureInfo.InvariantCulture, out number); } - return number.ToString("000-") + (Name ?? string.Empty); + return number.ToString("00000-") + (Name ?? string.Empty); } [IgnoreDataMember] diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index 33aa8bb1c8..9267222adf 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -789,8 +789,6 @@ namespace MediaBrowser.Model.Dto /// The home page URL. public string HomePageUrl { get; set; } - public string PlaceOfBirth { get; set; } - /// /// Gets or sets the budget. /// diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs index a6240afe6d..ee7dd8b985 100644 --- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs +++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs @@ -60,6 +60,7 @@ namespace MediaBrowser.Model.LiveTv public TunerHostInfo() { IsEnabled = true; + AllowHWTranscoding = true; } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs index c4922eec57..97d52836d3 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs @@ -387,8 +387,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun } id += "_" + url.GetMD5().ToString("N"); - var enableLocalBuffer = EnableLocalBuffer(); - var mediaSource = new MediaSourceInfo { Path = url, @@ -422,8 +420,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun BufferMs = 0, Container = "ts", Id = id, - SupportsDirectPlay = !enableLocalBuffer, - SupportsDirectStream = enableLocalBuffer, + SupportsDirectPlay = false, + SupportsDirectStream = true, SupportsTranscoding = true, IsInfiniteStream = true }; @@ -490,11 +488,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun return channelId.StartsWith(ChannelIdPrefix, StringComparison.OrdinalIgnoreCase); } - private bool EnableLocalBuffer() - { - return true; - } - protected override async Task GetChannelStream(TunerHostInfo info, string channelId, string streamId, CancellationToken cancellationToken) { var profile = streamId.Split('_')[0]; @@ -509,19 +502,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun var mediaSource = await GetMediaSource(info, hdhrId, profile).ConfigureAwait(false); - if (EnableLocalBuffer()) - { - var liveStream = new HdHomerunLiveStream(mediaSource, streamId, _fileSystem, _httpClient, Logger, Config.ApplicationPaths, _appHost); - liveStream.EnableStreamSharing = true; - return liveStream; - } - else - { - var liveStream = new LiveStream(mediaSource); - liveStream.EnableStreamSharing = true; - //liveStream.EnableStreamSharing = false; - return liveStream; - } + var liveStream = new HdHomerunLiveStream(mediaSource, streamId, _fileSystem, _httpClient, Logger, Config.ApplicationPaths, _appHost); + liveStream.EnableStreamSharing = true; + return liveStream; } public async Task Validate(TunerHostInfo info) diff --git a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs index d9c36cd3b0..63dfe20b2f 100644 --- a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs +++ b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.IO; using System.Linq; using CommonIO; +using MediaBrowser.Model.Querying; +using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.Playlists { @@ -37,6 +39,12 @@ namespace MediaBrowser.Server.Implementations.Playlists { get { return Model.Entities.CollectionType.Playlists; } } + + protected override Task> GetItemsInternal(InternalItemsQuery query) + { + query.Recursive = false; + return base.GetItemsInternal(query); + } } public class PlaylistsDynamicFolder : IVirtualFolderCreator -- cgit v1.2.3