diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs
index c4fda4fa27..302842e7e8 100644
--- a/MediaBrowser.Controller/Entities/AggregateFolder.cs
+++ b/MediaBrowser.Controller/Entities/AggregateFolder.cs
@@ -11,6 +11,17 @@ namespace MediaBrowser.Controller.Entities
///
public class AggregateFolder : Folder
{
+ ///
+ /// We don't support manual shortcuts
+ ///
+ protected override bool SupportsShortcutChildren
+ {
+ get
+ {
+ return false;
+ }
+ }
+
///
/// The _virtual children
///
diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs
index 7d7d60ae53..b080478b80 100644
--- a/MediaBrowser.Controller/Entities/CollectionFolder.cs
+++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs
@@ -67,6 +67,38 @@ namespace MediaBrowser.Controller.Entities
return NullTaskResult;
}
+ ///
+ /// Our children are actually just references to the ones in the physical root...
+ ///
+ /// The linked children.
+ public override List LinkedChildren
+ {
+ get
+ {
+ ItemResolveArgs resolveArgs;
+
+ try
+ {
+ resolveArgs = ResolveArgs;
+ }
+ catch (IOException ex)
+ {
+ Logger.ErrorException("Error getting ResolveArgs for {0}", ex, Path);
+ return new List();
+ }
+
+ return LibraryManager.RootFolder.RecursiveChildren
+ .OfType()
+ .Where(i => i.Path != null && resolveArgs.PhysicalLocations.Contains(i.Path, StringComparer.OrdinalIgnoreCase))
+ .SelectMany(c => c.LinkedChildren).ToList();
+
+ }
+ set
+ {
+ base.LinkedChildren = value;
+ }
+ }
+
///
/// Our children are actually just references to the ones in the physical root...
///
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 3eda96d3d2..ca43ca616b 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -81,11 +81,11 @@ namespace MediaBrowser.Controller.Entities
}
}
- public List LinkedChildren { get; set; }
+ public virtual List LinkedChildren { get; set; }
protected virtual bool SupportsShortcutChildren
{
- get { return false; }
+ get { return true; }
}
///
diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
index 5c99a62f7d..e52ece502b 100644
--- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
+++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
@@ -6,12 +6,5 @@ namespace MediaBrowser.Controller.Entities.Movies
///
public class BoxSet : Folder
{
- protected override bool SupportsShortcutChildren
- {
- get
- {
- return true;
- }
- }
}
}
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
index 0084fe96c6..2761c51e02 100644
--- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
+++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
@@ -571,7 +571,7 @@ namespace MediaBrowser.Controller.Providers
}
break;
- case "CollectionNumber":
+ case "TMDbCollectionId":
var tmdbCollection = reader.ReadElementContentAsString();
if (!string.IsNullOrWhiteSpace(tmdbCollection))
{
diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
index 25653ef599..37b4ce3866 100644
--- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
@@ -653,7 +653,7 @@ namespace MediaBrowser.Providers.Movies
{
if (!movie.LockedFields.Contains(MetadataFields.Name))
{
- movie.Name = movieData.title ?? movieData.original_title ?? movie.Name;
+ movie.Name = movieData.title ?? movieData.original_title ?? movieData.name ?? movie.Name;
}
if (!movie.LockedFields.Contains(MetadataFields.Overview))
{
@@ -676,6 +676,10 @@ namespace MediaBrowser.Providers.Movies
{
movie.SetProviderId(MetadataProviders.TmdbCollection, movieData.belongs_to_collection.id.ToString(CultureInfo.InvariantCulture));
}
+ else
+ {
+ movie.SetProviderId(MetadataProviders.TmdbCollection, null); // clear out any old entry
+ }
float rating;
string voteAvg = movieData.vote_average.ToString(CultureInfo.InvariantCulture);
@@ -1177,6 +1181,7 @@ namespace MediaBrowser.Providers.Movies
public string homepage { get; set; }
public int id { get; set; }
public string imdb_id { get; set; }
+ public string name { get; set; }
public string original_title { get; set; }
public string overview { get; set; }
public double popularity { get; set; }
diff --git a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
index 07f4da342d..5c9e903129 100644
--- a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
+++ b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
@@ -67,7 +67,7 @@ namespace MediaBrowser.Providers.Savers
"TVcomId",
"RottenTomatoesId",
"MusicbrainzId",
- "CollectionNumber",
+ "TMDbCollectionId",
"Genres",
"Genre",
"Studios",
@@ -343,7 +343,7 @@ namespace MediaBrowser.Providers.Savers
if (!string.IsNullOrEmpty(tmdbCollection))
{
- builder.Append("" + SecurityElement.Escape(tmdbCollection) + "");
+ builder.Append("" + SecurityElement.Escape(tmdbCollection) + "");
}
if (item.Taglines.Count > 0)