Jelajahi Sumber

update indexedDb

Luke Pulverenti 10 tahun lalu
induk
melakukan
5492e34c6d

+ 1 - 0
Emby.Drawing/Emby.Drawing.csproj

@@ -57,6 +57,7 @@
     <Compile Include="GDI\UnplayedCountIndicator.cs" />
     <Compile Include="IImageEncoder.cs" />
     <Compile Include="Common\ImageHeader.cs" />
+    <Compile Include="ImageHelpers.cs" />
     <Compile Include="ImageMagick\ImageMagickEncoder.cs" />
     <Compile Include="ImageMagick\StripCollageBuilder.cs" />
     <Compile Include="ImageProcessor.cs" />

+ 6 - 8
Emby.Drawing/GDI/DynamicImageHelpers.cs

@@ -1,11 +1,9 @@
-using Emby.Drawing.ImageMagick;
-using MediaBrowser.Common.IO;
+using MediaBrowser.Common.IO;
 using System.Collections.Generic;
 using System.Drawing;
 using System.Drawing.Drawing2D;
 using System.Drawing.Imaging;
 using System.IO;
-using System.Linq;
 
 namespace Emby.Drawing.GDI
 {
@@ -18,10 +16,10 @@ namespace Emby.Drawing.GDI
             int height)
         {
             const int numStrips = 4;
-            files = StripCollageBuilder.ProjectPaths(files, numStrips).ToList();
-            
+            files = ImageHelpers.ProjectPaths(files, numStrips);
+
             const int rows = 1;
-             int cols = numStrips;
+            int cols = numStrips;
 
             int cellWidth = 2 * (width / 3);
             int cellHeight = height;
@@ -76,8 +74,8 @@ namespace Emby.Drawing.GDI
             int width,
             int height)
         {
-            files = StripCollageBuilder.ProjectPaths(files, 4).ToList();
-            
+            files = ImageHelpers.ProjectPaths(files, 4);
+
             const int rows = 2;
             const int cols = 2;
 

+ 43 - 0
Emby.Drawing/ImageHelpers.cs

@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Emby.Drawing
+{
+    internal static class ImageHelpers
+    {
+        internal static List<string> ProjectPaths(List<string> paths, int count)
+        {
+            if (count <= 0)
+            {
+                throw new ArgumentOutOfRangeException("count");
+            }
+            if (paths.Count == 0)
+            {
+                throw new ArgumentOutOfRangeException("paths");
+            }
+
+            var list = new List<string>();
+
+            AddToList(list, paths, count);
+
+            return list.Take(count).ToList();
+        }
+
+        private static void AddToList(List<string> list, List<string> paths, int count)
+        {
+            while (list.Count < count)
+            {
+                foreach (var path in paths)
+                {
+                    list.Add(path);
+
+                    if (list.Count >= count)
+                    {
+                        return;
+                    }
+                }
+            }
+        }
+    }
+}

+ 5 - 4
Emby.Drawing/ImageMagick/ImageMagickEncoder.cs

@@ -1,4 +1,5 @@
-using ImageMagickSharp;
+using System.Linq;
+using ImageMagickSharp;
 using MediaBrowser.Common.Configuration;
 using MediaBrowser.Controller.Drawing;
 using MediaBrowser.Model.Drawing;
@@ -195,15 +196,15 @@ namespace Emby.Drawing.ImageMagick
 
             if (ratio >= 1.4)
             {
-                new StripCollageBuilder(_appPaths).BuildThumbCollage(options.InputPaths, options.OutputPath, options.Width, options.Height, options.Text);
+                new StripCollageBuilder(_appPaths).BuildThumbCollage(options.InputPaths.ToList(), options.OutputPath, options.Width, options.Height, options.Text);
             }
             else if (ratio >= .9)
             {
-                new StripCollageBuilder(_appPaths).BuildSquareCollage(options.InputPaths, options.OutputPath, options.Width, options.Height, options.Text);
+                new StripCollageBuilder(_appPaths).BuildSquareCollage(options.InputPaths.ToList(), options.OutputPath, options.Width, options.Height, options.Text);
             }
             else
             {
-                new StripCollageBuilder(_appPaths).BuildPosterCollage(options.InputPaths, options.OutputPath, options.Width, options.Height, options.Text);
+                new StripCollageBuilder(_appPaths).BuildPosterCollage(options.InputPaths.ToList(), options.OutputPath, options.Width, options.Height, options.Text);
             }
         }
 

