diff options
5 files changed, 34 insertions, 10 deletions
diff --git a/MediaBrowser.Common/Extensions/BaseExtensions.cs b/MediaBrowser.Common/Extensions/BaseExtensions.cs index 4e2a475d9..0b63d7b31 100644 --- a/MediaBrowser.Common/Extensions/BaseExtensions.cs +++ b/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> diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 3eda96d3d..a27f1fdd0 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/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) diff --git a/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs index 9c991a496..38030cffa 100644 --- a/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs +++ b/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; } diff --git a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs index 8b98a6944..1605db5a7 100644 --- a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs +++ b/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)) diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 94b79f0a1..d62baddec 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/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); } } |
