ソースを参照

update keep up to deletion

Luke Pulverenti 8 年 前
コミット
eedf62d80d

+ 1 - 1
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))
                 if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase))
                 {
                 {
-                    return FindMovie<MusicVideo>(args.Path, args.Parent, files, args.DirectoryService, collectionType, false);
+                    return FindMovie<MusicVideo>(args.Path, args.Parent, files, args.DirectoryService, collectionType, true);
                 }
                 }
 
 
                 if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase))
                 if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase))

+ 46 - 3
Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs

@@ -39,6 +39,7 @@ using MediaBrowser.Model.FileOrganization;
 using MediaBrowser.Model.System;
 using MediaBrowser.Model.System;
 using MediaBrowser.Model.Threading;
 using MediaBrowser.Model.Threading;
 using MediaBrowser.Model.Extensions;
 using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.Querying;
 
 
 namespace Emby.Server.Implementations.LiveTv.EmbyTV
 namespace Emby.Server.Implementations.LiveTv.EmbyTV
 {
 {
@@ -1512,7 +1513,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
                     _timerProvider.AddOrUpdate(timer, false);
                     _timerProvider.AddOrUpdate(timer, false);
 
 
                     SaveRecordingMetadata(timer, recordPath, seriesPath);
                     SaveRecordingMetadata(timer, recordPath, seriesPath);
-                    EnforceKeepUpTo(timer);
+                    EnforceKeepUpTo(timer, seriesPath);
                 };
                 };
 
 
                 await recorder.Record(mediaStreamInfo, recordPath, duration, onStarted, cancellationToken)
                 await recorder.Record(mediaStreamInfo, recordPath, duration, onStarted, cancellationToken)
@@ -1583,12 +1584,16 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
             }, _logger);
             }, _logger);
         }
         }
 
 
-        private async void EnforceKeepUpTo(TimerInfo timer)
+        private async void EnforceKeepUpTo(TimerInfo timer, string seriesPath)
         {
         {
             if (string.IsNullOrWhiteSpace(timer.SeriesTimerId))
             if (string.IsNullOrWhiteSpace(timer.SeriesTimerId))
             {
             {
                 return;
                 return;
             }
             }
+            if (string.IsNullOrWhiteSpace(seriesPath))
+            {
+                return;
+            }
 
 
             var seriesTimerId = timer.SeriesTimerId;
             var seriesTimerId = timer.SeriesTimerId;
             var seriesTimer = _seriesTimerProvider.GetAll().FirstOrDefault(i => string.Equals(i.Id, seriesTimerId, StringComparison.OrdinalIgnoreCase));
             var seriesTimer = _seriesTimerProvider.GetAll().FirstOrDefault(i => string.Equals(i.Id, seriesTimerId, StringComparison.OrdinalIgnoreCase));
@@ -1621,6 +1626,43 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
                     .ToList();
                     .ToList();
 
 
                 await DeleteLibraryItemsForTimers(timersToDelete).ConfigureAwait(false);
                 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
             finally
             {
             {
@@ -1658,7 +1700,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
                 await _libraryManager.DeleteItem(libraryItem, new DeleteOptions
                 await _libraryManager.DeleteItem(libraryItem, new DeleteOptions
                 {
                 {
                     DeleteFileLocation = true
                     DeleteFileLocation = true
-                });
+
+                }).ConfigureAwait(false);
             }
             }
             else
             else
             {
             {

+ 1 - 1
Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs

@@ -84,7 +84,7 @@ namespace Emby.Server.Implementations.LiveTv
 
 
                     if (width >= 1900)
                     if (width >= 1900)
                     {
                     {
-                        videoStream.BitRate = 8000000;
+                        videoStream.BitRate = 15000000;
                     }
                     }
 
 
                     else if (width >= 1260)
                     else if (width >= 1260)

+ 1 - 1
Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs

@@ -185,7 +185,7 @@ namespace Emby.Server.Implementations.LiveTv
 
 
                     if (width >= 1900)
                     if (width >= 1900)
                     {
                     {
-                        videoStream.BitRate = 8000000;
+                        videoStream.BitRate = 15000000;
                     }
                     }
 
 
                     else if (width >= 1260)
                     else if (width >= 1260)

+ 1 - 1
MediaBrowser.Controller/Entities/MusicVideo.cs

@@ -29,7 +29,7 @@ namespace MediaBrowser.Controller.Entities
         {
         {
             get
             get
             {
             {
-                return true;
+                return false;
             }
             }
         }
         }