public static void AddToCache(StudioDto dto) { lock(StudioCache) { if (!StudioCache.ContainsKey(dto.Name)) { StudioCache[dto.Name] = new Studio { Name = dto.Name, PrimaryImagePath = dto.HasPrimaryImage ? Kernel.ApiClient.GetImageUrl("Studios/" + dto.Name + "/Images/Primary", new ImageOptions { Tag = dto.PrimaryImageTag }, new QueryStringDictionary()) : null }; } } }
/// <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) { 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 .Where(i => i != null) .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 = GetImageCacheTag(entity, ImageType.Primary, primaryImagePath); } } dto.Studios[i] = studioDto; } }
/// <summary> /// Attaches the studios. /// </summary> /// <param name="dto">The dto.</param> /// <param name="item">The item.</param> /// <returns>Task.</returns> private void AttachStudios(BaseItemDto dto, BaseItem item) { var studios = item.Studios.ToList(); dto.Studios = new StudioDto[studios.Count]; var dictionary = studios.Distinct(StringComparer.OrdinalIgnoreCase).Select(name => { 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; } }