+ 21 - 43
Emby.Drawing/ImageMagick/StripCollageBuilder.cs

@@ -2,7 +2,6 @@
 using MediaBrowser.Common.Configuration;
 using System;
 using System.Collections.Generic;
-using System.Linq;
 
 namespace Emby.Drawing.ImageMagick
 {
@@ -15,7 +14,7 @@ namespace Emby.Drawing.ImageMagick
             _appPaths = appPaths;
         }
 
-        public void BuildPosterCollage(IEnumerable<string> paths, string outputPath, int width, int height, string text)
+        public void BuildPosterCollage(List<string> paths, string outputPath, int width, int height, string text)
         {
             if (!string.IsNullOrWhiteSpace(text))
             {
@@ -33,7 +32,7 @@ namespace Emby.Drawing.ImageMagick
             }
         }
 
-        public void BuildSquareCollage(IEnumerable<string> paths, string outputPath, int width, int height, string text)
+        public void BuildSquareCollage(List<string> paths, string outputPath, int width, int height, string text)
         {
             if (!string.IsNullOrWhiteSpace(text))
             {
@@ -51,7 +50,7 @@ namespace Emby.Drawing.ImageMagick
             }
         }
 
-        public void BuildThumbCollage(IEnumerable<string> paths, string outputPath, int width, int height, string text)
+        public void BuildThumbCollage(List<string> paths, string outputPath, int width, int height, string text)
         {
             if (!string.IsNullOrWhiteSpace(text))
             {
@@ -69,31 +68,10 @@ namespace Emby.Drawing.ImageMagick
             }
         }
 
-        internal static string[] ProjectPaths(IEnumerable<string> paths, int count)
+        private MagickWand BuildThumbCollageWandWithText(List<string> paths, string text, int width, int height)
         {
-            var clone = paths.ToList();
-            var list = new List<string>();
-
-            while (list.Count < count)
-            {
-                foreach (var path in clone)
-                {
-                    list.Add(path);
-
-                    if (list.Count >= count)
-                    {
-                        break;
-                    }
-                }
-            }
-
-            return list.Take(count).ToArray();
-        }
-
-        private MagickWand BuildThumbCollageWandWithText(IEnumerable<string> paths, string text, int width, int height)
-        {
-            var inputPaths = ProjectPaths(paths, 8);
-            using (var wandImages = new MagickWand(inputPaths))
+            var inputPaths = ImageHelpers.ProjectPaths(paths, 8);
+            using (var wandImages = new MagickWand(inputPaths.ToArray()))
             {
                 var wand = new MagickWand(width, height);
                 wand.OpenImage("gradient:#111111-#111111");
@@ -165,10 +143,10 @@ namespace Emby.Drawing.ImageMagick
             }
         }
 
-        private MagickWand BuildPosterCollageWand(IEnumerable<string> paths, int width, int height)
+        private MagickWand BuildPosterCollageWand(List<string> paths, int width, int height)
         {
-            var inputPaths = ProjectPaths(paths, 4);
-            using (var wandImages = new MagickWand(inputPaths))
+            var inputPaths = ImageHelpers.ProjectPaths(paths, 4);
+            using (var wandImages = new MagickWand(inputPaths.ToArray()))
             {
                 var wand = new MagickWand(width, height);
                 wand.OpenImage("gradient:#111111-#111111");
@@ -230,10 +208,10 @@ namespace Emby.Drawing.ImageMagick
             }
         }
 
-        private MagickWand BuildPosterCollageWandWithText(IEnumerable<string> paths, string label, int width, int height)
+        private MagickWand BuildPosterCollageWandWithText(List<string> paths, string label, int width, int height)
         {
-            var inputPaths = ProjectPaths(paths, 4);
-            using (var wandImages = new MagickWand(inputPaths))
+            var inputPaths = ImageHelpers.ProjectPaths(paths, 4);
+            using (var wandImages = new MagickWand(inputPaths.ToArray()))
             {
                 var wand = new MagickWand(width, height);
                 wand.OpenImage("gradient:#111111-#111111");
@@ -305,10 +283,10 @@ namespace Emby.Drawing.ImageMagick
             }
         }
 
-        private MagickWand BuildThumbCollageWand(IEnumerable<string> paths, int width, int height)
+        private MagickWand BuildThumbCollageWand(List<string> paths, int width, int height)
         {
-            var inputPaths = ProjectPaths(paths, 8);
-            using (var wandImages = new MagickWand(inputPaths))
+            var inputPaths = ImageHelpers.ProjectPaths(paths, 8);
+            using (var wandImages = new MagickWand(inputPaths.ToArray()))
             {
                 var wand = new MagickWand(width, height);
                 wand.OpenImage("gradient:#111111-#111111");
@@ -370,10 +348,10 @@ namespace Emby.Drawing.ImageMagick
             }
         }
 
-        private MagickWand BuildSquareCollageWand(IEnumerable<string> paths, int width, int height)
+        private MagickWand BuildSquareCollageWand(List<string> paths, int width, int height)
         {
-            var inputPaths = ProjectPaths(paths, 4);
-            using (var wandImages = new MagickWand(inputPaths))
+            var inputPaths = ImageHelpers.ProjectPaths(paths, 4);
+            using (var wandImages = new MagickWand(inputPaths.ToArray()))
             {
                 var wand = new MagickWand(width, height);
                 wand.OpenImage("gradient:#111111-#111111");
@@ -435,10 +413,10 @@ namespace Emby.Drawing.ImageMagick
             }
         }
 
-        private MagickWand BuildSquareCollageWandWithText(IEnumerable<string> paths, string label, int width, int height)
+        private MagickWand BuildSquareCollageWandWithText(List<string> paths, string label, int width, int height)
         {
-            var inputPaths = ProjectPaths(paths, 4);
-            using (var wandImages = new MagickWand(inputPaths))
+            var inputPaths = ImageHelpers.ProjectPaths(paths, 4);
+            using (var wandImages = new MagickWand(inputPaths.ToArray()))
             {
                 var wand = new MagickWand(width, height);
                 wand.OpenImage("gradient:#111111-#111111");

+ 4 - 0
Emby.Drawing/ImageProcessor.cs

@@ -764,7 +764,11 @@ namespace Emby.Drawing
 
             try
             {
+                _logger.Debug("Creating image collage and saving to {0}", options.OutputPath);
+
                 _imageEncoder.CreateImageCollage(options);
+
+                _logger.Debug("Completed creation of image collage and saved to {0}", options.OutputPath);
             }
             finally
             {

+ 1 - 1
MediaBrowser.Api/ApiEntryPoint.cs

@@ -346,7 +346,7 @@ namespace MediaBrowser.Api
             // We can really reduce the timeout for apps that are using the newer api
             if (!string.IsNullOrWhiteSpace(job.PlaySessionId) && job.Type != TranscodingJobType.Progressive)
             {
-                timerDuration = 60000;
+                timerDuration = 50000;
             }
 
             job.PingTimeout = timerDuration;

+ 1 - 1
MediaBrowser.Model/Configuration/EncodingOptions.cs

@@ -17,7 +17,7 @@ namespace MediaBrowser.Model.Configuration
             DownMixAudioBoost = 2;
             EncodingQuality = EncodingQuality.Auto;
             EnableThrottling = true;
-            ThrottleThresholdSeconds = 120;
+            ThrottleThresholdSeconds = 110;
         }
     }
 }

+ 1 - 1
MediaBrowser.Providers/TV/SeriesMetadataService.cs

@@ -52,7 +52,7 @@ namespace MediaBrowser.Providers.TV
                 target.Status = source.Status;
             }
 
-            if (replaceData || target.AirDays.Count == 0)
+            if (replaceData || target.AirDays == null || target.AirDays.Count == 0)
             {
                 target.AirDays = source.AirDays;
             }

+ 3 - 0
MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs

@@ -252,6 +252,9 @@ namespace MediaBrowser.Server.Implementations.Localization
                 throw new ArgumentNullException("rating");
             }
 
