浏览代码

Added some resolver improvements

LukePulverenti Luke Pulverenti luke pulverenti 13 年之前
父节点
当前提交
4c9f77eead

+ 0 - 3
MediaBrowser.Controller/Kernel.cs

@@ -26,7 +26,6 @@ namespace MediaBrowser.Controller
         public string DataPath { get; private set; }
 
         public HttpServer HttpServer { get; private set; }
-        public ItemDataCache ItemDataCache { get; private set; }
         public ItemController ItemController { get; private set; }
         public UserController UserController { get; private set; }
         public PluginController PluginController { get; private set; }
@@ -61,7 +60,6 @@ namespace MediaBrowser.Controller
             UserController = new UserController(Path.Combine(DataPath, "Users"));
             PluginController = new PluginController(Path.Combine(DataPath, "Plugins"));
             DirectoryWatchers = new DirectoryWatchers();
-            ItemDataCache = new ItemDataCache();
 
             ItemController.PreBeginResolvePath += ItemController_PreBeginResolvePath;
             ItemController.BeginResolvePath += ItemController_BeginResolvePath;
@@ -86,7 +84,6 @@ namespace MediaBrowser.Controller
             // Get users from users folder
             // Load root media folder
             Parallel.Invoke(ReloadUsers, ReloadRoot);
-            var b = true;
         }
 
         private void ReloadConfiguration()

+ 0 - 32
MediaBrowser.Controller/Library/ItemDataCache.cs

@@ -1,32 +0,0 @@
-using System.Collections.Generic;
-using MediaBrowser.Model.Entities;
-
-namespace MediaBrowser.Controller.Library
-{
-    public class ItemDataCache
-    {
-        private Dictionary<string, object> Data = new Dictionary<string, object>();
-
-        public void SetValue<T>(BaseItem item, string propertyName, T value)
-        {
-            Data[GetKey(item, propertyName)] = value;
-        }
-
-        public T GetValue<T>(BaseItem item, string propertyName)
-        {
-            string key = GetKey(item, propertyName);
-
-            if (Data.ContainsKey(key))
-            {
-                return (T)Data[key];
-            }
-
-            return default(T);
-        }
-
-        private string GetKey(BaseItem item, string propertyName)
-        {
-            return item.Id.ToString() + "-" + propertyName;
-        }
-    }
-}

+ 0 - 1
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -51,7 +51,6 @@
     <Compile Include="IO\Shortcut.cs" />
     <Compile Include="Library\ItemController.cs" />
     <Compile Include="Kernel.cs" />
-    <Compile Include="Library\ItemDataCache.cs" />
     <Compile Include="Net\CollectionExtensions.cs" />
     <Compile Include="Net\HttpServer.cs" />
     <Compile Include="Net\Request.cs" />

+ 10 - 10
MediaBrowser.Controller/Xml/BaseItemXmlParser.cs

