Pārlūkot izejas kodu

more task reduction

Luke Pulverenti 12 gadi atpakaļ
vecāks
revīzija
0fc6158500

+ 0 - 1
MediaBrowser.Controller/Providers/BaseItemXmlParser.cs

@@ -54,7 +54,6 @@ namespace MediaBrowser.Controller.Providers
                 CheckCharacters = false,
                 IgnoreProcessingInstructions = true,
                 IgnoreComments = true,
-                IgnoreWhitespace = true,
                 ValidationType = ValidationType.None
             };
 

+ 8 - 2
MediaBrowser.Controller/Providers/BaseMetadataProvider.cs

@@ -31,6 +31,12 @@ namespace MediaBrowser.Controller.Providers
         /// </summary>
         protected readonly Guid Id;
 
+        /// <summary>
+        /// The true task result
+        /// </summary>
+        protected static readonly Task<bool> TrueTaskResult = Task.FromResult(true);
+        protected static readonly Task<bool> FalseTaskResult = Task.FromResult(false);
+
         protected static readonly SemaphoreSlim XmlParsingResourcePool = new SemaphoreSlim(5, 5);
         
         /// <summary>
@@ -207,7 +213,7 @@ namespace MediaBrowser.Controller.Providers
                 return true;
             }
 
-            if (RefreshOnVersionChange && !string.Equals(ProviderVersion, providerInfo.ProviderVersion))
+            if (RefreshOnVersionChange && !String.Equals(ProviderVersion, providerInfo.ProviderVersion))
             {
                 return true;
             }
@@ -223,7 +229,7 @@ namespace MediaBrowser.Controller.Providers
         /// <returns><c>true</c> if [has file system stamp changed] [the specified item]; otherwise, <c>false</c>.</returns>
         protected bool HasFileSystemStampChanged(BaseItem item, BaseProviderInfo providerInfo)
         {
-            return !string.Equals(GetCurrentFileSystemStamp(item), providerInfo.FileSystemStamp);
+            return !String.Equals(GetCurrentFileSystemStamp(item), providerInfo.FileSystemStamp);
         }
 
         /// <summary>

+ 0 - 5
MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs

@@ -52,11 +52,6 @@ namespace MediaBrowser.Controller.Providers
             }
         }
 
-        /// <summary>
-        /// The true task result
-        /// </summary>
-        protected static readonly Task<bool> TrueTaskResult = Task.FromResult(true);
-
         /// <summary>
         /// Fetches metadata and returns true or false indicating if any work that requires persistence was done
         /// </summary>

+ 12 - 16
MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs

@@ -81,26 +81,22 @@ namespace MediaBrowser.Controller.Providers.Movies
         /// <returns>Task{System.Boolean}.</returns>
         public override Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
         {
-            // Since we don't have anything truly async, and since deserializing can be expensive, create a task to force parallelism
-            return Task.Run(() =>
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, LOCAL_META_FILE_NAME));
+            if (entry.HasValue)
             {
-                cancellationToken.ThrowIfCancellationRequested();
-                
-                var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, LOCAL_META_FILE_NAME));
-                if (entry.HasValue)
-                {
-                    // read in our saved meta and pass to processing function
-                    var movieData = JsonSerializer.DeserializeFromFile<CompleteMovieData>(entry.Value.Path);
+                // read in our saved meta and pass to processing function
+                var movieData = JsonSerializer.DeserializeFromFile<CompleteMovieData>(entry.Value.Path);
 
-                    cancellationToken.ThrowIfCancellationRequested();
+                cancellationToken.ThrowIfCancellationRequested();
 
-                    ProcessMainInfo(item, movieData);
+                ProcessMainInfo(item, movieData);
 
-                    SetLastRefreshed(item, DateTime.UtcNow);
-                    return true;
-                }
-                return false;
-            });
+                SetLastRefreshed(item, DateTime.UtcNow);
+                return TrueTaskResult;
+            }
+            return FalseTaskResult;
         }
     }
 }

+ 14 - 18
MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs

@@ -92,28 +92,24 @@ namespace MediaBrowser.Controller.Providers.Movies
         /// <returns>Task{System.Boolean}.</returns>
         public override Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
         {
-            return Task.Run(() =>
-            {
-                cancellationToken.ThrowIfCancellationRequested();
+            cancellationToken.ThrowIfCancellationRequested();
 
-                try
-                {
-                    var personInfo = JsonSerializer.DeserializeFromFile<PersonResult>(Path.Combine(item.MetaLocation, MetaFileName));
+            try
+            {
+                var personInfo = JsonSerializer.DeserializeFromFile<PersonResult>(Path.Combine(item.MetaLocation, MetaFileName));
 
-                    cancellationToken.ThrowIfCancellationRequested();
-                
-                    ProcessInfo((Person)item, personInfo);
+                cancellationToken.ThrowIfCancellationRequested();
 
-                    SetLastRefreshed(item, DateTime.UtcNow);
-                    return true;
-                }
-                catch (FileNotFoundException)
-                {
-                    // This is okay - just means we force refreshed and there isn't a json file
-                    return false;
-                }
+                ProcessInfo((Person)item, personInfo);
 
-            });
+                SetLastRefreshed(item, DateTime.UtcNow);
+                return TrueTaskResult;
+            }
+            catch (FileNotFoundException)
+            {
+                // This is okay - just means we force refreshed and there isn't a json file
+                return FalseTaskResult;
+            }
         }
     }
 }

+ 13 - 16
MediaBrowser.Controller/Providers/Music/MusicArtistProviderFromJson.cs