+            // Fairly common for some users to have "Rated R" in their rating field
+            rating = rating.Replace("Rated ", string.Empty, StringComparison.OrdinalIgnoreCase);
+
             var ratingsDictionary = GetParentalRatingsDictionary();
 
             ParentalRating value;

+ 16 - 13
MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs

@@ -103,7 +103,7 @@ namespace MediaBrowser.Server.Implementations.Photos
             return parts.GetMD5().ToString("N");
         }
 
-        protected Task CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, bool drawText)
+        protected Task<bool> CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, bool drawText)
         {
             return CreateCollage(primaryItem, items, outputPath, 960, 540, drawText, primaryItem.Name);
         }
@@ -115,22 +115,22 @@ namespace MediaBrowser.Server.Implementations.Photos
                 .Where(i => !string.IsNullOrWhiteSpace(i));
         }
 
-        protected Task CreatePosterCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath)
+        protected Task<bool> CreatePosterCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath)
         {
             return CreateCollage(primaryItem, items, outputPath, 600, 900, true, primaryItem.Name);
         }
 
-        protected Task CreateSquareCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, bool drawText)
+        protected Task<bool> CreateSquareCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, bool drawText)
         {
             return CreateCollage(primaryItem, items, outputPath, 800, 800, drawText, primaryItem.Name);
         }
 
-        protected Task CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height, bool drawText, string text)
+        protected Task<bool> CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height, bool drawText, string text)
         {
             return CreateCollage(primaryItem, items, outputPath, width, height, drawText, text);
         }
 
-        private Task CreateCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height, bool drawText, string text)
+        private Task<bool> CreateCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height, bool drawText, string text)
         {
             Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
 
@@ -143,7 +143,13 @@ namespace MediaBrowser.Server.Implementations.Photos
                 InputPaths = GetStripCollageImagePaths(primaryItem, items).ToArray()
             };
 
-            return ImageProcessor.CreateImageCollage(options);
+            if (options.InputPaths.Length == 0)
+            {
+                return Task.FromResult(false);
+            }
+
+            ImageProcessor.CreateImageCollage(options);
+            return Task.FromResult(true);
         }
 
         public string Name
@@ -166,26 +172,23 @@ namespace MediaBrowser.Server.Implementations.Photos
 
             if (imageType == ImageType.Thumb)
             {
-                await CreateThumbCollage(item, itemsWithImages, outputPath, drawText).ConfigureAwait(false);
-                return true;
+                return await CreateThumbCollage(item, itemsWithImages, outputPath, drawText).ConfigureAwait(false);
             }
 
             if (imageType == ImageType.Primary)
             {
                 if (item is UserView)
                 {
-                    await CreateSquareCollage(item, itemsWithImages, outputPath, drawText).ConfigureAwait(false);
+                    return await CreateSquareCollage(item, itemsWithImages, outputPath, drawText).ConfigureAwait(false);
                 }
                 else if (item is PhotoAlbum || item is Playlist)
                 {
-                    await CreateSquareCollage(item, itemsWithImages, outputPath, drawText).ConfigureAwait(false);
+                    return await CreateSquareCollage(item, itemsWithImages, outputPath, drawText).ConfigureAwait(false);
                 }
                 else
                 {
-                    await CreatePosterCollage(item, itemsWithImages, outputPath).ConfigureAwait(false);
+                    return await CreatePosterCollage(item, itemsWithImages, outputPath).ConfigureAwait(false);
                 }
-
-                return true;
             }
 
             throw new ArgumentException("Unexpected image type");

+ 1 - 2
MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs

@@ -224,8 +224,7 @@ namespace MediaBrowser.Server.Implementations.UserViews
                     return false;
                 }
 
-                await CreateThumbCollage(item, itemsWithImages, outputPath, 960, 540, false, item.Name).ConfigureAwait(false);
-                return true;
+                return await CreateThumbCollage(item, itemsWithImages, outputPath, 960, 540, false, item.Name).ConfigureAwait(false);
             }
 
             return await base.CreateImage(item, itemsWithImages, outputPath, imageType, imageIndex).ConfigureAwait(false);