Explorar o código

Add AutoCollection option

it can determine whether auto create/add movies to collection

Signed-off-by: Petrus.Z <silencly07@gmail.com>
Petrus.Z %!s(int64=3) %!d(string=hai) anos
pai
achega
0a0ddb0eaf

+ 26 - 8
Emby.Server.Implementations/Library/Validators/CollectionPostScanTask.cs

@@ -10,6 +10,7 @@ using MediaBrowser.Controller.Library;
 using MediaBrowser.Model.Querying;
 using Jellyfin.Data.Enums;
 using Microsoft.Extensions.Logging;
+using System.Diagnostics;
 
 namespace Emby.Server.Implementations.Library.Validators
 {
@@ -101,18 +102,23 @@ namespace Emby.Server.Implementations.Library.Validators
                         // won't automatically create collection if only one movie in it
                         if (movieList.Count >= 2)
                         {
-                            boxSet = await _collectionManager.CreateCollectionAsync(new CollectionCreationOptions
-                            {
-                                Name = collectionName,
-                                IsLocked = true
-                            });
+                            var movieIds = FliterMoviesByOption(movieList);
+                            if (movieIds.Count >= 2) {
+                                // at least 2 movies have AutoCollection option enable
+                                boxSet = await _collectionManager.CreateCollectionAsync(new CollectionCreationOptions
+                                {
+                                    Name = collectionName,
+                                    IsLocked = true
+                                });
 
-                            await _collectionManager.AddToCollectionAsync(boxSet.Id, movieList.Select(m => m.Id));
+                                await _collectionManager.AddToCollectionAsync(boxSet.Id, movieIds);
+                            }
                         }
                     }
                     else
                     {
-                        await _collectionManager.AddToCollectionAsync(boxSet.Id, movieList.Select(m => m.Id));
+                        var movieIds = FliterMoviesByOption(movieList);
+                        await _collectionManager.AddToCollectionAsync(boxSet.Id, movieIds);
                     }
 
                     numComplete++;
@@ -130,5 +136,17 @@ namespace Emby.Server.Implementations.Library.Validators
 
             progress.Report(100);
         }
+
+        private List<Guid> FliterMoviesByOption(List<Movie> movieList) {
+            List<Guid> movieIds = new List<Guid>();
+            foreach (var movie in movieList)
+            {
+                if (_libraryManager.GetLibraryOptions(movie).AutoCollection)
+                {
+                    movieIds.Add(movie.Id);
+                }
+            }
+            return movieIds;
+        }
     }
-}
+}

+ 2 - 0
MediaBrowser.Model/Configuration/LibraryOptions.cs

@@ -16,6 +16,7 @@ namespace MediaBrowser.Model.Configuration
             SkipSubtitlesIfAudioTrackMatches = true;
             RequirePerfectSubtitleMatch = true;
 
+            AutoCollection = true;
             EnablePhotos = true;
             SaveSubtitlesWithMedia = true;
             EnableRealtimeMonitor = true;
@@ -80,6 +81,7 @@ namespace MediaBrowser.Model.Configuration
         public bool RequirePerfectSubtitleMatch { get; set; }
 
         public bool SaveSubtitlesWithMedia { get; set; }
+        public bool AutoCollection { get; set; }
 
         public TypeOptions[] TypeOptions { get; set; }