@@ -32,27 +32,24 @@ namespace MediaBrowser.Controller.Providers.Music
 
         public override Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
         {
-            return Task.Run(() =>
-            {
-                cancellationToken.ThrowIfCancellationRequested();
+            cancellationToken.ThrowIfCancellationRequested();
 
-                var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, LastfmHelper.LocalArtistMetaFileName));
-                if (entry.HasValue)
-                {
-                    // read in our saved meta and pass to processing function
-                    var data = JsonSerializer.DeserializeFromFile<LastfmArtist>(entry.Value.Path);
+            var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, LastfmHelper.LocalArtistMetaFileName));
+            if (entry.HasValue)
+            {
+                // read in our saved meta and pass to processing function
+                var data = JsonSerializer.DeserializeFromFile<LastfmArtist>(entry.Value.Path);
 
-                    cancellationToken.ThrowIfCancellationRequested();
+                cancellationToken.ThrowIfCancellationRequested();
 
-                    LastfmHelper.ProcessArtistData(item, data);
+                LastfmHelper.ProcessArtistData(item, data);
 
-                    item.SetProviderId(MetadataProviders.Musicbrainz, data.mbid);
+                item.SetProviderId(MetadataProviders.Musicbrainz, data.mbid);
 
-                    SetLastRefreshed(item, DateTime.UtcNow);
-                    return true;
-                }
-                return false;
-            });
+                SetLastRefreshed(item, DateTime.UtcNow);
+                return TrueTaskResult;
+            }
+            return FalseTaskResult;
         }
 
         public override MetadataProviderPriority Priority

+ 31 - 23
MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs

@@ -3,6 +3,7 @@ using MediaBrowser.Common.MediaInfo;
 using MediaBrowser.Common.ScheduledTasks;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Providers.MediaInfo;
 using MediaBrowser.Model.Entities;
@@ -95,33 +96,40 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
         /// <returns>Task.</returns>
         public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
         {
-            var items = _libraryManager.RootFolder.RecursiveChildren
-                .OfType<Video>()
-                .Where(i =>
-                    {
-                        if (!string.IsNullOrEmpty(i.PrimaryImagePath))
-                        {
-                            return false;
-                        }
+            var allItems = _libraryManager.RootFolder.RecursiveChildren.ToList();
 
-                        if (i.LocationType != LocationType.FileSystem)
-                        {
-                            return false;
-                        }
+            var localTrailers = allItems.SelectMany(i => i.LocalTrailers);
 
-                        if (i.VideoType == VideoType.HdDvd)
-                        {
-                            return false;
-                        }
+            var videos = allItems.OfType<Video>().ToList();
 
-                        if (i.VideoType == VideoType.Iso && !i.IsoType.HasValue)
-                        {
-                            return false;
-                        }
+            var items = videos;
+            items.AddRange(localTrailers);
+            items.AddRange(videos.OfType<Movie>().SelectMany(i => i.SpecialFeatures).ToList());
+
+            items = items.Where(i =>
+            {
+                if (!string.IsNullOrEmpty(i.PrimaryImagePath))
+                {
+                    return false;
+                }
+
+                if (i.LocationType != LocationType.FileSystem)
+                {
+                    return false;
+                }
+
+                if (i.VideoType == VideoType.HdDvd)
+                {
+                    return false;
+                }
+
+                if (i.VideoType == VideoType.Iso && !i.IsoType.HasValue)
+                {
+                    return false;
+                }
 
-                        return i.MediaStreams != null && i.MediaStreams.Any(m => m.Type == MediaStreamType.Video);
-                    })
-                .ToList();
+                return i.MediaStreams != null && i.MediaStreams.Any(m => m.Type == MediaStreamType.Video);
+            }).ToList();
 
             progress.Report(0);
 

+ 1 - 1
MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs

@@ -86,7 +86,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
         {
             var dbFile = Path.Combine(_appPaths.DataPath, "displaypreferences.db");
 
-            await ConnectToDB(dbFile).ConfigureAwait(false);
+            await ConnectToDb(dbFile).ConfigureAwait(false);
 
             string[] queries = {
 

+ 1 - 1
MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs

@@ -82,7 +82,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
         {
             var dbFile = Path.Combine(_appPaths.DataPath, "library.db");
 
-            await ConnectToDB(dbFile).ConfigureAwait(false);
+            await ConnectToDb(dbFile).ConfigureAwait(false);
 
             string[] queries = {
 

+ 1 - 1
MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs

@@ -76,7 +76,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
         /// <param name="dbPath">The db path.</param>
         /// <returns>Task{System.Boolean}.</returns>
         /// <exception cref="System.ArgumentNullException">dbPath</exception>
-        protected async Task ConnectToDB(string dbPath)
+        protected async Task ConnectToDb(string dbPath)
         {
             if (string.IsNullOrEmpty(dbPath))
             {

+ 1 - 1
MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs

@@ -86,7 +86,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
         {
             var dbFile = Path.Combine(_appPaths.DataPath, "userdata.db");
 
-            await ConnectToDB(dbFile).ConfigureAwait(false);
+            await ConnectToDb(dbFile).ConfigureAwait(false);
 
             string[] queries = {
 

+ 1 - 1
MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs

@@ -88,7 +88,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
         {
             var dbFile = Path.Combine(_appPaths.DataPath, "users.db");
 
-            await ConnectToDB(dbFile).ConfigureAwait(false);
+            await ConnectToDb(dbFile).ConfigureAwait(false);
 
             string[] queries = {