aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-07-12 13:09:35 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-07-12 13:09:35 -0400
commit4c9f77eead7148bb451de2a3f261bb3a61efe321 (patch)
treef1ec5b80698df2128478d79698bb3401edb33099
parentb50f78e5da6f3fdfc59e577ca61b88771da7d211 (diff)
Added some resolver improvements
-rw-r--r--MediaBrowser.Controller/Kernel.cs3
-rw-r--r--MediaBrowser.Controller/Library/ItemDataCache.cs32
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
-rw-r--r--MediaBrowser.Controller/Xml/BaseItemXmlParser.cs20
-rw-r--r--MediaBrowser.Model/Entities/BaseItem.cs3
-rw-r--r--MediaBrowser.Model/Entities/Person.cs15
-rw-r--r--MediaBrowser.Movies/Resolvers/MovieResolver.cs2
-rw-r--r--MediaBrowser.TV/Resolvers/SeriesResolver.cs8
-rw-r--r--MediaBrowser.TV/TVUtils.cs21
9 files changed, 51 insertions, 54 deletions
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs
index 2bb78e7e7..455a63f67 100644
--- a/MediaBrowser.Controller/Kernel.cs
+++ b/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()
diff --git a/MediaBrowser.Controller/Library/ItemDataCache.cs b/MediaBrowser.Controller/Library/ItemDataCache.cs
deleted file mode 100644
index 35b3551a9..000000000
--- a/MediaBrowser.Controller/Library/ItemDataCache.cs
+++ /dev/null
@@ -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;
- }
- }
-}
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index a84fc8091..30b1070bc 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/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" />
diff --git a/MediaBrowser.Controller/Xml/BaseItemXmlParser.cs b/MediaBrowser.Controller/Xml/BaseItemXmlParser.cs
index 2addf6a1d..8948c979e 100644
--- a/MediaBrowser.Controller/Xml/BaseItemXmlParser.cs
+++ b/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:
diff --git a/MediaBrowser.Model/Entities/BaseItem.cs b/MediaBrowser.Model/Entities/BaseItem.cs
index 2eaf375d9..6efdb4dee 100644
--- a/MediaBrowser.Model/Entities/BaseItem.cs
+++ b/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; }
diff --git a/MediaBrowser.Model/Entities/Person.cs b/MediaBrowser.Model/Entities/Person.cs
index 320491d02..521adb50c 100644
--- a/MediaBrowser.Model/Entities/Person.cs
+++ b/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; }
}
diff --git a/MediaBrowser.Movies/Resolvers/MovieResolver.cs b/MediaBrowser.Movies/Resolvers/MovieResolver.cs
index d2076851a..5cdd19959 100644
--- a/MediaBrowser.Movies/Resolvers/MovieResolver.cs
+++ b/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;
diff --git a/MediaBrowser.TV/Resolvers/SeriesResolver.cs b/MediaBrowser.TV/Resolvers/SeriesResolver.cs
index 68581eb0b..694a8576d 100644
--- a/MediaBrowser.TV/Resolvers/SeriesResolver.cs
+++ b/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();
}
diff --git a/MediaBrowser.TV/TVUtils.cs b/MediaBrowser.TV/TVUtils.cs
index 8421ebc69..3e975a512 100644
--- a/MediaBrowser.TV/TVUtils.cs
+++ b/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)