diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index ffbb5229b0..ea7eaa9471 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -14,7 +14,6 @@ using ServiceStack.Text.Controller; using ServiceStack.Web; using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using System.Linq; using System.Threading; @@ -341,7 +340,7 @@ namespace MediaBrowser.Api.Images ImageIndex = imageIndex, ImageType = info.Type, ImageTag = _imageProcessor.GetImageCacheTag(item, info), - Size = info.Length ?? fileInfo.Length, + Size = fileInfo.Length, Width = Convert.ToInt32(size.Width), Height = Convert.ToInt32(size.Height) }; @@ -365,7 +364,21 @@ namespace MediaBrowser.Api.Images _libraryManager.RootFolder : _libraryManager.GetItemById(request.Id); - return GetImage(request, item); + return GetImage(request, item, false); + } + + /// + /// Gets the specified request. + /// + /// The request. + /// System.Object. + public object Head(GetItemImage request) + { + var item = string.IsNullOrEmpty(request.Id) ? + _libraryManager.RootFolder : + _libraryManager.GetItemById(request.Id); + + return GetImage(request, item, true); } /// @@ -377,7 +390,7 @@ namespace MediaBrowser.Api.Images { var item = _userManager.Users.First(i => i.Id == request.Id); - return GetImage(request, item); + return GetImage(request, item, false); } public object Get(GetItemByNameImage request) @@ -387,7 +400,7 @@ namespace MediaBrowser.Api.Images var item = GetItemByName(request.Name, type, _libraryManager); - return GetImage(request, item); + return GetImage(request, item, false); } /// @@ -484,10 +497,10 @@ namespace MediaBrowser.Api.Images /// /// The request. /// The item. + /// if set to true [is head request]. /// System.Object. - /// - /// - public object GetImage(ImageRequest request, IHasImages item) + /// + public object GetImage(ImageRequest request, IHasImages item, bool isHeadRequest) { var imageInfo = GetImageInfo(request, item); @@ -534,7 +547,8 @@ namespace MediaBrowser.Api.Images supportedImageEnhancers, contentType, cacheDuration, - responseHeaders) + responseHeaders, + isHeadRequest) .Result; } @@ -544,7 +558,8 @@ namespace MediaBrowser.Api.Images List enhancers, string contentType, TimeSpan? cacheDuration, - IDictionary headers) + IDictionary headers, + bool isHeadRequest) { var cropwhitespace = request.Type == ImageType.Logo || request.Type == ImageType.Art; @@ -574,7 +589,7 @@ namespace MediaBrowser.Api.Images var file = await _imageProcessor.ProcessImage(options).ConfigureAwait(false); - return ResultFactory.GetStaticFileResult(Request, file, contentType, cacheDuration, FileShare.Read, headers); + return ResultFactory.GetStaticFileResult(Request, file, contentType, cacheDuration, FileShare.Read, headers, isHeadRequest); } private string GetMimeType(ImageOutputFormat format, string path) diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 34056c240d..fdffa60d0a 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1309,8 +1309,7 @@ namespace MediaBrowser.Controller.Entities { Path = file.FullName, Type = type, - DateModified = FileSystem.GetLastWriteTimeUtc(file), - Length = ((FileInfo)file).Length + DateModified = FileSystem.GetLastWriteTimeUtc(file) }); } else @@ -1421,14 +1420,11 @@ namespace MediaBrowser.Controller.Entities return null; } - var info = new FileInfo(path); - return new ItemImageInfo { Path = path, - DateModified = FileSystem.GetLastWriteTimeUtc(info), - Type = imageType, - Length = info.Length + DateModified = FileSystem.GetLastWriteTimeUtc(path), + Type = imageType }; } diff --git a/MediaBrowser.Controller/Entities/ItemImageInfo.cs b/MediaBrowser.Controller/Entities/ItemImageInfo.cs index fe8193c5fe..80aec64824 100644 --- a/MediaBrowser.Controller/Entities/ItemImageInfo.cs +++ b/MediaBrowser.Controller/Entities/ItemImageInfo.cs @@ -10,7 +10,5 @@ namespace MediaBrowser.Controller.Entities public ImageType Type { get; set; } public DateTime DateModified { get; set; } - - public long? Length { get; set; } } } diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index 595e0e00d9..279a40a73c 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -636,18 +636,26 @@ namespace MediaBrowser.Dlna.Didl if (!_profile.EnableAlbumArtInDidl) { - return; + if (!(item is Photo) && !(item is Video)) + { + return; + } } - AddImageResElement(item, element, 4096, 4096, "jpg"); - AddImageResElement(item, element, 4096, 4096, "png"); - AddImageResElement(item, element, 1024, 768, "jpg"); - AddImageResElement(item, element, 640, 480, "jpg"); - AddImageResElement(item, element, 160, 160, "jpg"); - AddImageResElement(item, element, 160, 160, "png"); + AddImageResElement(item, element, 4096, 4096, "jpg", "JPEG_LRG"); + AddImageResElement(item, element, 4096, 4096, "png", "PNG_LRG"); + AddImageResElement(item, element, 1024, 768, "jpg", "JPEG_MED"); + AddImageResElement(item, element, 640, 480, "jpg", "JPEG_SM"); + AddImageResElement(item, element, 160, 160, "jpg", "JPEG_TN"); + AddImageResElement(item, element, 160, 160, "png", "PNG_TN"); } - private void AddImageResElement(BaseItem item, XmlElement element, int maxWidth, int maxHeight, string format) + private void AddImageResElement(BaseItem item, + XmlElement element, + int maxWidth, + int maxHeight, + string format, + string org_Pn) { var imageInfo = GetImageInfo(item); @@ -667,7 +675,8 @@ namespace MediaBrowser.Dlna.Didl var width = albumartUrlInfo.Width; var height = albumartUrlInfo.Height; - var contentFeatures = new ContentFeatureBuilder(_profile).BuildImageHeader(format, width, height, imageInfo.IsDirectStream); + var contentFeatures = new ContentFeatureBuilder(_profile) + .BuildImageHeader(format, width, height, imageInfo.IsDirectStream, org_Pn); res.SetAttribute("protocolInfo", String.Format( "http-get:*:{0}:{1}", @@ -675,14 +684,6 @@ namespace MediaBrowser.Dlna.Didl contentFeatures )); - res.SetAttribute("colorDepth", "24"); - - if (imageInfo.IsDirectStream) - { - var length = imageInfo.ItemImageInfo.Length ?? new FileInfo(imageInfo.File).Length; - res.SetAttribute("size", length.ToString(_usCulture)); - } - if (width.HasValue && height.HasValue) { res.SetAttribute("resolution", string.Format("{0}x{1}", width.Value, height.Value)); diff --git a/MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs b/MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs index b89d8b73b6..98ebfcdf2a 100644 --- a/MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs +++ b/MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs @@ -15,15 +15,15 @@ namespace MediaBrowser.Model.Dlna public string BuildImageHeader(string container, int? width, int? height, - bool isDirectStream) + bool isDirectStream, + string orgPn = null) { string orgOp = ";DLNA.ORG_OP=" + DlnaMaps.GetImageOrgOpValue(); // 0 = native, 1 = transcoded var orgCi = isDirectStream ? ";DLNA.ORG_CI=0" : ";DLNA.ORG_CI=1"; - DlnaFlags flagValue = DlnaFlags.StreamingTransferMode | - DlnaFlags.BackgroundTransferMode | + DlnaFlags flagValue = DlnaFlags.BackgroundTransferMode | DlnaFlags.InteractiveTransferMode | DlnaFlags.DlnaV15; @@ -34,7 +34,10 @@ namespace MediaBrowser.Model.Dlna width, height); - string orgPn = mediaProfile == null ? null : mediaProfile.OrgPn; + if (string.IsNullOrEmpty(orgPn)) + { + orgPn = mediaProfile == null ? null : mediaProfile.OrgPn; + } if (string.IsNullOrEmpty(orgPn)) { @@ -66,10 +69,10 @@ namespace MediaBrowser.Model.Dlna DlnaFlags.InteractiveTransferMode | DlnaFlags.DlnaV15; - if (isDirectStream) - { - flagValue = flagValue | DlnaFlags.ByteBasedSeek; - } + //if (isDirectStream) + //{ + // flagValue = flagValue | DlnaFlags.ByteBasedSeek; + //} //else if (runtimeTicks.HasValue) //{ // flagValue = flagValue | DlnaFlags.TimeBasedSeek; @@ -125,10 +128,10 @@ namespace MediaBrowser.Model.Dlna DlnaFlags.InteractiveTransferMode | DlnaFlags.DlnaV15; - if (isDirectStream) - { - flagValue = flagValue | DlnaFlags.ByteBasedSeek; - } + //if (isDirectStream) + //{ + // flagValue = flagValue | DlnaFlags.ByteBasedSeek; + //} //else if (runtimeTicks.HasValue) //{ // flagValue = flagValue | DlnaFlags.TimeBasedSeek; diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index b3ddcee79d..576f83d2ee 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -123,7 +123,8 @@ "HeaderMyViews": "My Views", "HeaderLibraryFolders": "Media Folders", "HeaderLatestMedia": "Latest Media", - "ButtonMore": "More...", + "ButtonMoreItems": "More...", + "ButtonMore": "More", "HeaderFavoriteMovies": "Favorite Movies", "HeaderFavoriteShows": "Favorite Shows", "HeaderFavoriteEpisodes": "Favorite Episodes", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index a88ba85922..605bbea0d8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -964,5 +964,6 @@ "OptionReportBooks": "Books", "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", - "OptionReportAdultVideos": "Adult videos" + "OptionReportAdultVideos": "Adult videos", + "ButtonMore": "More" } diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index a3343b7e63..03fc888db0 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.424 + 3.0.425 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 398f74d6a1..7048a961d1 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.424 + 3.0.425 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 016fbc4251..aa7bec8fd9 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.424 + 3.0.425 MediaBrowser.Model - Signed Edition Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index 703103ed38..52523d8bb9 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.424 + 3.0.425 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - +