فهرست منبع

factor mixed folder value into item id

Luke Pulverenti 12 سال پیش
والد
کامیت
1df5839eb0

+ 26 - 7
MediaBrowser.Common/Extensions/BaseExtensions.cs

@@ -40,17 +40,36 @@ namespace MediaBrowser.Common.Extensions
         /// Gets the MB id.
         /// </summary>
         /// <param name="str">The STR.</param>
-        /// <param name="aType">A type.</param>
+        /// <param name="type">The type.</param>
         /// <returns>Guid.</returns>
-        /// <exception cref="System.ArgumentNullException">aType</exception>
-        public static Guid GetMBId(this string str, Type aType)
+        public static Guid GetMBId(this string str, Type type)
         {
-            if (aType == null)
+            return str.GetMBId(type, false);
+        }
+
+        /// <summary>
+        /// Gets the MB id.
+        /// </summary>
+        /// <param name="str">The STR.</param>
+        /// <param name="type">The type.</param>
+        /// <param name="isInMixedFolder">if set to <c>true</c> [is in mixed folder].</param>
+        /// <returns>Guid.</returns>
+        /// <exception cref="System.ArgumentNullException">type</exception>
+        public static Guid GetMBId(this string str, Type type, bool isInMixedFolder)
+        {
+            if (type == null)
             {
-                throw new ArgumentNullException("aType");
+                throw new ArgumentNullException("type");
             }
-            
-            return (aType.FullName + str.ToLower()).GetMD5();
+
+            var key = type.FullName + str.ToLower();
+
+            if (isInMixedFolder)
+            {
+                key += "InMixedFolder";
+            }
+
+            return key.GetMD5();
         }
 
         /// <summary>

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

@@ -101,7 +101,7 @@ namespace MediaBrowser.Controller.Entities
 
             if (item.Id == Guid.Empty)
             {
-                item.Id = item.Path.GetMBId(item.GetType());
+                item.Id = item.Path.GetMBId(item.GetType(), item.IsInMixedFolder);
             }
 
             if (item.DateCreated == DateTime.MinValue)

+ 5 - 1
MediaBrowser.Providers/ImageFromMediaLocationProvider.cs

@@ -46,7 +46,7 @@ namespace MediaBrowser.Providers
                     return true;
                 }
 
-                return item.IsInMixedFolder && !(item is Episode);
+                return item.IsInMixedFolder && item.Parent != null && !(item is Episode);
             }
             return false;
         }
@@ -118,6 +118,10 @@ namespace MediaBrowser.Providers
         {
             if (item.IsInMixedFolder)
             {
+                if (item.Parent == null)
+                {
+                    return item.ResolveArgs;
+                }
                 return item.Parent.ResolveArgs;
             }
 

+ 1 - 1
MediaBrowser.Server.Implementations/Library/ResolverHelper.cs

@@ -34,7 +34,7 @@ namespace MediaBrowser.Server.Implementations.Library
                 item.Parent = args.Parent;
             }
 
-            item.Id = item.Path.GetMBId(item.GetType());
+            item.Id = item.Path.GetMBId(item.GetType(), item.IsInMixedFolder);
 
             // If the resolver didn't specify this
             if (string.IsNullOrEmpty(item.DisplayMediaType))

+ 1 - 0
MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs

@@ -244,6 +244,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
 
                 if (item != null)
                 {
+                    item.IsInMixedFolder = false;
                     movies.Add(item);
                 }
             }