diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-07 15:30:41 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-07 15:30:41 -0500 |
| commit | 76658f07977a5857c752dc1266b66f881b454f48 (patch) | |
| tree | 34a55486343c34fedc03099891a2e2eb8690dc02 /MediaBrowser.Server.Implementations | |
| parent | 5e2a2a02ef73517f11ef9c7a513ac53ed0f9b2e8 (diff) | |
create images list object
Diffstat (limited to 'MediaBrowser.Server.Implementations')
3 files changed, 69 insertions, 88 deletions
diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index 06a03ba1ca..12d3eadfd3 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -619,27 +619,24 @@ namespace MediaBrowser.Server.Implementations.Drawing /// Gets the image cache tag. /// </summary> /// <param name="item">The item.</param> - /// <param name="imageType">Type of the image.</param> - /// <param name="imagePath">The image path.</param> + /// <param name="image">The image.</param> /// <returns>Guid.</returns> /// <exception cref="System.ArgumentNullException">item</exception> - public Guid GetImageCacheTag(IHasImages item, ImageType imageType, string imagePath) + public Guid GetImageCacheTag(IHasImages item, ItemImageInfo image) { if (item == null) { throw new ArgumentNullException("item"); } - if (string.IsNullOrEmpty(imagePath)) + if (image == null) { - throw new ArgumentNullException("imagePath"); + throw new ArgumentNullException("image"); } - var dateModified = item.GetImageDateModified(imagePath); - - var supportedEnhancers = GetSupportedEnhancers(item, imageType); + var supportedEnhancers = GetSupportedEnhancers(item, image.Type); - return GetImageCacheTag(item, imageType, imagePath, dateModified, supportedEnhancers.ToList()); + return GetImageCacheTag(item, image.Type, image.Path, image.DateModified, supportedEnhancers.ToList()); } /// <summary> @@ -693,9 +690,10 @@ namespace MediaBrowser.Server.Implementations.Drawing { var enhancers = GetSupportedEnhancers(item, imageType).ToList(); - var imagePath = item.GetImagePath(imageType, imageIndex); + var imageInfo = item.GetImageInfo(imageType, imageIndex); + var imagePath = imageInfo.Path; - var dateModified = item.GetImageDateModified(imagePath); + var dateModified = imageInfo.DateModified; var result = await GetEnhancedImage(imagePath, dateModified, item, imageType, imageIndex, enhancers); diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 84033f9ad8..5fa96c34b7 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; @@ -34,8 +35,9 @@ namespace MediaBrowser.Server.Implementations.Dto private readonly IImageProcessor _imageProcessor; private readonly IServerConfigurationManager _config; + private readonly IFileSystem _fileSystem; - public DtoService(ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config) + public DtoService(ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem) { _logger = logger; _libraryManager = libraryManager; @@ -44,6 +46,7 @@ namespace MediaBrowser.Server.Implementations.Dto _itemRepo = itemRepo; _imageProcessor = imageProcessor; _config = config; + _fileSystem = fileSystem; } /// <summary> @@ -207,11 +210,11 @@ namespace MediaBrowser.Server.Implementations.Dto Configuration = user.Configuration }; - var image = user.PrimaryImagePath; + var image = user.GetImageInfo(ImageType.Primary, 0); - if (!string.IsNullOrEmpty(image)) + if (image != null) { - dto.PrimaryImageTag = GetImageCacheTag(user, ImageType.Primary, image); + dto.PrimaryImageTag = GetImageCacheTag(user, image); try { @@ -288,12 +291,7 @@ namespace MediaBrowser.Server.Implementations.Dto RunTimeTicks = item.RunTimeTicks }; - var imagePath = item.PrimaryImagePath; - - if (!string.IsNullOrEmpty(imagePath)) - { - info.PrimaryImageTag = GetImageCacheTag(item, ImageType.Primary, imagePath); - } + info.PrimaryImageTag = GetImageCacheTag(item, ImageType.Primary); return info; } @@ -380,11 +378,7 @@ namespace MediaBrowser.Server.Implementations.Dto /// <returns>List{System.String}.</returns> private List<Guid> GetBackdropImageTags(BaseItem item) { - return item.BackdropImagePaths - .Select(p => GetImageCacheTag(item, ImageType.Backdrop, p)) - .Where(i => i.HasValue) - .Select(i => i.Value) - .ToList(); + return GetCacheTags(item, ImageType.Backdrop).ToList(); } /// <summary> @@ -399,23 +393,40 @@ namespace MediaBrowser.Server.Implementations.Dto { return new List<Guid>(); } + return GetCacheTags(item, ImageType.Screenshot).ToList(); + } - return hasScreenshots.ScreenshotImagePaths - .Select(p => GetImageCacheTag(item, ImageType.Screenshot, p)) + private IEnumerable<Guid> GetCacheTags(BaseItem item, ImageType type) + { + return item.GetImages(type) + .Select(p => GetImageCacheTag(item, p)) .Where(i => i.HasValue) .Select(i => i.Value) .ToList(); } - private Guid? GetImageCacheTag(BaseItem item, ImageType type, string path) + private Guid? GetImageCacheTag(BaseItem item, ImageType type) + { + try + { + return _imageProcessor.GetImageCacheTag(item, type); + } + catch (IOException ex) + { + _logger.ErrorException("Error getting {0} image info", ex, type); + return null; + } + } + + private Guid? GetImageCacheTag(BaseItem item, ItemImageInfo image) { try { - return _imageProcessor.GetImageCacheTag(item, type, path); + return _imageProcessor.GetImageCacheTag(item, image); } catch (IOException ex) { - _logger.ErrorException("Error getting {0} image info for {1}", ex, type, path); + _logger.ErrorException("Error getting {0} image info for {1}", ex, image.Type, image.Path); return null; } } @@ -468,12 +479,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (dictionary.TryGetValue(person.Name, out entity)) { - var primaryImagePath = entity.PrimaryImagePath; - - if (!string.IsNullOrEmpty(primaryImagePath)) - { - baseItemPerson.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary, primaryImagePath); - } + baseItemPerson.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary); } dto.People[i] = baseItemPerson; @@ -520,12 +526,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (dictionary.TryGetValue(studio, out entity)) { - var primaryImagePath = entity.PrimaryImagePath; - - if (!string.IsNullOrEmpty(primaryImagePath)) - { - studioDto.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary, primaryImagePath); - } + studioDto.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary); } dto.Studios[i] = studioDto; @@ -544,7 +545,7 @@ namespace MediaBrowser.Server.Implementations.Dto while (parent != null) { - if (parent.BackdropImagePaths != null && parent.BackdropImagePaths.Count > 0) + if (parent.GetImages(ImageType.Backdrop).Any()) { return parent; } @@ -595,7 +596,12 @@ namespace MediaBrowser.Server.Implementations.Dto if (!string.IsNullOrEmpty(chapterInfo.ImagePath)) { - dto.ImageTag = GetImageCacheTag(item, ImageType.Chapter, chapterInfo.ImagePath); + dto.ImageTag = GetImageCacheTag(item, new ItemImageInfo + { + Path = chapterInfo.ImagePath, + Type = ImageType.Chapter, + DateModified = _fileSystem.GetLastWriteTimeUtc(chapterInfo.ImagePath) + }); } return dto; @@ -698,7 +704,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (fields.Contains(ItemFields.Keywords)) { - var hasTags = item as IHasKeywords; + var hasTags = item as IHasKeywords; if (hasTags != null) { dto.Keywords = hasTags.Keywords; @@ -750,15 +756,15 @@ namespace MediaBrowser.Server.Implementations.Dto dto.ImageTags = new Dictionary<ImageType, Guid>(); - foreach (var image in item.Images) + // Prevent implicitly captured closure + var currentItem = item; + foreach (var image in currentItem.ImageInfos.Where(i => !currentItem.AllowsMultipleImages(i.Type))) { - var type = image.Key; - - var tag = GetImageCacheTag(item, type, image.Value); + var tag = GetImageCacheTag(item, image); if (tag.HasValue) { - dto.ImageTags[type] = tag.Value; + dto.ImageTags[image.Type] = tag.Value; } } @@ -804,7 +810,7 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.CollectionType = collectionFolder.CollectionType; } - + if (fields.Contains(ItemFields.RemoteTrailers)) { dto.RemoteTrailers = hasTrailers != null ? @@ -862,7 +868,7 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.ParentLogoItemId = GetDtoId(parentWithLogo); - dto.ParentLogoImageTag = GetImageCacheTag(parentWithLogo, ImageType.Logo, parentWithLogo.GetImagePath(ImageType.Logo)); + dto.ParentLogoImageTag = GetImageCacheTag(parentWithLogo, ImageType.Logo); } } @@ -875,7 +881,7 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.ParentArtItemId = GetDtoId(parentWithImage); - dto.ParentArtImageTag = GetImageCacheTag(parentWithImage, ImageType.Art, parentWithImage.GetImagePath(ImageType.Art)); + dto.ParentArtImageTag = GetImageCacheTag(parentWithImage, ImageType.Art); } } @@ -888,7 +894,7 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.ParentThumbItemId = GetDtoId(parentWithImage); - dto.ParentThumbImageTag = GetImageCacheTag(parentWithImage, ImageType.Thumb, parentWithImage.GetImagePath(ImageType.Thumb)); + dto.ParentThumbImageTag = GetImageCacheTag(parentWithImage, ImageType.Thumb); } } @@ -959,12 +965,7 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.AlbumId = GetDtoId(albumParent); - var imagePath = albumParent.PrimaryImagePath; - - if (!string.IsNullOrEmpty(imagePath)) - { - dto.AlbumPrimaryImageTag = GetImageCacheTag(albumParent, ImageType.Primary, imagePath); - } + dto.AlbumPrimaryImageTag = GetImageCacheTag(albumParent, ImageType.Primary); } } @@ -1085,17 +1086,9 @@ namespace MediaBrowser.Server.Implementations.Dto dto.AirTime = series.AirTime; dto.SeriesStudio = series.Studios.FirstOrDefault(); - if (series.HasImage(ImageType.Thumb)) - { - dto.SeriesThumbImageTag = GetImageCacheTag(series, ImageType.Thumb, series.GetImagePath(ImageType.Thumb)); - } - - var imagePath = series.PrimaryImagePath; + dto.SeriesThumbImageTag = GetImageCacheTag(series, ImageType.Thumb); - if (!string.IsNullOrEmpty(imagePath)) - { - dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary, imagePath); - } + dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary); } // Add SeasonInfo @@ -1110,12 +1103,7 @@ namespace MediaBrowser.Server.Implementations.Dto dto.AirTime = series.AirTime; dto.SeriesStudio = series.Studios.FirstOrDefault(); - var imagePath = series.PrimaryImagePath; - - if (!string.IsNullOrEmpty(imagePath)) - { - dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary, imagePath); - } + dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary); } var game = item as Game; @@ -1303,15 +1291,17 @@ namespace MediaBrowser.Server.Implementations.Dto /// <returns>Task.</returns> public void AttachPrimaryImageAspectRatio(IItemDto dto, IHasImages item) { - var path = item.PrimaryImagePath; + var imageInfo = item.GetImageInfo(ImageType.Primary, 0); - if (string.IsNullOrEmpty(path)) + if (imageInfo == null) { return; } + var path = imageInfo.Path; + // See if we can avoid a file system lookup by looking for the file in ResolveArgs - var dateModified = item.GetImageDateModified(path); + var dateModified = imageInfo.DateModified; ImageSize size; diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs index 4805adb1f0..22d683e1b6 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -401,16 +401,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv private Guid? GetImageTag(IHasImages info) { - var path = info.PrimaryImagePath; - - if (string.IsNullOrEmpty(path)) - { - return null; - } - try { - return _imageProcessor.GetImageCacheTag(info, ImageType.Primary, path); + return _imageProcessor.GetImageCacheTag(info, ImageType.Primary); } catch (Exception ex) { |
