aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTechywarrior <techywarrior@gmail.com>2013-05-03 21:02:59 -0700
committerTechywarrior <techywarrior@gmail.com>2013-05-03 21:02:59 -0700
commit0eed82c5049ce01b1907db987dc6f97f3d636e21 (patch)
treea1995a80c23854f64158e1698250ae71c9282cd5
parent9d4d2a221bbcc9a99db6373ecd3d93ff3287a4a3 (diff)
parent163a1bdbcb4db04d97925aed496746ce5ef52580 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
-rw-r--r--MediaBrowser.Controller/Dto/DtoBuilder.cs65
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs2
-rw-r--r--MediaBrowser.Model/DTO/BaseItemDto.cs2
-rw-r--r--MediaBrowser.Model/DTO/BaseItemPerson.cs36
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec6
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
7 files changed, 107 insertions, 10 deletions
diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs
index 7af9cb496..39b139f02 100644
--- a/MediaBrowser.Controller/Dto/DtoBuilder.cs
+++ b/MediaBrowser.Controller/Dto/DtoBuilder.cs
@@ -63,7 +63,7 @@ namespace MediaBrowser.Controller.Dto
if (fields.Contains(ItemFields.Studios))
{
- dto.Studios = item.Studios;
+ tasks.Add(AttachStudios(dto, item));
}
if (fields.Contains(ItemFields.People))
@@ -124,7 +124,7 @@ namespace MediaBrowser.Controller.Dto
if (fields.Contains(ItemFields.Studios))
{
- dto.Studios = item.Studios;
+ tasks.Add(AttachStudios(dto, item));
}
if (fields.Contains(ItemFields.People))
@@ -645,6 +645,67 @@ namespace MediaBrowser.Controller.Dto
}
/// <summary>
+ /// Attaches the studios.
+ /// </summary>
+ /// <param name="dto">The dto.</param>
+ /// <param name="item">The item.</param>
+ /// <returns>Task.</returns>
+ private async Task AttachStudios(BaseItemDto dto, BaseItem item)
+ {
+ if (item.Studios == null)
+ {
+ return;
+ }
+
+ var studios = item.Studios.ToList();
+
+ dto.Studios = new StudioDto[studios.Count];
+
+ var entities = await Task.WhenAll(studios.Distinct(StringComparer.OrdinalIgnoreCase).Select(c =>
+
+ Task.Run(async () =>
+ {
+ try
+ {
+ return await _libraryManager.GetStudio(c).ConfigureAwait(false);
+ }
+ catch (IOException ex)
+ {
+ _logger.ErrorException("Error getting studio {0}", ex, c);
+ return null;
+ }
+ })
+
+ )).ConfigureAwait(false);
+
+ var dictionary = entities.ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase);
+
+ for (var i = 0; i < studios.Count; i++)
+ {
+ var studio = studios[i];
+
+ var studioDto = new StudioDto
+ {
+ Name = studio
+ };
+
+ Studio entity;
+
+ if (dictionary.TryGetValue(studio, out entity))
+ {
+ var primaryImagePath = entity.PrimaryImagePath;
+
+ if (!string.IsNullOrEmpty(primaryImagePath))
+ {
+ studioDto.PrimaryImageTag = Kernel.Instance.ImageManager.GetImageCacheTag(entity, ImageType.Primary, primaryImagePath);
+ }
+ }
+
+ dto.Studios[i] = studioDto;
+ }
+ }
+
+ /// <summary>
/// If an item does not any backdrops, this can be used to find the first parent that does have one
/// </summary>
/// <param name="item">The item.</param>
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 463e16425..63b6f377b 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -483,7 +483,7 @@ namespace MediaBrowser.Controller.Entities
{
get
{
- return ActualChildren.Values;
+ return ActualChildren.Values.ToList();
}
}
diff --git a/MediaBrowser.Model/DTO/BaseItemDto.cs b/MediaBrowser.Model/DTO/BaseItemDto.cs
index 4170e7250..f33892c47 100644
--- a/MediaBrowser.Model/DTO/BaseItemDto.cs
+++ b/MediaBrowser.Model/DTO/BaseItemDto.cs
@@ -160,7 +160,7 @@ namespace MediaBrowser.Model.Dto
/// Gets or sets the studios.
/// </summary>
/// <value>The studios.</value>
- public List<string> Studios { get; set; }
+ public StudioDto[] Studios { get; set; }
/// <summary>
/// If the item does not have a logo, this will hold the Id of the Parent that has one.
diff --git a/MediaBrowser.Model/DTO/BaseItemPerson.cs b/MediaBrowser.Model/DTO/BaseItemPerson.cs
index 9fd5e1a8a..911f070ce 100644
--- a/MediaBrowser.Model/DTO/BaseItemPerson.cs
+++ b/MediaBrowser.Model/DTO/BaseItemPerson.cs
@@ -51,4 +51,40 @@ namespace MediaBrowser.Model.Dto
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
}
+
+ /// <summary>
+ /// Class StudioDto
+ /// </summary>
+ public class StudioDto
+ {
+ /// <summary>
+ /// Gets or sets the name.
+ /// </summary>
+ /// <value>The name.</value>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// Gets or sets the primary image tag.
+ /// </summary>
+ /// <value>The primary image tag.</value>
+ public Guid? PrimaryImageTag { get; set; }
+
+ /// <summary>
+ /// Gets a value indicating whether this instance has primary image.
+ /// </summary>
+ /// <value><c>true</c> if this instance has primary image; otherwise, <c>false</c>.</value>
+ [IgnoreDataMember]
+ public bool HasPrimaryImage
+ {
+ get
+ {
+ return PrimaryImageTag.HasValue;
+ }
+ }
+
+ /// <summary>
+ /// Occurs when [property changed].
+ /// </summary>
+ public event PropertyChangedEventHandler PropertyChanged;
+ }
}
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index b40b91f17..b15974fe6 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.90</version>
+ <version>3.0.91</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,9 +12,9 @@
<description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.90" />
+ <dependency id="MediaBrowser.Common" version="3.0.91" />
<dependency id="NLog" version="2.0.1.2" />
- <dependency id="ServiceStack.Text" version="3.9.90" />
+ <dependency id="ServiceStack.Text" version="3.9.91" />
<dependency id="SimpleInjector" version="2.2.1" />
</dependencies>
</metadata>
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index 5229c21e9..97210cd62 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.90</version>
+ <version>3.0.91</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 0d6e8581e..0bd9c18cf 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.90</version>
+ <version>3.0.91</version>
<title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.90" />
+ <dependency id="MediaBrowser.Common" version="3.0.91" />
</dependencies>
</metadata>
<files>