diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index b791311f9f..3550a83b9b 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -219,7 +219,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase)) { - return FindMovie(args.Path, args.Parent, files, args.DirectoryService, collectionType, false); + return FindMovie(args.Path, args.Parent, files, args.DirectoryService, collectionType, true); } if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase)) diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs index 0ea1b38b14..666c1fdcd4 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs @@ -39,6 +39,7 @@ using MediaBrowser.Model.FileOrganization; using MediaBrowser.Model.System; using MediaBrowser.Model.Threading; using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.Querying; namespace Emby.Server.Implementations.LiveTv.EmbyTV { @@ -1512,7 +1513,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV _timerProvider.AddOrUpdate(timer, false); SaveRecordingMetadata(timer, recordPath, seriesPath); - EnforceKeepUpTo(timer); + EnforceKeepUpTo(timer, seriesPath); }; await recorder.Record(mediaStreamInfo, recordPath, duration, onStarted, cancellationToken) @@ -1583,12 +1584,16 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV }, _logger); } - private async void EnforceKeepUpTo(TimerInfo timer) + private async void EnforceKeepUpTo(TimerInfo timer, string seriesPath) { if (string.IsNullOrWhiteSpace(timer.SeriesTimerId)) { return; } + if (string.IsNullOrWhiteSpace(seriesPath)) + { + return; + } var seriesTimerId = timer.SeriesTimerId; var seriesTimer = _seriesTimerProvider.GetAll().FirstOrDefault(i => string.Equals(i.Id, seriesTimerId, StringComparison.OrdinalIgnoreCase)); @@ -1621,6 +1626,43 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV .ToList(); await DeleteLibraryItemsForTimers(timersToDelete).ConfigureAwait(false); + + var librarySeries = _libraryManager.FindByPath(seriesPath, true) as Folder; + + if (librarySeries == null) + { + return; + } + + var episodesToDelete = (await librarySeries.GetItems(new InternalItemsQuery + { + SortBy = new[] { ItemSortBy.DateCreated }, + SortOrder = SortOrder.Descending, + IsVirtualItem = false, + IsFolder = false, + Recursive = true + + }).ConfigureAwait(false)) + .Items + .Where(i => i.LocationType == LocationType.FileSystem && _fileSystem.FileExists(i.Path)) + .Skip(seriesTimer.KeepUpTo - 1) + .ToList(); + + foreach (var item in episodesToDelete) + { + try + { + await _libraryManager.DeleteItem(item, new DeleteOptions + { + DeleteFileLocation = true + + }).ConfigureAwait(false); + } + catch (Exception ex) + { + _logger.ErrorException("Error deleting item", ex); + } + } } finally { @@ -1658,7 +1700,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV await _libraryManager.DeleteItem(libraryItem, new DeleteOptions { DeleteFileLocation = true - }); + + }).ConfigureAwait(false); } else { diff --git a/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs b/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs index 3906df0005..053af4fc6f 100644 --- a/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs +++ b/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs @@ -84,7 +84,7 @@ namespace Emby.Server.Implementations.LiveTv if (width >= 1900) { - videoStream.BitRate = 8000000; + videoStream.BitRate = 15000000; } else if (width >= 1260) diff --git a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs index a9c449f837..93996f5da5 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs @@ -185,7 +185,7 @@ namespace Emby.Server.Implementations.LiveTv if (width >= 1900) { - videoStream.BitRate = 8000000; + videoStream.BitRate = 15000000; } else if (width >= 1260) diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs index c781ef85be..7344cb8e47 100644 --- a/MediaBrowser.Controller/Entities/MusicVideo.cs +++ b/MediaBrowser.Controller/Entities/MusicVideo.cs @@ -29,7 +29,7 @@ namespace MediaBrowser.Controller.Entities { get { - return true; + return false; } }