@@ -146,16 +146,16 @@ namespace MediaBrowser.Controller.Xml
 
                 case "Director":
                     {
-                        var list = (item.People ?? new Person[]{}).ToList();
-                        list.AddRange(GetSplitValues(node.InnerText, '|').Select(v => new Person() { Name = v, PersonType = PersonType.Director }));
+                        var list = (item.People ?? new PersonInfo[]{}).ToList();
+                        list.AddRange(GetSplitValues(node.InnerText, '|').Select(v => new PersonInfo() { Name = v, PersonType = PersonType.Director }));
 
                         item.People = list;
                         break;
                     }
                 case "Writer":
                     {
-                        var list = (item.People ?? new Person[] { }).ToList();
-                        list.AddRange(GetSplitValues(node.InnerText, '|').Select(v => new Person() { Name = v, PersonType = PersonType.Writer }));
+                        var list = (item.People ?? new PersonInfo[] { }).ToList();
+                        list.AddRange(GetSplitValues(node.InnerText, '|').Select(v => new PersonInfo() { Name = v, PersonType = PersonType.Writer }));
 
                         item.People = list;
                         break;
@@ -164,8 +164,8 @@ namespace MediaBrowser.Controller.Xml
                 case "Actors":
                 case "GuestStars":
                     {
-                        var list = (item.People ?? new Person[] { }).ToList();
-                        list.AddRange(GetSplitValues(node.InnerText, '|').Select(v => new Person() { Name = v, PersonType = PersonType.Actor }));
+                        var list = (item.People ?? new PersonInfo[] { }).ToList();
+                        list.AddRange(GetSplitValues(node.InnerText, '|').Select(v => new PersonInfo() { Name = v, PersonType = PersonType.Actor }));
 
                         item.People = list;
                         break;
@@ -450,7 +450,7 @@ namespace MediaBrowser.Controller.Xml
 
         protected virtual void FetchDataFromPersonsNode(XmlNode node, T item)
         {
-            List<Person> list = (item.People ?? new Person[] { }).ToList();
+            List<PersonInfo> list = (item.People ?? new PersonInfo[] { }).ToList();
 
             foreach (XmlNode childNode in node.ChildNodes)
             {
@@ -542,9 +542,9 @@ namespace MediaBrowser.Controller.Xml
             }
         }
 
-        private Person GetPersonFromXmlNode(XmlNode node)
+        private PersonInfo GetPersonFromXmlNode(XmlNode node)
         {
-            Person person = new Person();
+            PersonInfo person = new PersonInfo();
 
             foreach (XmlNode childNode in node.ChildNodes)
             {
@@ -570,7 +570,7 @@ namespace MediaBrowser.Controller.Xml
                         }
 
                     case "Role":
-                        person.Description = childNode.InnerText ?? string.Empty;
+                        person.Overview = childNode.InnerText ?? string.Empty;
                         break;
 
                     default:

+ 2 - 1
MediaBrowser.Model/Entities/BaseItem.cs

@@ -38,7 +38,8 @@ namespace MediaBrowser.Model.Entities
         public string Overview { get; set; }
         public string Tagline { get; set; }
 
-        public IEnumerable<Person> People { get; set; }
+        [JsonIgnore]
+        public IEnumerable<PersonInfo> People { get; set; }
 
         public IEnumerable<string> Studios { get; set; }
 

+ 13 - 2
MediaBrowser.Model/Entities/Person.cs

@@ -6,10 +6,21 @@ using System.Threading.Tasks;
 
 namespace MediaBrowser.Model.Entities
 {
-    public class Person
+    /// <summary>
+    /// This is the full Person object that can be retrieved with all of it's data.
+    /// </summary>
+    public class Person : BaseItem
+    {
+        public PersonType PersonType { get; set; }
+    }
+
+    /// <summary>
+    /// This is the small Person stub that is attached to BaseItems
+    /// </summary>
+    public class PersonInfo
     {
         public string Name { get; set; }
-        public string Description { get; set; }
+        public string Overview { get; set; }
         public PersonType PersonType { get; set; }
     }
 

+ 2 - 0
MediaBrowser.Movies/Resolvers/MovieResolver.cs

@@ -23,6 +23,8 @@ namespace MediaBrowser.Movies.Resolvers
                 {
                     return GetMovie(args);
                 }
+
+                // There's no metadata or [tmdb in the path, now we will have to work some magic to see if this is a Movie
             }
 
             return null;

+ 7 - 1
MediaBrowser.TV/Resolvers/SeriesResolver.cs

@@ -14,9 +14,15 @@ namespace MediaBrowser.TV.Resolvers
         {
             if (args.IsFolder)
             {
+                // Optimization to avoid running these tests against Seasons
+                if (args.Parent is Series)
+                {
+                    return null;
+                }
+
                 var metadataFile = args.GetFileByName("series.xml");
 
-                if (metadataFile.HasValue || Path.GetFileName(args.Path).IndexOf("[tvdbid=", StringComparison.OrdinalIgnoreCase) != -1)
+                if (metadataFile.HasValue || Path.GetFileName(args.Path).IndexOf("[tvdbid=", StringComparison.OrdinalIgnoreCase) != -1 || TVUtils.IsSeriesFolder(args.Path, args.FileSystemChildren))
                 {
                     return new Series();
                 }

+ 17 - 4
MediaBrowser.TV/TVUtils.cs

@@ -52,14 +52,27 @@ namespace MediaBrowser.TV
             return seasonPathExpressions.Any(r => r.IsMatch(path));
         }
 
-        public static bool IsSeriesFolder(string path, IEnumerable<string> files, IEnumerable<string> folders)
+        public static bool IsSeriesFolder(string path, IEnumerable<KeyValuePair<string, FileAttributes>> fileSystemChildren)
         {
-            if (folders.Any(f => IsSeasonFolder(f)))
+            foreach (var child in fileSystemChildren)
             {
-                return true;
+                if (child.Value.HasFlag(FileAttributes.Directory))
+                {
+                    if (IsSeasonFolder(child.Key))
+                    {
+                        return true;
+                    }
+                }
+                else
+                {
+                    if (!string.IsNullOrEmpty(EpisodeNumberFromFile(child.Key, false)))
+                    {
+                        return true;
+                    }
+                }
             }
 
-            return files.Any(f => !string.IsNullOrEmpty(EpisodeNumberFromFile(f, false)));
+            return false;
         }
 
         public static bool IsEpisode(string fullPath)