add GenreItems property

This commit is contained in:
Luke Pulverenti
2017-05-18 17:05:47 -04:00
parent 72f120d854
commit 47fc7c6aee
10 changed files with 180 additions and 123 deletions

View File

@@ -751,45 +751,41 @@ namespace Emby.Server.Implementations.Dto
/// <returns>Task.</returns>
private void AttachStudios(BaseItemDto dto, BaseItem item)
{
var studios = item.Studios.ToList();
dto.Studios = item.Studios
.Where(i => !string.IsNullOrWhiteSpace(i))
.Select(i => new NameIdPair
{
Name = i,
Id = _libraryManager.GetStudioId(i).ToString("N")
})
.ToArray();
}
dto.Studios = new StudioDto[studios.Count];
private void AttachGenreItems(BaseItemDto dto, BaseItem item)
{
dto.GenreItems = item.Genres
.Where(i => !string.IsNullOrWhiteSpace(i))
.Select(i => new NameIdPair
{
Name = i,
Id = GetStudioId(i, item)
})
.ToArray();
}
var dictionary = studios.Distinct(StringComparer.OrdinalIgnoreCase).Select(name =>
private string GetStudioId(string name, BaseItem owner)
{
if (owner is IHasMusicGenres)
{
try
{
return _libraryManager.GetStudio(name);
}
catch (IOException ex)
{
_logger.ErrorException("Error getting studio {0}", ex, name);
return null;
}
})
.Where(i => i != null)
.DistinctBy(i => i.Name, StringComparer.OrdinalIgnoreCase)
.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))
{
studioDto.Id = entity.Id.ToString("N");
studioDto.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary);
}
dto.Studios[i] = studioDto;
return _libraryManager.GetGameGenreId(name).ToString("N");
}
if (owner is Game || owner is GameSystem)
{
return _libraryManager.GetGameGenreId(name).ToString("N");
}
return _libraryManager.GetGenreId(name).ToString("N");
}
/// <summary>
@@ -903,6 +899,11 @@ namespace Emby.Server.Implementations.Dto
dto.Genres = item.Genres;
}
if (fields.Contains(ItemFields.GenreItems))
{
AttachGenreItems(dto, item);
}
if (options.EnableImages)
{
dto.ImageTags = new Dictionary<ImageType, string>();