diff --git a/Emby.Drawing/ImageProcessor.cs b/Emby.Drawing/ImageProcessor.cs index c7d06559a..6d600c646 100644 --- a/Emby.Drawing/ImageProcessor.cs +++ b/Emby.Drawing/ImageProcessor.cs @@ -60,6 +60,7 @@ namespace Emby.Drawing _imageEncoder = imageEncoder; _appPaths = appPaths; + ImageEnhancers = new List(); _saveImageSizeTimer = new Timer(SaveImageSizeCallback, null, Timeout.Infinite, Timeout.Infinite); Dictionary sizeDictionary; diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index ec9b2571e..7da11a405 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -40,8 +40,8 @@ namespace MediaBrowser.Api.Images [Route("/Items/{Id}/Images/{Type}/{Index}", "GET")] [Route("/Items/{Id}/Images/{Type}", "HEAD")] [Route("/Items/{Id}/Images/{Type}/{Index}", "HEAD")] - [Route("/Items/{Id}/Images/{Type}/{Index}/{Tag}/{Format}/{MaxWidth}/{MaxHeight}/{PercentPlayed}", "GET")] - [Route("/Items/{Id}/Images/{Type}/{Index}/{Tag}/{Format}/{MaxWidth}/{MaxHeight}/{PercentPlayed}", "HEAD")] + [Route("/Items/{Id}/Images/{Type}/{Index}/{Tag}/{Format}/{MaxWidth}/{MaxHeight}/{PercentPlayed}/{UnplayedCount}", "GET")] + [Route("/Items/{Id}/Images/{Type}/{Index}/{Tag}/{Format}/{MaxWidth}/{MaxHeight}/{PercentPlayed}/{UnplayedCount}", "HEAD")] public class GetItemImage : ImageRequest { /// @@ -511,6 +511,30 @@ namespace MediaBrowser.Api.Images /// public object GetImage(ImageRequest request, IHasImages item, bool isHeadRequest) { + if (request.PercentPlayed.HasValue) + { + if (request.PercentPlayed.Value <= 0) + { + request.PercentPlayed = null; + } + else if (request.PercentPlayed.Value >= 100) + { + request.PercentPlayed = null; + request.AddPlayedIndicator = true; + } + } + if (request.PercentPlayed.HasValue) + { + request.UnplayedCount = null; + } + if (request.UnplayedCount.HasValue) + { + if (request.UnplayedCount.Value <= 0) + { + request.UnplayedCount = null; + } + } + var imageInfo = GetImageInfo(request, item); if (imageInfo == null) diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs index 4661abf4c..f66f307db 100644 --- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs +++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs @@ -67,6 +67,13 @@ namespace MediaBrowser.Api.UserLibrary { } + [Route("/Sessions/Playing/Ping", "POST", Summary = "Pings a playback session")] + public class PingPlaybackSession : IReturnVoid + { + [ApiMember(Name = "PlaySessionId", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] + public string PlaySessionId { get; set; } + } + [Route("/Sessions/Playing/Stopped", "POST", Summary = "Reports playback has stopped within a session")] public class ReportPlaybackStopped : PlaybackStopInfo, IReturnVoid { @@ -336,6 +343,11 @@ namespace MediaBrowser.Api.UserLibrary Task.WaitAll(task); } + public void Post(PingPlaybackSession request) + { + ApiEntryPoint.Instance.PingTranscodingJob(request.PlaySessionId); + } + /// /// Posts the specified request. /// diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 10fa4adad..73ede8179 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1,5 +1,4 @@ -using System.Globalization; -using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Collections; @@ -18,6 +17,7 @@ using MediaBrowser.Model.Logging; using MediaBrowser.Model.Users; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Runtime.Serialization; diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 975f3e394..821e6b5ca 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -164,18 +164,22 @@ namespace MediaBrowser.Controller.Entities protected void AddChildrenInternal(IEnumerable children) { + var actualChildren = ActualChildren; + lock (_childrenSyncLock) { - var newChildren = ActualChildren.ToList(); + var newChildren = actualChildren.ToList(); newChildren.AddRange(children); _children = newChildren; } } protected void AddChildInternal(BaseItem child) { + var actualChildren = ActualChildren; + lock (_childrenSyncLock) { - var newChildren = ActualChildren.ToList(); + var newChildren = actualChildren.ToList(); newChildren.Add(child); _children = newChildren; } @@ -184,10 +188,11 @@ namespace MediaBrowser.Controller.Entities protected void RemoveChildrenInternal(IEnumerable children) { var ids = children.Select(i => i.Id).ToList(); + var actualChildren = ActualChildren; lock (_childrenSyncLock) { - _children = ActualChildren.Where(i => !ids.Contains(i.Id)).ToList(); + _children = actualChildren.Where(i => !ids.Contains(i.Id)).ToList(); } } @@ -302,7 +307,7 @@ namespace MediaBrowser.Controller.Entities { if (_children == null) { - _children = LoadChildrenInternal(); + _children = LoadChildren().ToList(); } } } @@ -356,11 +361,6 @@ namespace MediaBrowser.Controller.Entities return base.IsVisible(user); } - private List LoadChildrenInternal() - { - return LoadChildren().ToList(); - } - /// /// Loads our children. Validation will occur externally. /// We want this sychronous. diff --git a/MediaBrowser.Controller/Providers/MetadataStatus.cs b/MediaBrowser.Controller/Providers/MetadataStatus.cs index 12844c3c4..283b9edbc 100644 --- a/MediaBrowser.Controller/Providers/MetadataStatus.cs +++ b/MediaBrowser.Controller/Providers/MetadataStatus.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; namespace MediaBrowser.Controller.Providers { @@ -54,13 +52,6 @@ namespace MediaBrowser.Controller.Providers /// The last result error message. public string LastErrorMessage { get; set; } - /// - /// Gets or sets the providers refreshed. - /// - /// The providers refreshed. - public List MetadataProvidersRefreshed { get; set; } - public List ImageProvidersRefreshed { get; set; } - public DateTime? ItemDateModified { get; set; } public void AddStatus(ProviderRefreshStatus status, string errorMessage) @@ -83,9 +74,6 @@ namespace MediaBrowser.Controller.Providers public MetadataStatus() { LastStatus = ProviderRefreshStatus.Success; - - MetadataProvidersRefreshed = new List(); - ImageProvidersRefreshed = new List(); } public bool IsDirty { get; private set; } @@ -109,33 +97,5 @@ namespace MediaBrowser.Controller.Providers DateLastImagesRefresh = date; } - - public void AddImageProvidersRefreshed(List providerIds) - { - var count = ImageProvidersRefreshed.Count; - - providerIds.AddRange(ImageProvidersRefreshed); - - ImageProvidersRefreshed = providerIds.Distinct().ToList(); - - if (ImageProvidersRefreshed.Count != count) - { - IsDirty = true; - } - } - - public void AddMetadataProvidersRefreshed(List providerIds) - { - var count = MetadataProvidersRefreshed.Count; - - providerIds.AddRange(MetadataProvidersRefreshed); - - MetadataProvidersRefreshed = providerIds.Distinct().ToList(); - - if (MetadataProvidersRefreshed.Count != count) - { - IsDirty = true; - } - } } } diff --git a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs index abd649ad7..3d7ae8cc4 100644 --- a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs +++ b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs @@ -58,7 +58,7 @@ namespace MediaBrowser.Dlna.ContentDirectory _profile = profile; _config = config; - _didlBuilder = new DidlBuilder(profile, user, imageProcessor, serverAddress, accessToken, userDataManager, localization, mediaSourceManager); + _didlBuilder = new DidlBuilder(profile, user, imageProcessor, serverAddress, accessToken, userDataManager, localization, mediaSourceManager, Logger); } protected override IEnumerable> GetResult(string methodName, Headers methodParams) diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index 629b95f67..52791822b 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -39,8 +39,9 @@ namespace MediaBrowser.Dlna.Didl private readonly IUserDataManager _userDataManager; private readonly ILocalizationManager _localization; private readonly IMediaSourceManager _mediaSourceManager; + private readonly ILogger _logger; - public DidlBuilder(DeviceProfile profile, User user, IImageProcessor imageProcessor, string serverAddress, string accessToken, IUserDataManager userDataManager, ILocalizationManager localization, IMediaSourceManager mediaSourceManager) + public DidlBuilder(DeviceProfile profile, User user, IImageProcessor imageProcessor, string serverAddress, string accessToken, IUserDataManager userDataManager, ILocalizationManager localization, IMediaSourceManager mediaSourceManager, ILogger logger) { _profile = profile; _imageProcessor = imageProcessor; @@ -48,6 +49,7 @@ namespace MediaBrowser.Dlna.Didl _userDataManager = userDataManager; _localization = localization; _mediaSourceManager = mediaSourceManager; + _logger = logger; _accessToken = accessToken; _user = user; } @@ -127,7 +129,7 @@ namespace MediaBrowser.Dlna.Didl { var sources = _mediaSourceManager.GetStaticMediaSources(video, true, _user).ToList(); - streamInfo = new StreamBuilder(new NullLogger()).BuildVideoItem(new VideoOptions + streamInfo = new StreamBuilder(_logger).BuildVideoItem(new VideoOptions { ItemId = GetClientId(video), MediaSources = sources, @@ -780,19 +782,33 @@ namespace MediaBrowser.Dlna.Didl var result = element.OwnerDocument; var playbackPercentage = 0; + var unplayedCount = 0; if (item is Video) { var userData = _userDataManager.GetUserDataDto(item, _user); playbackPercentage = Convert.ToInt32(userData.PlayedPercentage ?? 0); - if (playbackPercentage >= 100) + if (playbackPercentage >= 100 || userData.Played) { - playbackPercentage = 0; + playbackPercentage = 100; + } + } + else if (item is Series || item is Season || item is BoxSet) + { + var userData = _userDataManager.GetUserDataDto(item, _user); + + if (userData.Played) + { + playbackPercentage = 100; + } + else + { + unplayedCount = userData.UnplayedItemCount ?? 0; } } - var albumartUrlInfo = GetImageUrl(imageInfo, _profile.MaxAlbumArtWidth, _profile.MaxAlbumArtHeight, playbackPercentage, "jpg"); + var albumartUrlInfo = GetImageUrl(imageInfo, _profile.MaxAlbumArtWidth, _profile.MaxAlbumArtHeight, playbackPercentage, unplayedCount, "jpg"); var icon = result.CreateElement("upnp", "albumArtURI", NS_UPNP); var profile = result.CreateAttribute("dlna", "profileID", NS_DLNA); @@ -802,7 +818,7 @@ namespace MediaBrowser.Dlna.Didl element.AppendChild(icon); // TOOD: Remove these default values - var iconUrlInfo = GetImageUrl(imageInfo, _profile.MaxIconWidth ?? 48, _profile.MaxIconHeight ?? 48, playbackPercentage, "jpg"); + var iconUrlInfo = GetImageUrl(imageInfo, _profile.MaxIconWidth ?? 48, _profile.MaxIconHeight ?? 48, playbackPercentage, unplayedCount, "jpg"); icon = result.CreateElement("upnp", "icon", NS_UPNP); icon.InnerText = iconUrlInfo.Url; element.AppendChild(icon); @@ -819,15 +835,15 @@ namespace MediaBrowser.Dlna.Didl } } - AddImageResElement(item, element, 160, 160, playbackPercentage, "jpg", "JPEG_TN"); + AddImageResElement(item, element, 160, 160, playbackPercentage, unplayedCount, "jpg", "JPEG_TN"); if (!_profile.EnableSingleAlbumArtLimit) { - AddImageResElement(item, element, 4096, 4096, playbackPercentage, "jpg", "JPEG_LRG"); - AddImageResElement(item, element, 1024, 768, playbackPercentage, "jpg", "JPEG_MED"); - AddImageResElement(item, element, 640, 480, playbackPercentage, "jpg", "JPEG_SM"); - AddImageResElement(item, element, 4096, 4096, playbackPercentage, "png", "PNG_LRG"); - AddImageResElement(item, element, 160, 160, playbackPercentage, "png", "PNG_TN"); + AddImageResElement(item, element, 4096, 4096, playbackPercentage, unplayedCount, "jpg", "JPEG_LRG"); + AddImageResElement(item, element, 1024, 768, playbackPercentage, unplayedCount, "jpg", "JPEG_MED"); + AddImageResElement(item, element, 640, 480, playbackPercentage, unplayedCount, "jpg", "JPEG_SM"); + AddImageResElement(item, element, 4096, 4096, playbackPercentage, unplayedCount, "png", "PNG_LRG"); + AddImageResElement(item, element, 160, 160, playbackPercentage, unplayedCount, "png", "PNG_TN"); } } @@ -852,6 +868,7 @@ namespace MediaBrowser.Dlna.Didl int maxWidth, int maxHeight, int playbackPercentage, + int unplayedCount, string format, string org_Pn) { @@ -864,7 +881,7 @@ namespace MediaBrowser.Dlna.Didl var result = element.OwnerDocument; - var albumartUrlInfo = GetImageUrl(imageInfo, maxWidth, maxHeight, playbackPercentage, format); + var albumartUrlInfo = GetImageUrl(imageInfo, maxWidth, maxHeight, playbackPercentage, unplayedCount, format); var res = result.CreateElement(string.Empty, "res", NS_DIDL); @@ -1005,9 +1022,9 @@ namespace MediaBrowser.Dlna.Didl return id; } - private ImageUrlInfo GetImageUrl(ImageDownloadInfo info, int maxWidth, int maxHeight, int playbackPercentage, string format) + private ImageUrlInfo GetImageUrl(ImageDownloadInfo info, int maxWidth, int maxHeight, int playbackPercentage, int unplayedCount, string format) { - var url = string.Format("{0}/Items/{1}/Images/{2}/0/{3}/{4}/{5}/{6}/{7}", + var url = string.Format("{0}/Items/{1}/Images/{2}/0/{3}/{4}/{5}/{6}/{7}/{8}", _serverAddress, info.ItemId, info.Type, @@ -1015,7 +1032,8 @@ namespace MediaBrowser.Dlna.Didl format, maxWidth.ToString(CultureInfo.InvariantCulture), maxHeight.ToString(CultureInfo.InvariantCulture), - playbackPercentage.ToString(CultureInfo.InvariantCulture) + playbackPercentage.ToString(CultureInfo.InvariantCulture), + unplayedCount.ToString(CultureInfo.InvariantCulture) ); var width = info.Width; diff --git a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj index 2f4d44418..0cbe36398 100644 --- a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj +++ b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj @@ -94,7 +94,6 @@ - @@ -167,7 +166,9 @@ - + + Designer + diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs index 9df69b115..66cdc51af 100644 --- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs +++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs @@ -478,7 +478,7 @@ namespace MediaBrowser.Dlna.PlayTo playlistItem.StreamUrl = playlistItem.StreamInfo.ToDlnaUrl(_serverAddress, _accessToken); - var itemXml = new DidlBuilder(profile, user, _imageProcessor, _serverAddress, _accessToken, _userDataManager, _localization, _mediaSourceManager) + var itemXml = new DidlBuilder(profile, user, _imageProcessor, _serverAddress, _accessToken, _userDataManager, _localization, _mediaSourceManager, _logger) .GetItemDidl(item, null, _session.DeviceId, new Filter(), playlistItem.StreamInfo); playlistItem.Didl = itemXml; diff --git a/MediaBrowser.Dlna/PlayTo/PlayToManager.cs b/MediaBrowser.Dlna/PlayTo/PlayToManager.cs index ba6d656dd..77c98f9b9 100644 --- a/MediaBrowser.Dlna/PlayTo/PlayToManager.cs +++ b/MediaBrowser.Dlna/PlayTo/PlayToManager.cs @@ -114,7 +114,7 @@ namespace MediaBrowser.Dlna.PlayTo _mediaSourceManager); controller.Init(device); - + var profile = _dlnaManager.GetProfile(device.Properties.ToDeviceIdentification()) ?? _dlnaManager.GetDefaultProfile(); diff --git a/MediaBrowser.Dlna/Profiles/DishHopperJoeyProfile.cs b/MediaBrowser.Dlna/Profiles/DishHopperJoeyProfile.cs index 07936688d..ab887a3bf 100644 --- a/MediaBrowser.Dlna/Profiles/DishHopperJoeyProfile.cs +++ b/MediaBrowser.Dlna/Profiles/DishHopperJoeyProfile.cs @@ -95,6 +95,7 @@ namespace MediaBrowser.Dlna.Profiles new CodecProfile { Type = CodecType.Video, + Codec = "h264", Conditions = new [] { new ProfileCondition @@ -138,7 +139,6 @@ namespace MediaBrowser.Dlna.Profiles new CodecProfile { Type = CodecType.Video, - Codec = "mpeg2video", Conditions = new [] { new ProfileCondition diff --git a/MediaBrowser.Dlna/Profiles/PopcornHourProfile.cs b/MediaBrowser.Dlna/Profiles/PopcornHourProfile.cs index 6cf06d41f..883af57d2 100644 --- a/MediaBrowser.Dlna/Profiles/PopcornHourProfile.cs +++ b/MediaBrowser.Dlna/Profiles/PopcornHourProfile.cs @@ -93,8 +93,10 @@ namespace MediaBrowser.Dlna.Profiles new CodecProfile { Type = CodecType.Video, + Codec="h264", Conditions = new [] { + new ProfileCondition(ProfileConditionType.EqualsAny, ProfileConditionValue.VideoProfile, "baseline|constrained baseline"), new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, @@ -120,10 +122,27 @@ namespace MediaBrowser.Dlna.Profiles new CodecProfile { Type = CodecType.Video, - Codec="h264", Conditions = new [] { - new ProfileCondition(ProfileConditionType.EqualsAny, ProfileConditionValue.VideoProfile, "baseline|constrained baseline") + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Width, + Value = "1920" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Height, + Value = "1080" + }, + new ProfileCondition + { + Condition = ProfileConditionType.NotEquals, + Property = ProfileConditionValue.IsAnamorphic, + Value = "true", + IsRequired = false + } } }, diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs index 6f175ccd6..46549040f 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs @@ -209,6 +209,7 @@ namespace MediaBrowser.Dlna.Profiles new CodecProfile { Type = CodecType.Video, + Codec = "h264", Conditions = new [] { new ProfileCondition @@ -222,16 +223,7 @@ namespace MediaBrowser.Dlna.Profiles Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" - } - } - }, - - new CodecProfile - { - Type = CodecType.Video, - Codec = "h264", - Conditions = new [] - { + }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, @@ -259,6 +251,18 @@ namespace MediaBrowser.Dlna.Profiles Codec = "mpeg2video", Conditions = new [] { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Width, + Value = "1920" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Height, + Value = "1080" + }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, @@ -274,6 +278,26 @@ namespace MediaBrowser.Dlna.Profiles } }, + new CodecProfile + { + Type = CodecType.Video, + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Width, + Value = "1920" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Height, + Value = "1080" + } + } + }, + new CodecProfile { Type = CodecType.VideoAudio, diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs index 32cf8b554..d9891e87b 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs @@ -226,6 +226,7 @@ namespace MediaBrowser.Dlna.Profiles new CodecProfile { Type = CodecType.Video, + Codec = "h264", Conditions = new [] { new ProfileCondition @@ -239,16 +240,7 @@ namespace MediaBrowser.Dlna.Profiles Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" - } - } - }, - - new CodecProfile - { - Type = CodecType.Video, - Codec = "h264", - Conditions = new [] - { + }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, @@ -276,6 +268,18 @@ namespace MediaBrowser.Dlna.Profiles Codec = "mpeg2video", Conditions = new [] { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Width, + Value = "1920" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Height, + Value = "1080" + }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, @@ -291,6 +295,26 @@ namespace MediaBrowser.Dlna.Profiles } }, + new CodecProfile + { + Type = CodecType.Video, + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Width, + Value = "1920" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Height, + Value = "1080" + } + } + }, + new CodecProfile { Type = CodecType.VideoAudio, diff --git a/MediaBrowser.Dlna/Profiles/WindowsMediaCenterProfile.cs b/MediaBrowser.Dlna/Profiles/WindowsMediaCenterProfile.cs deleted file mode 100644 index a318b193b..000000000 --- a/MediaBrowser.Dlna/Profiles/WindowsMediaCenterProfile.cs +++ /dev/null @@ -1,274 +0,0 @@ -using System.Xml.Serialization; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Dlna.Profiles; - -namespace MediaBrowser.Dlna.Profiles -{ - [XmlRoot("Profile")] - public class WindowsMediaCenterProfile : DefaultProfile - { - public WindowsMediaCenterProfile() - { - Name = "Windows Media Center"; - - TranscodingProfiles = new[] - { - new TranscodingProfile - { - Container = "mp3", - AudioCodec = "mp3", - Type = DlnaProfileType.Audio - }, - new TranscodingProfile - { - Container = "asf", - VideoCodec = "msmpeg4", - AudioCodec = "wmav2", - Type = DlnaProfileType.Video - } - }; - - DirectPlayProfiles = new[] - { - new DirectPlayProfile - { - Container = "avi", - VideoCodec = "mpeg4", - AudioCodec = "ac3,mp3", - Type = DlnaProfileType.Video - }, - new DirectPlayProfile - { - Container = "avi", - VideoCodec = "h264", - AudioCodec = "aac", - Type = DlnaProfileType.Video - }, - new DirectPlayProfile - { - Container = "mp4,mov", - VideoCodec = "h264,mpeg4", - AudioCodec = "aac,ac3", - Type = DlnaProfileType.Video - }, - new DirectPlayProfile - { - Container = "asf", - VideoCodec = "wmv2,wmv3,vc1", - AudioCodec = "wmav2,wmapro", - Type = DlnaProfileType.Video - }, - new DirectPlayProfile - { - Container = "asf", - AudioCodec = "wmav2,wmapro,wmavoice", - Type = DlnaProfileType.Audio - }, - new DirectPlayProfile - { - Container = "mp3", - AudioCodec = "mp3", - Type = DlnaProfileType.Audio - }, - new DirectPlayProfile - { - Container = "jpeg", - Type = DlnaProfileType.Photo - } - }; - - ResponseProfiles = new[] - { - new ResponseProfile - { - Container = "avi", - MimeType = "video/avi", - Type = DlnaProfileType.Video - } - }; - - ContainerProfiles = new[] - { - new ContainerProfile - { - Type = DlnaProfileType.Video, - Container = "mp4,mov", - - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.Equals, - Property = ProfileConditionValue.Has64BitOffsets, - Value = "false", - IsRequired = false - } - } - } - }; - - CodecProfiles = new[] - { - new CodecProfile - { - Type = CodecType.Video, - Codec = "mpeg4", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Width, - Value = "1280" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Height, - Value = "720" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoFramerate, - Value = "30", - IsRequired = false - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoBitrate, - Value = "5120000", - IsRequired = false - } - } - }, - - new CodecProfile - { - Type = CodecType.Video, - Codec = "h264", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Width, - Value = "1920" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Height, - Value = "1080" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoLevel, - Value = "41", - IsRequired = false - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoBitrate, - Value = "10240000", - IsRequired = false - } - } - }, - - new CodecProfile - { - Type = CodecType.Video, - Codec = "wmv2,wmv3,vc1", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Width, - Value = "1920" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Height, - Value = "1080" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoFramerate, - Value = "30", - IsRequired = false - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoBitrate, - Value = "15360000", - IsRequired = false - } - } - }, - - new CodecProfile - { - Type = CodecType.VideoAudio, - Codec = "ac3", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.AudioChannels, - Value = "6", - IsRequired = false - } - } - }, - - new CodecProfile - { - Type = CodecType.VideoAudio, - Codec = "wmav2,wmapro", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.AudioChannels, - Value = "2", - IsRequired = false - } - } - }, - - new CodecProfile - { - Type = CodecType.VideoAudio, - Codec = "aac", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.AudioChannels, - Value = "2", - IsRequired = false - }, - new ProfileCondition - { - Condition = ProfileConditionType.Equals, - Property = ProfileConditionValue.AudioProfile, - Value = "lc", - IsRequired = false - } - } - } - }; - } - } -} diff --git a/MediaBrowser.Dlna/Profiles/XboxOneProfile.cs b/MediaBrowser.Dlna/Profiles/XboxOneProfile.cs index 4399462cf..3427d75f7 100644 --- a/MediaBrowser.Dlna/Profiles/XboxOneProfile.cs +++ b/MediaBrowser.Dlna/Profiles/XboxOneProfile.cs @@ -12,18 +12,27 @@ namespace MediaBrowser.Dlna.Profiles Name = "Xbox One"; TimelineOffsetSeconds = 40; - + Identification = new DeviceIdentification { - ModelName = "Xbox One", - FriendlyName = "Xbox-SystemOS", + FriendlyName = "XboxOne", Headers = new[] { - new HttpHeaderInfo {Name = "User-Agent", Value = "NSPlayer", Match = HeaderMatchType.Substring} + new HttpHeaderInfo + { + Name = "FriendlyName.DLNA.ORG", Value = "XboxOne", Match = HeaderMatchType.Substring + }, + new HttpHeaderInfo + { + Name = "User-Agent", Value = "NSPlayer/12", Match = HeaderMatchType.Substring + } } }; + var videoProfile = "high|main|baseline|constrained baseline"; + var videoLevel = "41"; + TranscodingProfiles = new[] { new TranscodingProfile @@ -43,8 +52,7 @@ namespace MediaBrowser.Dlna.Profiles Container = "ts", VideoCodec = "h264", AudioCodec = "aac", - Type = DlnaProfileType.Video, - EstimateContentLength = true + Type = DlnaProfileType.Video } }; @@ -129,6 +137,7 @@ namespace MediaBrowser.Dlna.Profiles new CodecProfile { Type = CodecType.Video, + Codec = "mpeg4", Conditions = new [] { new ProfileCondition @@ -144,16 +153,7 @@ namespace MediaBrowser.Dlna.Profiles Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false - } - } - }, - - new CodecProfile - { - Type = CodecType.Video, - Codec = "mpeg4", - Conditions = new [] - { + }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, @@ -189,6 +189,20 @@ namespace MediaBrowser.Dlna.Profiles Codec = "h264", Conditions = new [] { + new ProfileCondition + { + Condition = ProfileConditionType.NotEquals, + Property = ProfileConditionValue.IsAnamorphic, + Value = "true", + IsRequired = false + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoBitDepth, + Value = "8", + IsRequired = false + }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, @@ -200,6 +214,20 @@ namespace MediaBrowser.Dlna.Profiles Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoLevel, + Value = videoLevel, + IsRequired = false + }, + new ProfileCondition + { + Condition = ProfileConditionType.EqualsAny, + Property = ProfileConditionValue.VideoProfile, + Value = videoProfile, + IsRequired = false } } }, @@ -210,6 +238,20 @@ namespace MediaBrowser.Dlna.Profiles Codec = "wmv2,wmv3,vc1", Conditions = new [] { + new ProfileCondition + { + Condition = ProfileConditionType.NotEquals, + Property = ProfileConditionValue.IsAnamorphic, + Value = "true", + IsRequired = false + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoBitDepth, + Value = "8", + IsRequired = false + }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, @@ -239,6 +281,28 @@ namespace MediaBrowser.Dlna.Profiles } }, + new CodecProfile + { + Type = CodecType.Video, + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.NotEquals, + Property = ProfileConditionValue.IsAnamorphic, + Value = "true", + IsRequired = false + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoBitDepth, + Value = "8", + IsRequired = false + } + } + }, + new CodecProfile { Type = CodecType.VideoAudio, @@ -278,7 +342,7 @@ namespace MediaBrowser.Dlna.Profiles } } }; - + ResponseProfiles = new[] { new ResponseProfile diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index d7ad1ac30..21f2b1ad5 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -49,7 +49,7 @@ - + @@ -58,7 +58,7 @@ - + diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml index 8470f601a..2df2da98b 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -44,16 +44,19 @@ - + + - + - + + + diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml index ba993ca3e..19cb5670a 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -58,14 +58,10 @@ - + - - - - @@ -73,10 +69,18 @@ + + + + + + + + diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 271cf1132..78c99d366 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -61,14 +61,10 @@ - + - - - - @@ -76,10 +72,18 @@ + + + + + + + + diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml index 2595ffbdf..d22356646 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml @@ -2,10 +2,10 @@ Xbox One - Xbox-SystemOS - Xbox One + XboxOne - + + Emby @@ -48,7 +48,7 @@ - + @@ -58,14 +58,10 @@ - + - - - - @@ -74,18 +70,30 @@ + + + + + + + + + + + + diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index f6ff79b11..b062bc240 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -102,7 +102,7 @@ namespace MediaBrowser.Model.Dlna } List list = new List(); - foreach (NameValuePair pair in BuildParams(this, accessToken)) + foreach (NameValuePair pair in BuildParams(this, accessToken, false)) { if (string.IsNullOrEmpty(pair.Value)) { @@ -173,7 +173,7 @@ namespace MediaBrowser.Model.Dlna { List list = new List(); - foreach (NameValuePair pair in BuildParams(item, accessToken)) + foreach (NameValuePair pair in BuildParams(item, accessToken, true)) { list.Add(pair.Value); } @@ -181,7 +181,7 @@ namespace MediaBrowser.Model.Dlna return string.Format("Params={0}", string.Join(";", list.ToArray())); } - private static List BuildParams(StreamInfo item, string accessToken) + private static List BuildParams(StreamInfo item, string accessToken, bool isDlna) { List list = new List(); @@ -211,7 +211,17 @@ namespace MediaBrowser.Model.Dlna list.Add(new NameValuePair("Level", item.VideoLevel.HasValue ? StringHelper.ToStringCultureInvariant(item.VideoLevel.Value) : string.Empty)); - list.Add(new NameValuePair("ClientTime", item.IsDirectStream ? string.Empty : DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture))); + if (isDlna) + { + // The player may see it as separate resources due to url differences + // And then try to request more than one at playback + list.Add(new NameValuePair("ClientTime", string.Empty)); + } + else + { + list.Add(new NameValuePair("ClientTime", item.IsDirectStream ? string.Empty : DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture))); + } + list.Add(new NameValuePair("MaxRefFrames", item.MaxRefFrames.HasValue ? StringHelper.ToStringCultureInvariant(item.MaxRefFrames.Value) : string.Empty)); list.Add(new NameValuePair("MaxVideoBitDepth", item.MaxVideoBitDepth.HasValue ? StringHelper.ToStringCultureInvariant(item.MaxVideoBitDepth.Value) : string.Empty)); list.Add(new NameValuePair("Profile", item.VideoProfile ?? string.Empty)); diff --git a/MediaBrowser.Model/Dto/UserItemDataDto.cs b/MediaBrowser.Model/Dto/UserItemDataDto.cs index 6ee9f1916..ce0c8fa99 100644 --- a/MediaBrowser.Model/Dto/UserItemDataDto.cs +++ b/MediaBrowser.Model/Dto/UserItemDataDto.cs @@ -69,6 +69,12 @@ namespace MediaBrowser.Model.Dto /// The key. public string Key { get; set; } + /// + /// Gets or sets the item identifier. + /// + /// The item identifier. + public string ItemId { get; set; } + public event PropertyChangedEventHandler PropertyChanged; } } diff --git a/MediaBrowser.Model/Session/ClientCapabilities.cs b/MediaBrowser.Model/Session/ClientCapabilities.cs index 019eb3841..f00b14545 100644 --- a/MediaBrowser.Model/Session/ClientCapabilities.cs +++ b/MediaBrowser.Model/Session/ClientCapabilities.cs @@ -21,8 +21,8 @@ namespace MediaBrowser.Model.Session public DeviceProfile DeviceProfile { get; set; } public List SupportedLiveMediaTypes { get; set; } - public string Url { get; set; } - public string ImageUrl { get; set; } + public string AppStoreUrl { get; set; } + public string IconUrl { get; set; } public ClientCapabilities() { diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 62def8b8b..3cfecdeaf 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -141,7 +141,6 @@ namespace MediaBrowser.Providers.Manager updateType = updateType | result.UpdateType; refreshResult.AddStatus(result.Status, result.ErrorMessage); refreshResult.SetDateLastMetadataRefresh(DateTime.UtcNow); - refreshResult.AddMetadataProvidersRefreshed(result.Providers); MergeIdentities(itemOfType, id); } @@ -159,7 +158,6 @@ namespace MediaBrowser.Providers.Manager updateType = updateType | result.UpdateType; refreshResult.AddStatus(result.Status, result.ErrorMessage); refreshResult.SetDateLastImagesRefresh(DateTime.UtcNow); - refreshResult.AddImageProvidersRefreshed(result.Providers); } } diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index c644da0b8..de1a4c6f9 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -10,6 +10,7 @@ using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Net; using MediaBrowser.Model.Providers; using System; using System.Collections.Generic; @@ -190,6 +191,27 @@ namespace MediaBrowser.Providers.TV /// The cancellation token. /// Task. internal async Task DownloadSeriesZip(string seriesId, string seriesDataPath, long? lastTvDbUpdateTime, string preferredMetadataLanguage, CancellationToken cancellationToken) + { + try + { + await DownloadSeriesZip(seriesId, seriesDataPath, lastTvDbUpdateTime, preferredMetadataLanguage, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false); + return; + } + catch (HttpException ex) + { + if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound) + { + throw; + } + } + + if (!string.Equals(preferredMetadataLanguage, "en", StringComparison.OrdinalIgnoreCase)) + { + await DownloadSeriesZip(seriesId, seriesDataPath, lastTvDbUpdateTime, "en", preferredMetadataLanguage, cancellationToken).ConfigureAwait(false); + } + } + + private async Task DownloadSeriesZip(string seriesId, string seriesDataPath, long? lastTvDbUpdateTime, string preferredMetadataLanguage, string saveAsMetadataLanguage, CancellationToken cancellationToken) { var url = string.Format(SeriesGetZip, TVUtils.TvdbApiKey, seriesId, preferredMetadataLanguage); @@ -221,7 +243,7 @@ namespace MediaBrowser.Providers.TV await SanitizeXmlFile(file).ConfigureAwait(false); } - await ExtractEpisodes(seriesDataPath, Path.Combine(seriesDataPath, preferredMetadataLanguage + ".xml"), lastTvDbUpdateTime).ConfigureAwait(false); + await ExtractEpisodes(seriesDataPath, Path.Combine(seriesDataPath, saveAsMetadataLanguage + ".xml"), lastTvDbUpdateTime).ConfigureAwait(false); } public TvdbOptions GetTvDbOptions() diff --git a/MediaBrowser.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs index ccd427a47..008363ca4 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs @@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints } keys.Add(e.Item); - + var baseItem = e.Item as BaseItem; // Go up one level for indicators @@ -117,7 +117,12 @@ namespace MediaBrowser.Server.Implementations.EntryPoints var dtoList = pair.Value .DistinctBy(i => i.Id) - .Select(i => _userDataManager.GetUserDataDto(i, user)) + .Select(i => + { + var dto = _userDataManager.GetUserDataDto(i, user); + dto.ItemId = i.Id.ToString("N"); + return dto; + }) .ToList(); var info = new UserDataChangeInfo diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 8285fb7e5..313985d9d 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1637,6 +1637,12 @@ namespace MediaBrowser.Server.Implementations.Library refresh = true; } + if (!string.Equals(viewType, item.ViewType, StringComparison.OrdinalIgnoreCase)) + { + item.ViewType = viewType; + await item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false); + } + if (!refresh && item != null) { refresh = (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 24; diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index d5d0af74c..a21b19e04 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -209,7 +209,7 @@ namespace MediaBrowser.Server.Implementations.Library var enableRichView = !user.Configuration.PlainFolderViews.Contains(parentId.ToString("N"), StringComparer.OrdinalIgnoreCase); - if (_config.Configuration.EnableUserSpecificUserViews) + if (_config.Configuration.EnableUserSpecificUserViews || !enableRichView) { viewType = enableRichView ? viewType : null; var view = await _libraryManager.GetNamedView(user, name, viewType, sortName, cancellationToken).ConfigureAwait(false); @@ -222,7 +222,6 @@ namespace MediaBrowser.Server.Implementations.Library return view; } - viewType = enableRichView ? viewType : CollectionType.Folders; return await _libraryManager.GetNamedView(user, name, viewType, sortName, cancellationToken).ConfigureAwait(false); } else @@ -235,6 +234,7 @@ namespace MediaBrowser.Server.Implementations.Library public Task GetUserView(Guid parentId, string name, string viewType, bool enableRichView, string sortName, User user, CancellationToken cancellationToken) { + viewType = enableRichView ? viewType : null; return _libraryManager.GetNamedView(user, name, parentId.ToString("N"), viewType, sortName, cancellationToken); } diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 5791da1ea..51f23984a 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1002,8 +1002,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv List timerList; if (!timers.TryGetValue(program.ServiceName, out timerList)) { - var tempTimers = await GetService(program.ServiceName).GetTimersAsync(cancellationToken).ConfigureAwait(false); - timers[program.ServiceName] = timerList = tempTimers.ToList(); + try + { + var tempTimers = await GetService(program.ServiceName).GetTimersAsync(cancellationToken).ConfigureAwait(false); + timers[program.ServiceName] = timerList = tempTimers.ToList(); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting timer infos", ex); + timers[program.ServiceName] = timerList = new List(); + } } var timer = timerList.FirstOrDefault(i => string.Equals(i.ProgramId, program.ExternalId, StringComparison.OrdinalIgnoreCase)); diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json index 21e9d4188..f6d81354f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json @@ -40,7 +40,7 @@ "TitleLiveTV": "TV en Vivo", "TitleSync": "Sinc", "ButtonDonate": "Donar", - "HeaderMyMedia": "My Media", + "HeaderMyMedia": "Mis Medios", "TitleNotifications": "Notificaciones", "ErrorLaunchingChromecast": "Hubo un error iniciando chromecast. Por favor aseg\u00farate de que tu dispositivo este conectado a tu red inalambrica", "MessageErrorLoadingSupporterInfo": "Se present\u00f3 un error al cargar la informaci\u00f3n del aficionado. Por favor int\u00e9ntelo m\u00e1s tarde.", @@ -143,7 +143,7 @@ "ButtonPlay": "Reproducir", "ButtonEdit": "Editar", "ButtonQueue": "A cola", - "ButtonPlayTrailer": "Reproducir avance", + "ButtonPlayTrailer": "Reproducir trailer", "ButtonPlaylist": "Lista de Reprod.", "ButtonPreviousTrack": "Pista Anterior", "LabelEnabled": "Habilitado", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json index 12ad2a595..2e4c48473 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json @@ -40,7 +40,7 @@ "TitleLiveTV": "TV en direct", "TitleSync": "Sync.", "ButtonDonate": "Faire un don", - "HeaderMyMedia": "My Media", + "HeaderMyMedia": "Mes medias", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "Une erreur a \u00e9t\u00e9 rencontr\u00e9e lors du lancement de Chromecast. Veuillez vous assurer que votre appareil est bien connect\u00e9 \u00e0 votre r\u00e9seau sans-fil.", "MessageErrorLoadingSupporterInfo": "Il y a eu une erreur lors du chargement des informations de supporter. Veuillez r\u00e9essayer plus tard.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json index 8ccad5645..1c6a166b2 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json @@ -44,9 +44,9 @@ "TitleNotifications": "Notifiche", "ErrorLaunchingChromecast": "Si \u00e8 verificato un errore all'avvio di chromecast. Assicurati che il tuo dispositivo sia connesso alla rete wireless.", "MessageErrorLoadingSupporterInfo": "Si \u00e8 verificato un errore caricando le informazioni sui supporter. Si prega di riprovare pi\u00f9 tardi.", - "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", + "MessageLinkYourSupporterKey": "Collega il tuo codice Supporter con al massimo {0} membri di Emby per accedere liberamente alle seguenti app:", "HeaderConfirmRemoveUser": "Cancellazione utente", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "Benvenuti nel controllo remoto. Scorri verso il basso ovunque su questa schermata per tornare da dove sei venuto.", "MessageConfirmRemoveConnectSupporter": "Sei sicuro di voler rimuovere da questo utente i benefici aggiuntivi da supporter?", "ValueTimeLimitSingleHour": "Tempo limite: 1 ora", "ValueTimeLimitMultiHour": "Tempo limite: {0} ore", @@ -100,7 +100,7 @@ "HeaderWelcomeToProjectWebClient": "Benvenuto nel client web Emby", "ButtonTakeTheTour": "Fai una visita", "HeaderWelcomeBack": "Ben tornato!", - "TitlePlugins": "Plugins", + "TitlePlugins": "Plugin", "ButtonTakeTheTourToSeeWhatsNew": "Fai un tour per vedere cosa \u00e8 cambiato", "MessageNoSyncJobsFound": "Nessuna sincronizzazione pianificata. Creane una utilizzando i pulsanti sull'interfaccia web", "HeaderLibraryAccess": "Accesso libreria", @@ -398,7 +398,7 @@ "TabMetadata": "Metadati", "TabDLNA": "DLNA", "TabLiveTV": "Tv indiretta", - "TabAutoOrganize": "Organizza Automaticamente", + "TabAutoOrganize": "Organizza Autom.", "TabPlugins": "Plugins", "TabAdvanced": "Avanzato", "TabHelp": "Aiuto", @@ -476,7 +476,7 @@ "PersonTypePerson": "Persona", "LabelTitleDisplayOrder": "Titolo mostrato in ordine:", "OptionSortName": "Nome ordinato", - "OptionReleaseDate": "Data di uscita", + "OptionReleaseDate": "Data di rilascio", "LabelSeasonNumber": "Numero Stagione:", "LabelDiscNumber": "Disco numero", "LabelParentNumber": "Numero superiore", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json index facd1f79d..7e9b1811d 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json @@ -40,7 +40,7 @@ "TitleLiveTV": "TV ao Vivo", "TitleSync": "Sinc", "ButtonDonate": "Doar", - "HeaderMyMedia": "My Media", + "HeaderMyMedia": "Minha M\u00eddia", "TitleNotifications": "Notifica\u00e7\u00f5es", "ErrorLaunchingChromecast": "Ocorreu um erro ao iniciar o chromecast. Por favor verifique se seu dispositivo est\u00e1 conectado \u00e0 sua rede sem fio.", "MessageErrorLoadingSupporterInfo": "Ocorreu um erro ao carregar a informa\u00e7\u00e3o do colaborador. Por favor, tente novamente mais tarde.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ar.json b/MediaBrowser.Server.Implementations/Localization/Server/ar.json index 38179123b..d19090ddd 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json b/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json index a40e1520c..d0cd8cadf 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ca.json b/MediaBrowser.Server.Implementations/Localization/Server/ca.json index 7845573fa..3661325a2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/cs.json b/MediaBrowser.Server.Implementations/Localization/Server/cs.json index da5f5c9c4..11372143c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/da.json b/MediaBrowser.Server.Implementations/Localization/Server/da.json index 82bf80c7f..4251b2d70 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/da.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/de.json b/MediaBrowser.Server.Implementations/Localization/Server/de.json index 0e560651a..92e4e7f10 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/de.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favoriten", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Neueste", + "ViewTypeMusicPlaylists": "Wiedergabelisten", "ViewTypeMusicAlbums": "Alben", "ViewTypeMusicAlbumArtists": "Album-K\u00fcnstler", "HeaderOtherDisplaySettings": "Anzeige Einstellungen", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "Nein danke, das mache ich sp\u00e4ter.", "MyPreferencesWelcomeMessage1": "Wir pr\u00e4sentieren Ihnen Ihre Bibliothek in einer Art, wie wir denken, dass es Ihnen gefallen d\u00fcrfte. Die Darstellung und Gruppierung des Inhaltes kann jederzeit in Ihren Einstellungen angepasst werden. Ihre Einstellungen werden auf alle Empy Apps \u00fcbertragen.", "MyPreferencesWelcomeMessage2": "M\u00f6chten Sie Ihre Einstellungen nun festlegen?", - "ToAccessPreferencesHelp": "Um Ihre Einstellungen sp\u00e4ter zu \u00e4ndern, klicken Sie ihr Benutzer-Icon im oberen rechten Bereich oder w\u00e4hlen Sie \"Meine Einstellungen\"." + "ToAccessPreferencesHelp": "Um Ihre Einstellungen sp\u00e4ter zu \u00e4ndern, klicken Sie ihr Benutzer-Icon im oberen rechten Bereich oder w\u00e4hlen Sie \"Meine Einstellungen\".", + "HeaderViewStyles": "Zeige Stiele", + "LabelSelectViewStyles": "Aktiviere erweiterte Darstellungen f\u00fcr:", + "LabelSelectViewStylesHelp": "Wenn aktiviert werden Darstellungen von Kategorien mit Medieninformationen wie Empfehlungen, k\u00fcrzlich hinzugef\u00fcgt, Genres und weitere, angereichert. Wenn deaktiviert werden diese nur als simple Verzeichnisse dargestellt." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/el.json b/MediaBrowser.Server.Implementations/Localization/Server/el.json index 2522765ca..e23ad5b8e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/el.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json index 22f1f6c32..60eadcd17 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favourites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json index 9232bafa5..038b9b8e1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es.json b/MediaBrowser.Server.Implementations/Localization/Server/es.json index 4664c9489..6e2bf2efe 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json @@ -404,8 +404,8 @@ "ButtonRefresh": "Refrescar", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Prioridad", - "OptionRecordOnAllChannels": "Grabar programa en cualquier canal", - "OptionRecordAnytime": "Grabar programa a cualquier hora", + "OptionRecordOnAllChannels": "Grabar en cualquier canal", + "OptionRecordAnytime": "Grabar a cualquier hora", "OptionRecordOnlyNewEpisodes": "Grabar s\u00f3lo nuevos episodios", "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "D\u00edas", @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Configuraci\u00f3n de pantalla", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json index f77d42978..d78da7f54 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json @@ -407,7 +407,7 @@ "OptionRecordOnAllChannels": "Grabar en todos los canales", "OptionRecordAnytime": "Grabar en cualquier momento", "OptionRecordOnlyNewEpisodes": "Grabar s\u00f3lo nuevos episodios", - "HeaderRepeatingOptions": "Repeating Options", + "HeaderRepeatingOptions": "Opciones de repetici\u00f3n", "HeaderDays": "D\u00edas", "HeaderActiveRecordings": "Grabaciones Activas", "HeaderLatestRecordings": "Grabaciones Recientes", @@ -888,9 +888,9 @@ "LabelHomePageSection2": "Pagina de Inicio secci\u00f3n dos:", "LabelHomePageSection3": "Pagina de Inicio secci\u00f3n tres:", "LabelHomePageSection4": "Pagina de Inicio secci\u00f3n cuatro:", - "OptionMyMediaButtons": "My media (buttons)", - "OptionMyMedia": "My media", - "OptionMyMediaSmall": "My media (small)", + "OptionMyMediaButtons": "Mis medios (botones)", + "OptionMyMedia": "Mis medios", + "OptionMyMediaSmall": "Mis medios (peque\u00f1o)", "OptionResumablemedia": "Continuar", "OptionLatestMedia": "Medios recientes", "OptionLatestChannelMedia": "Elementos recientes de canales", @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favoritos", "ViewTypeMovieGenres": "G\u00e9neros", "ViewTypeMusicLatest": "Recientes", + "ViewTypeMusicPlaylists": "Listas", "ViewTypeMusicAlbums": "\u00c1lbumes", "ViewTypeMusicAlbumArtists": "Artistas del \u00c1lbum", "HeaderOtherDisplaySettings": "Configuraci\u00f3n de Pantalla", @@ -1405,13 +1406,16 @@ "LabelConversionCpuCoreLimitHelp": "L\u00edmitar el n\u00famero de n\u00facleos del CPI que ser\u00e1n utilizados durante la conversi\u00f3n de sincronizaci\u00f3n.", "OptionEnableFullSpeedConversion": "Habilitar conversi\u00f3n a m\u00e1xima velocidad", "OptionEnableFullSpeedConversionHelp": "Por defecto, la conversi\u00f3n es realizada a baja velocidad para minimizar el consumo de recursos.", - "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "HeaderPlaylists": "Listas", + "HeaderSelectDate": "Seleccionar fecha", + "HeaderWelcomeExclamation": "\u00a1Bienvenido!", + "HeaderMyPreferences": "Mi Configuraci\u00f3n", + "ButtonMyPreferencesWelcomeYes": "Si, me gustar\u00eda ajustar mi configuraci\u00f3n ahora.", + "ButtonMyPreferencesWelcomeNo": "No gracias, lo har\u00e9 luego.", + "MyPreferencesWelcomeMessage1": "Configuramos la apariencia de tu biblioteca de una forma que pensamos que te gustar\u00eda. Puedes cambiar la apariencia y agrupaci\u00f3n del contenido cuando quieras en tu configuraci\u00f3n. Tu configuraci\u00f3n se aplicar\u00e1 a todas las aplicaciones de Emby.", + "MyPreferencesWelcomeMessage2": "\u00bfTe gustar\u00eda ajustar tu configuraci\u00f3n ahora?", + "ToAccessPreferencesHelp": "Para acceder a tu configuraci\u00f3n luego, haz clic en tu icono de usuario en la esquina superior derecha y selecciona Mi Configuraci\u00f3n.", + "HeaderViewStyles": "Ver Estilos", + "LabelSelectViewStyles": "Activar presentaciones completas para:", + "LabelSelectViewStylesHelp": "Si se activa, las diferentes vistas usar\u00e1n metada para mostrar categor\u00edas como Sugerencias, \u00daltimos, G\u00e9neros, y m\u00e1s. Si est\u00e1 desactivado, se mostrar\u00e1n como carpetas comunes." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fi.json b/MediaBrowser.Server.Implementations/Localization/Server/fi.json index 1265b3c4a..3b43dbb1f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fi.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json index cd2d2571e..d93fe51ce 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -404,10 +404,10 @@ "ButtonRefresh": "Actualiser", "ButtonAdvancedRefresh": "Mise \u00e0 jour avanc\u00e9e", "OptionPriority": "Priorit\u00e9", - "OptionRecordOnAllChannels": "Enregistrer le programme sur toutes les cha\u00eenes", - "OptionRecordAnytime": "Enregistrer le programme \u00e0 n'importe quelle heure\/journ\u00e9e", + "OptionRecordOnAllChannels": "Enregistrer sur toutes les cha\u00eenes", + "OptionRecordAnytime": "Enregistrer \u00e0 n'importe quelle heure\/journ\u00e9e", "OptionRecordOnlyNewEpisodes": "Enregistrer seulement les nouveaux \u00e9pisodes", - "HeaderRepeatingOptions": "Repeating Options", + "HeaderRepeatingOptions": "Options de r\u00e9p\u00e9tition", "HeaderDays": "Jours", "HeaderActiveRecordings": "Enregistrements actifs", "HeaderLatestRecordings": "Derniers enregistrements", @@ -551,7 +551,7 @@ "LabelPublicHttpsPort": "Num\u00e9ro de port https public :", "LabelPublicHttpsPortHelp": "Le num\u00e9ro de port public \u00e0 mapper sur le port https local.", "LabelEnableHttps": "Renvoyer une url https en tant qu'adresse externe", - "LabelEnableHttpsHelp": "Activez cette option pour que le serveur renvoie une adresse https aux clients pour son adresse externe. Ceci pourrait faire planter les clients qui ne supportent pas encore l'https.", + "LabelEnableHttpsHelp": "Activez cette option pour que le serveur renvoie une adresse https aux clients pour son adresse externe.", "LabelHttpsPort": "Num\u00e9ro de port https local :", "LabelHttpsPortHelp": "Le port TCP que le serveur https d'Emby doit utiliser.", "LabelWebSocketPortNumber": "Num\u00e9ro de port \"Web socket\":", @@ -888,9 +888,9 @@ "LabelHomePageSection2": "Seconde section du portail :", "LabelHomePageSection3": "Troisi\u00e8me section du portail :", "LabelHomePageSection4": "Quatri\u00e8me section du portail:", - "OptionMyMediaButtons": "My media (buttons)", - "OptionMyMedia": "My media", - "OptionMyMediaSmall": "My media (small)", + "OptionMyMediaButtons": "Mes m\u00e9dias (boutons)", + "OptionMyMedia": "Mes m\u00e9dias", + "OptionMyMediaSmall": "Mes m\u00e9dias (petit)", "OptionResumablemedia": "Reprendre", "OptionLatestMedia": "Les plus r\u00e9cents", "OptionLatestChannelMedia": "Items de cha\u00eene les plus r\u00e9cents", @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favoris", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Dernier", + "ViewTypeMusicPlaylists": "Listes de lectures", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Artiste de l'album", "HeaderOtherDisplaySettings": "Param\u00e8tres d'affichage", @@ -1392,26 +1393,29 @@ "LabelShowLibraryTileNamesHelp": "D\u00e9termine si les noms doivent \u00eatre affich\u00e9s en dessous des affiches de la biblioth\u00e8que sur la page d'accueil", "OptionEnableTranscodingThrottle": "Activer le throttling", "OptionEnableTranscodingThrottleHelp": "Le throttling consiste \u00e0 ajuster automatiquement la fr\u00e9quence de transcodage afin de minimiser l'utilisation CPU pendant la lecture.", - "LabelUploadSpeedLimit": "D\u00e9bit max d'upload (mbps) :", + "LabelUploadSpeedLimit": "D\u00e9bit max d'upload (Mbps) :", "OptionAllowSyncTranscoding": "Autoriser la synchronisation quand elle n\u00e9cessite un transcodage", "HeaderPlayback": "Lecture du m\u00e9dia", "OptionAllowAudioPlaybackTranscoding": "Autoriser la lecture de musique n\u00e9cessitant un transcodage", "OptionAllowVideoPlaybackTranscoding": "Autoriser la lecture de vid\u00e9os n\u00e9cessitant un transcodage", "OptionAllowMediaPlaybackTranscodingHelp": "Les utilisateurs recevront un message d'erreur compr\u00e9hensible lorsque le contenu n'est pas lisible en raison des restrictions appliqu\u00e9es.", "TabStreaming": "Streaming", - "LabelRemoteClientBitrateLimit": "Limite de d\u00e9bit du client distant (mbps):", + "LabelRemoteClientBitrateLimit": "Limite de d\u00e9bit du client distant (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Une limite de d\u00e9bit optionnelle du streaming pour tous les clients distant. Utile pour \u00e9viter que les clients demandent une bande passante sup\u00e9rieure \u00e0 ce que votre connexion peu fournir.", "LabelConversionCpuCoreLimit": "Limite de c\u0153ur CPU:", "LabelConversionCpuCoreLimitHelp": "Limite le nombre de c\u0153ur du processeur utilis\u00e9s pendant le transcodage.", "OptionEnableFullSpeedConversion": "Autoriser le transcodage rapide", - "OptionEnableFullSpeedConversionHelp": "Par d\u00e9faut, le transcodage est r\u00e9alis\u00e9 de mani\u00e8re lente pour r\u00e9duire la consommation de ressources.", - "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "OptionEnableFullSpeedConversionHelp": "Par d\u00e9faut, le transcodage est r\u00e9alis\u00e9 de mani\u00e8re lente pour minimiser la consommation de ressources.", + "HeaderPlaylists": "Listes de lecture", + "HeaderSelectDate": "S\u00e9lectionnez la date", + "HeaderWelcomeExclamation": "Bienvenue !", + "HeaderMyPreferences": "Mes pr\u00e9f\u00e9rences", + "ButtonMyPreferencesWelcomeYes": "Oui, je voudrais d\u00e9finir mes pr\u00e9f\u00e9rences maintenant.", + "ButtonMyPreferencesWelcomeNo": "Non merci, je le ferai plus tard.", + "MyPreferencesWelcomeMessage1": "Nous avons pr\u00e9sent\u00e9 votre biblioth\u00e8que d'une mani\u00e8re que nous pensons agr\u00e9able. L'apparence et les regroupements de contenus peuvent \u00eatre modifi\u00e9s \u00e0 tout moment en ajustant vos pr\u00e9f\u00e9rences. Vos pr\u00e9f\u00e9rences s'appliqueront \u00e0 toutes vos applications Emby.", + "MyPreferencesWelcomeMessage2": "Voulez-vous d\u00e9finir vos pr\u00e9f\u00e9rences maintenant ?", + "ToAccessPreferencesHelp": "Pour acc\u00e9der plus tard \u00e0 vos pr\u00e9f\u00e9rences, cliquez sur l'ic\u00f4ne utilisateur dans le bandeau en haut \u00e0 droite et s\u00e9lectionnez Mes pr\u00e9f\u00e9rences.", + "HeaderViewStyles": "Styles d'affichage", + "LabelSelectViewStyles": "Activer les pr\u00e9sentations enrichies", + "LabelSelectViewStylesHelp": "Si vous activez cette option, l'affichage utilisera les m\u00e9tadonn\u00e9es pour ajouter des cat\u00e9gories telles que Suggestions, Derni\u00e8res, Genres, ... Si vous d\u00e9sactivez cette option, l'affichage sera simplement bas\u00e9 sur les dossiers." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/he.json b/MediaBrowser.Server.Implementations/Localization/Server/he.json index dd8dd35e2..4d9c2f3ee 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/he.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/hr.json b/MediaBrowser.Server.Implementations/Localization/Server/hr.json index a22df842b..dc9f6b563 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/hr.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/it.json b/MediaBrowser.Server.Implementations/Localization/Server/it.json index 137a45965..5d3beeca1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/it.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -21,12 +21,12 @@ "ButtonQuickStartGuide": "Guida rapida", "LabelYourFirstName": "Nome", "MoreUsersCanBeAddedLater": "Puoi aggiungere altri utenti in un secondo momento all'interno del pannello di configurazione", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "UserProfilesIntro": "Emby include il supporto integrato per i profili utente, che permette ad ogni utente di avere le proprie impostazioni di visualizzazione, stato di riproduzione e parental control.", "LabelWindowsService": "Servizio Windows", "AWindowsServiceHasBeenInstalled": "Servizio Windows Installato", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro1": "Il Server Emby normalmente viene eseguito come un'applicazione del desktop con un'icona sulla barra in basso a destra, ma in alternativa, se si preferisce farlo funzionare come servizio in background, pu\u00f2 essere avviato dal pannello di controllo dei servizi di Windows.", "WindowsServiceIntro2": "Se si utilizza il servizio di Windows, si ricorda che non pu\u00f2 essere eseguito allo stesso tempo con l'icona di sistema, quindi devi chiudere l'applicazione al fine di eseguire il servizio. Il servizio dovr\u00e0 anche essere configurato con privilegi amministrativi tramite il pannello di controllo. Si prega di notare che in questo momento il servizio non \u00e8 in grado di Autoaggiornarsi, quindi le nuove versioni richiedono l'interazione manuale", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "WizardCompleted": "Questo \u00e8 tutto ci\u00f2 che serve per ora. Emby ha iniziato a raccogliere informazioni sulla tua libreria di file multimediali. Scopri alcune delle nostre app, quindi clicca su Fine<\/b> per visualizzare il Pannello di controllo del server<\/b>", "LabelConfigureSettings": "Configura le impostazioni", "LabelEnableVideoImageExtraction": "Abilita estrazione immagine video", "VideoImageExtractionHelp": "Per i video che sono sprovvisti di immagini, e per i quali non siamo riusciti a trovare immagini su Internet. Questa opzione allungher\u00e0 il tempo di scansione della tua libreria ma si tradurr\u00e0 in una presentazione pi\u00f9 gradevole.", @@ -233,7 +233,7 @@ "ScheduledTasksTitle": "Operazioni Pianificate", "TabMyPlugins": "Plugin installati", "TabCatalog": "Catalogo", - "TitlePlugins": "Plugins", + "TitlePlugins": "Plugin", "HeaderAutomaticUpdates": "Aggiornamenti Automatici", "HeaderNowPlaying": "In Riproduzione", "HeaderLatestAlbums": "Ultimi Album", @@ -568,7 +568,7 @@ "LabelMinResumePercentageHelp": "I film Sono considerati non visti se fermati prima di questo tempo", "LabelMaxResumePercentageHelp": "I film sono considerati visti se fermati dopo questo tempo", "LabelMinResumeDurationHelp": "I film pi\u00f9 corti non saranno riprendibili", - "TitleAutoOrganize": "Organizza Automaticamente", + "TitleAutoOrganize": "Organizza Autom.", "TabActivityLog": "Registrazione eventi", "HeaderName": "Nome", "HeaderDate": "Data", @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Preferiti", "ViewTypeMovieGenres": "Generi", "ViewTypeMusicLatest": "Ultimi", + "ViewTypeMusicPlaylists": "Playlist", "ViewTypeMusicAlbums": "Album", "ViewTypeMusicAlbumArtists": "Album Artisti", "HeaderOtherDisplaySettings": "Impostazioni Video", @@ -973,7 +974,7 @@ "LabelProtocolInfo": "Info protocollo:", "LabelProtocolInfoHelp": "Il valore che verr\u00e0 utilizzato quando si risponde a richieste GetProtocolInfo dal dispositivo.", "TabNfo": "Nfo", - "HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", + "HeaderKodiMetadataHelp": "Emby include il supporto nativo per i file di metadati di tipo NFO. Per attivare o disattivare i metadati NFO, utilizza la scheda Avanzate per configurare le opzioni per i tuoi tipi di file multimediali.", "LabelKodiMetadataUser": "Sincronizza i dati utente a nfo di per:", "LabelKodiMetadataUserHelp": "Abilita questa opzione per mantenere i dati di orologio sincronizzati tra il Server Emby e i file NFO.", "LabelKodiMetadataDateFormat": "Data di uscita Formato:", @@ -1146,7 +1147,7 @@ "LabelEasyPinCode": "Codice Pin", "EasyPasswordHelp": "Il codice pin facile viene utilizzato per l'accesso offline con le app Emby supportate, e pu\u00f2 essere utilizzato anche per una facile accesso in rete.", "LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN.", - "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Se attivata, sarai in grado di utilizzare il tuo codice pin facile per accedere alle app di Emby all'interno della tua rete domestica. La tua password usuale sar\u00e0 necessaria solo per accedere alle app quando sei fuori casa. Se il codice PIN viene lasciato vuoto, non avrai bisogno di una password quando sei all'interno della tua rete domestica.", "HeaderPassword": "Password", "HeaderLocalAccess": "Accesso locale", "HeaderViewOrder": "Visualizza ordine", @@ -1255,7 +1256,7 @@ "LabelExtractChaptersDuringLibraryScanHelp": "Se abilitata, le immagini capitolo verranno estratti quando i video vengono importati durante la scansione della libreria. Se disabilitata verranno estratti durante le immagini dei capitoli programmati compito, permettendo la scansione biblioteca regolare per completare pi\u00f9 velocemente.", "LabelConnectGuestUserName": "Username di Emby o indirizzo email:", "LabelConnectUserName": "Username\/email di Emby:", - "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", + "LabelConnectUserNameHelp": "Collegare questo utente a un account Emby per consentire un facile accesso da qualsiasi app Emby senza dover conoscere l'indirizzo IP del server.", "ButtonLearnMoreAboutEmbyConnect": "Scopri di pi\u00f9 su Emby Connect", "LabelExternalPlayers": "Player esterni:", "LabelExternalPlayersHelp": "Pulsanti di visualizzazione di riprodurre contenuti in lettori esterni. Questo \u00e8 disponibile solo su dispositivi che supportano schemi URL, generalmente Android e iOS. Con i giocatori esterni vi \u00e8 generalmente alcun supporto per il controllo remoto o ripresa.", @@ -1389,9 +1390,9 @@ "HeaderUpcomingPrograms": "Programmi in arrivo", "ButtonMoreItems": "Pi\u00f9...", "LabelShowLibraryTileNames": "Mostra i nomi di file di libreria", - "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelShowLibraryTileNamesHelp": "Determina se le etichette vengono visualizzate sotto le locandine della libreria sulla home page", "OptionEnableTranscodingThrottle": "Abilita il throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "OptionEnableTranscodingThrottleHelp": "Il Throttling regola automaticamente la velocit\u00e0 di transcodifica per ridurre al minimo l'utilizzo della CPU del server durante la riproduzione.", "LabelUploadSpeedLimit": "Velocit\u00e0 limite di upload (Mbps)", "OptionAllowSyncTranscoding": "Abilita la sincronizzazione che necessita di transcodifica", "HeaderPlayback": "Riproduzione", @@ -1400,7 +1401,7 @@ "OptionAllowMediaPlaybackTranscodingHelp": "Gli utenti riceveranno messaggi esplicativi quando il contenuto non \u00e8 riproducibile a causa della policy.", "TabStreaming": "Streaming", "LabelRemoteClientBitrateLimit": "Bitrate limite del client remoto (Mbps):", - "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelRemoteClientBitrateLimitHelp": "Limite opzionale al bitrate dello streaming per tutti i client remoti. E' utile per evitare che i client richiedano un bitrate superiore a quello che la tua connessione \u00e8 in grado di gestire.", "LabelConversionCpuCoreLimit": "Limite della CPU:", "LabelConversionCpuCoreLimitHelp": "Limiita il numero di CPU da utilizzare durante l'operazione di sincronizzazione.", "OptionEnableFullSpeedConversion": "Abilita conversione a velocit\u00e0 piena", @@ -1411,7 +1412,10 @@ "HeaderMyPreferences": "Le miei preferenze", "ButtonMyPreferencesWelcomeYes": "Grazie, preferisco impostare le mie preferenze adesso", "ButtonMyPreferencesWelcomeNo": "No grazie, provveder\u00f2 in seguito.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage1": "Abbiamo presentato la tua libreria in un modo in cui pensiamo ti possa piacere. L'aspetto e il raggruppamento dei contenuti possono essere cambiati in qualsiasi momento modificando le preferenze. Le preferenze si applicano a tutte le app Emby.", "MyPreferencesWelcomeMessage2": "Desideri impostare le tue preferenze ora?", - "ToAccessPreferencesHelp": "Per accedere alle preferenze in un secondo tempo, fare clic sull'icona utente presente in alto a destra e seleziona Le Mie Preferenze." + "ToAccessPreferencesHelp": "Per accedere alle preferenze in un secondo tempo, fare clic sull'icona utente presente in alto a destra e seleziona Le Mie Preferenze.", + "HeaderViewStyles": "Stili Viste", + "LabelSelectViewStyles": "Abilita presentazioni arricchite per:", + "LabelSelectViewStylesHelp": "Se abilitato, le viste verranno create con i metadati per offrire categorie come Suggeriti, Recenti, Generi e altro. Se disabilitato, verranno mostrate come semplici cartelle." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/kk.json b/MediaBrowser.Server.Implementations/Localization/Server/kk.json index 6f939d79c..ddcbbfb7f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -115,7 +115,7 @@ "LabelSaveLocalMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u0443", "LabelSaveLocalMetadataHelp": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u0443\u044b \u043e\u043b\u0430\u0440\u0434\u044b \u0436\u0435\u04a3\u0456\u043b \u04e9\u04a3\u0434\u0435\u0439 \u0430\u043b\u0430\u0442\u044b\u043d \u043e\u0440\u044b\u043d\u0493\u0430 \u049b\u043e\u044f\u0434\u044b.", "LabelDownloadInternetMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443", - "LabelDownloadInternetMetadataHelp": "\u0422\u043e\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d Emby Server \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "LabelDownloadInternetMetadataHelp": "\u041c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u043a\u04e9\u0440\u043c\u0435\u043b\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d Emby Server \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", "TabPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", "TabPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", "TabLibraryAccess": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", "ViewTypeMovieGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", "ViewTypeMusicLatest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", + "ViewTypeMusicPlaylists": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440\u0456", "ViewTypeMusicAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", "ViewTypeMusicAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b", "HeaderOtherDisplaySettings": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "\u0416\u043e\u049b, \u0440\u0430\u0445\u043c\u0435\u0442, \u043c\u0435\u043d \u043e\u043d\u044b \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u0456\u0441\u0442\u0435\u0439\u043c\u0456\u043d.", "MyPreferencesWelcomeMessage1": "\u0421\u0456\u0437 \u049b\u0430\u043b\u0430\u0439 \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u0439\u0442\u044b\u043d\u044b\u043d \u043e\u0439\u043b\u0430\u0441\u0442\u044b\u0440\u044b\u043f \u0441\u0456\u0437\u0434\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437\u0434\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0442\u0456\u043c\u0456\u0437. \u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0456 \u0440\u0435\u0442\u0442\u0435\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u0435\u0437\u0435\u043d\u0434\u0456\u0440\u0443\u0456 \u043c\u0435\u043d \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443\u044b \u043a\u0435\u0437 \u043a\u0435\u043b\u0433\u0435\u043d \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u04e9\u0437\u0433\u0435\u0440\u0442\u0456\u043b\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d. \u0421\u0456\u0437\u0434\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437 \u0431\u0430\u0440\u043b\u044b\u049b Emby \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0434\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b.", "MyPreferencesWelcomeMessage2": "\u0421\u0456\u0437 \u0435\u043d\u0434\u0456 \u04e9\u0437 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d\u0456\u0437\u0434\u0456 \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?", - "ToAccessPreferencesHelp": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d, \u04af\u0441\u0442\u0456\u04a3\u0433\u0456 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u043c\u0435\u0441\u0456 \u043e\u04a3 \u0436\u0430\u0493\u044b\u043d\u0434\u0430\u0493\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u041c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437." + "ToAccessPreferencesHelp": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d, \u04af\u0441\u0442\u0456\u04a3\u0433\u0456 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u043c\u0435\u0441\u0456 \u043e\u04a3 \u0436\u0430\u0493\u044b\u043d\u0434\u0430\u0493\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u041c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", + "HeaderViewStyles": "\u0410\u0441\u043f\u0435\u043a\u0442 \u043c\u04d9\u043d\u0435\u0440\u043b\u0435\u0440\u0456", + "LabelSelectViewStyles": "\u041c\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u043a\u04e9\u0440\u043c\u0435\u043b\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443:", + "LabelSelectViewStylesHelp": "\u049a\u043e\u0441\u044b\u043b\u0441\u0430, \u043c\u04b1\u043d\u0434\u0430\u0439 \u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440, \u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456, \u0416\u0430\u043d\u0440\u043b\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u0434\u0430 \u0441\u0430\u043d\u0430\u0442\u0442\u0430\u0440\u044b\u043d \u04b1\u0441\u044b\u043d\u0443 \u04af\u0448\u0456\u043d \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u04b1\u0440\u044b\u043b\u0430\u0434\u044b. \u0410\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0441\u0430, \u043e\u043b\u0430\u0440 \u049b\u0430\u0440\u0430\u043f\u0430\u0439\u044b\u043c \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0434\u0456." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ko.json b/MediaBrowser.Server.Implementations/Localization/Server/ko.json index 240d075b9..aecd7bb81 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ms.json b/MediaBrowser.Server.Implementations/Localization/Server/ms.json index 705f9574f..c7dda67e6 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nb.json b/MediaBrowser.Server.Implementations/Localization/Server/nb.json index 7af6fd415..a4bf66e4d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json @@ -53,22 +53,22 @@ "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin kode:", "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", + "HeaderSync": "Synk.", "ButtonOk": "Ok", "ButtonCancel": "Avbryt", - "ButtonExit": "Exit", + "ButtonExit": "Avslutt", "ButtonNew": "Ny", "HeaderTV": "TV", "HeaderAudio": "Lyd", "HeaderVideo": "Video", "HeaderPaths": "Stier", "CategorySync": "Synk", - "TabPlaylist": "Playlist", + "TabPlaylist": "Spilleliste", "HeaderEasyPinCode": "Enkel PIN-kode", "HeaderGrownupsOnly": "Grown-ups Only!", "DividerOr": "-- eller --", "HeaderInstalledServices": "Installerte programtillegg", - "HeaderAvailableServices": "Available Services", + "HeaderAvailableServices": "Tilgjengelige tjenester", "MessageNoServicesInstalled": "No services are currently installed.", "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", @@ -109,7 +109,7 @@ "ReferToMediaLibraryWiki": "Se i wik for media-biblioteket.", "LabelCountry": "Land:", "LabelLanguage": "Spr\u00e5k:", - "LabelTimeLimitHours": "Time limit (hours):", + "LabelTimeLimitHours": "Tidsbegrensning (timer):", "ButtonJoinTheDevelopmentTeam": "Bli med i utvikler-teamet", "HeaderPreferredMetadataLanguage": "Foretrukket spr\u00e5k for metadata", "LabelSaveLocalMetadata": "Lagre cover og metadata i medie-mappene", @@ -295,7 +295,7 @@ "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", "SearchKnowledgeBase": "S\u00f8k kunnskapsbasen", "VisitTheCommunity": "Bes\u00f8k oss", - "VisitProjectWebsite": "Visit the Emby Web Site", + "VisitProjectWebsite": "Bes\u00f8k Emby Media", "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", "OptionHideUser": "Skjul brukere fra logginn-skjermen", "OptionHideUserFromLoginHelp": "Praktisk for private eller skjulte administratorer. Brukeren vil m\u00e5tte logge inn manuelt ved \u00e5 skrive inn brukernavn og passord.", @@ -551,7 +551,7 @@ "LabelPublicHttpsPort": "Offentlig HTTPS port:", "LabelPublicHttpsPortHelp": "Den offentlige porten som den lokale porten kobles til.", "LabelEnableHttps": "Oppgi HTTPS som ekstern adresse", - "LabelEnableHttpsHelp": "Hvis denne er aktivert vil serveren oppgi en HTTPS URL som sin eksterne adresse. Dette kan \u00f8delegge for klienter som enda ikke st\u00f8tter HTTPS.", + "LabelEnableHttpsHelp": "Hvis denne er aktivert vil serveren oppgi en HTTPS URL som sin eksterne adresse. Dette kan \u00f8delegge for klienter som enda ikke st\u00f8tter HTTPS", "LabelHttpsPort": "Lokal HTTPS port:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket portnummer:", @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favoritter", "ViewTypeMovieGenres": "Sjangere", "ViewTypeMusicLatest": "Siste", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albumer", "ViewTypeMusicAlbumArtists": "Album artister", "HeaderOtherDisplaySettings": "Visnings Innstillinger", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nl.json b/MediaBrowser.Server.Implementations/Localization/Server/nl.json index 5328b7aa3..f66ff1737 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorieten", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Nieuwste", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album artiesten", "HeaderOtherDisplaySettings": "Beeld instellingen", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pl.json b/MediaBrowser.Server.Implementations/Localization/Server/pl.json index 5a1d623c4..8edc74215 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json index 1a93e7021..35144da5e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json @@ -404,10 +404,10 @@ "ButtonRefresh": "Atualizar", "ButtonAdvancedRefresh": "Atualiza\u00e7\u00e3o Avan\u00e7ada", "OptionPriority": "Prioridade", - "OptionRecordOnAllChannels": "Gravar programa em todos os canais", - "OptionRecordAnytime": "Gravar programa a qualquer hora", + "OptionRecordOnAllChannels": "Gravar em todos os canais", + "OptionRecordAnytime": "Gravar a qualquer hora", "OptionRecordOnlyNewEpisodes": "Gravar apenas novos epis\u00f3dios", - "HeaderRepeatingOptions": "Repeating Options", + "HeaderRepeatingOptions": "Op\u00e7\u00f5es de Repeti\u00e7\u00e3o", "HeaderDays": "Dias", "HeaderActiveRecordings": "Grava\u00e7\u00f5es Ativas", "HeaderLatestRecordings": "Grava\u00e7\u00f5es Recentes", @@ -551,7 +551,7 @@ "LabelPublicHttpsPort": "N\u00famero da porta p\u00fablica de https:", "LabelPublicHttpsPortHelp": "O n\u00famero da porta p\u00fablica que dever\u00e1 ser mapeada para a porta local de https.", "LabelEnableHttps": "Reportar https como um endere\u00e7o externo", - "LabelEnableHttpsHelp": "Se ativado, o servidor ir\u00e1 reportar uma url https para os clientes como um endere\u00e7o externo. Isto pode prejudicar o funcionamento de clientes que ainda n\u00e3o suportam https.", + "LabelEnableHttpsHelp": "Se ativado, o servidor ir\u00e1 reportar uma url https para os clientes como um endere\u00e7o externo.", "LabelHttpsPort": "N\u00famero da porta local de https:", "LabelHttpsPortHelp": "O n\u00famero da porta tcp que o servidor https do Emby deveria se conectar.", "LabelWebSocketPortNumber": "N\u00famero da porta do web socket:", @@ -888,9 +888,9 @@ "LabelHomePageSection2": "Tela de in\u00edcio se\u00e7\u00e3o 2:", "LabelHomePageSection3": "Tela de in\u00edcio se\u00e7\u00e3o 3:", "LabelHomePageSection4": "Tela de in\u00edcio se\u00e7\u00e3o 4:", - "OptionMyMediaButtons": "My media (buttons)", - "OptionMyMedia": "My media", - "OptionMyMediaSmall": "My media (small)", + "OptionMyMediaButtons": "Minha m\u00eddia (bot\u00f5es)", + "OptionMyMedia": "Minha m\u00eddia", + "OptionMyMediaSmall": "Minha m\u00eddia (pequeno)", "OptionResumablemedia": "Retomar", "OptionLatestMedia": "M\u00eddias recentes", "OptionLatestChannelMedia": "Itens recentes de canal", @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favoritos", "ViewTypeMovieGenres": "G\u00eaneros", "ViewTypeMusicLatest": "Recentes", + "ViewTypeMusicPlaylists": "Listas de Reprodu\u00e7\u00e3o", "ViewTypeMusicAlbums": "\u00c1lbuns", "ViewTypeMusicAlbumArtists": "Artistas do \u00c1lbum", "HeaderOtherDisplaySettings": "Ajustes de Exibi\u00e7\u00e3o", @@ -1392,26 +1393,29 @@ "LabelShowLibraryTileNamesHelp": "Determina se os t\u00edtulos ser\u00e3o exibidos embaixo das tiles da biblioteca na p\u00e1gina in\u00edcio", "OptionEnableTranscodingThrottle": "Ativar controlador de fluxo", "OptionEnableTranscodingThrottleHelp": "O controlador de fluxo ajustar\u00e1 automaticamente a velocidade de transcodifica\u00e7\u00e3o para minimizar o uso da cpu no servidor durante a reprodu\u00e7\u00e3o.", - "LabelUploadSpeedLimit": "Limite de velocidade de upload (mbps):", + "LabelUploadSpeedLimit": "Limite de velocidade de upload (Mbps):", "OptionAllowSyncTranscoding": "Permitir sincroniza\u00e7\u00e3o que necessite de transcodifica\u00e7\u00e3o", "HeaderPlayback": "Reprodu\u00e7\u00e3o de M\u00eddia", "OptionAllowAudioPlaybackTranscoding": "Permitir reprodu\u00e7\u00e3o de \u00e1udio que necessite de transcodifica\u00e7\u00e3o", "OptionAllowVideoPlaybackTranscoding": "Permitir reprodu\u00e7\u00e3o de v\u00eddeo que necessite de transcodifica\u00e7\u00e3o", "OptionAllowMediaPlaybackTranscodingHelp": "Os usu\u00e1rios receber\u00e3o mensagens de erro amig\u00e1veis quando o conte\u00fado n\u00e3o for reproduz\u00edvel, baseado nas pol\u00edticas.", "TabStreaming": "Streaming", - "LabelRemoteClientBitrateLimit": "Limite de taxa de bits para o cliente remoto (mbps):", + "LabelRemoteClientBitrateLimit": "Limite de taxa de bits para o cliente remoto (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Um limite opcional da taxa de bits para todos os clientes remotos. Esta op\u00e7\u00e3o \u00e9 \u00fatil para evitar que os clientes demandem uma taxa de bits maior que a permitida pela sua conex\u00e3o.", "LabelConversionCpuCoreLimit": "Limite de n\u00facleos da CPU:", "LabelConversionCpuCoreLimitHelp": "Limite o n\u00famero de n\u00facleos da CPU que ser\u00e3o usados durante a convers\u00e3o na sincroniza\u00e7\u00e3o", "OptionEnableFullSpeedConversion": "Ativar convers\u00e3o de alta velocidade", - "OptionEnableFullSpeedConversionHelp": "Por padr\u00e3o, a convers\u00e3o na sincroniza\u00e7\u00e3o \u00e9 executada em uma velocidade baixa para reduzir o consumo de recursos.", - "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "OptionEnableFullSpeedConversionHelp": "Por padr\u00e3o, a convers\u00e3o na sincroniza\u00e7\u00e3o \u00e9 executada em uma velocidade baixa para minimizar o consumo de recursos.", + "HeaderPlaylists": "Listas de reprodu\u00e7\u00e3o", + "HeaderSelectDate": "Selecionar Data", + "HeaderWelcomeExclamation": "Bem Vindo!", + "HeaderMyPreferences": "Minhas Prefer\u00eancias", + "ButtonMyPreferencesWelcomeYes": "Sim, gostaria de definir minhas prefer\u00eancias agora.", + "ButtonMyPreferencesWelcomeNo": "N\u00e3o, obrigado. Farei mais tarde.", + "MyPreferencesWelcomeMessage1": "N\u00f3s exibimos sua biblioteca de uma forma que pensamos que ir\u00e1 gostar. A apar\u00eancia e o agrupamento de conte\u00fado podem ser mudados a qualquer hora ajustando suas prefer\u00eancias. Suas prefer\u00eancias ser\u00e3o aplicadas a todas as apps do Emby.", + "MyPreferencesWelcomeMessage2": "Gostaria de definir suas prefer\u00eancias agora?", + "ToAccessPreferencesHelp": "Para acessar suas prefer\u00eancias mais tarde, clique no \u00edcone do usu\u00e1rio no canto superior direito e selecione Minhas Prefer\u00eancias.", + "HeaderViewStyles": "Visualizar Estilos", + "LabelSelectViewStyles": "Ativar apresenta\u00e7\u00f5es melhoradas para:", + "LabelSelectViewStylesHelp": "Se ativada, as visualiza\u00e7\u00f5es ser\u00e3o feitas com metadados para oferecer categorias como Sugest\u00f5es, Recentes, G\u00eaneros e mais. Se desativada, elas ser\u00e3o exibidas como pastas simples." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json index 4b4ec0e55..6c6f19c14 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json index b437ac74f..169b17e8b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -115,7 +115,7 @@ "LabelSaveLocalMetadata": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a", "LabelSaveLocalMetadataHelp": "\u041f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u043d\u0443\u0442\u0440\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432 \u0442\u0430\u043a\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0433\u0434\u0435 \u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c.", "LabelDownloadInternetMetadata": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430", - "LabelDownloadInternetMetadataHelp": "\u0412 Emby Server \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439.", + "LabelDownloadInternetMetadataHelp": "\u0412 Emby Server \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.", "TabPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u044c", "TabLibraryAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", "ViewTypeMovieGenres": "\u0416\u0430\u043d\u0440\u044b", "ViewTypeMusicLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", + "ViewTypeMusicPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "ViewTypeMusicAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b", "ViewTypeMusicAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", "HeaderOtherDisplaySettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "\u041d\u0435\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c.", "MyPreferencesWelcomeMessage1": "\u0412\u0430\u0448\u0430 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u0430\u043c\u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0434\u0443\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u044f\u0442\u043d\u043e. \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0438 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u0412\u0430\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c Emby.", "MyPreferencesWelcomeMessage2": "\u0425\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0439\u0447\u0430\u0441?", - "ToAccessPreferencesHelp": "\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438." + "ToAccessPreferencesHelp": "\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.", + "HeaderViewStyles": "\u0421\u0442\u0438\u043b\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432", + "LabelSelectViewStyles": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f:", + "LabelSelectViewStylesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435, \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0416\u0430\u043d\u0440\u044b \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043e\u043d\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0430\u043f\u043e\u043a." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json b/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json index 9232bafa5..038b9b8e1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sv.json b/MediaBrowser.Server.Implementations/Localization/Server/sv.json index 5147b08b3..6be67957a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favoriter", "ViewTypeMovieGenres": "Genrer", "ViewTypeMusicLatest": "Nytillkommet", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Album", "ViewTypeMusicAlbumArtists": "Albumartister", "HeaderOtherDisplaySettings": "Visningsinst\u00e4llningar", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/tr.json b/MediaBrowser.Server.Implementations/Localization/Server/tr.json index f79cf64c6..bf994bc21 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/uk.json b/MediaBrowser.Server.Implementations/Localization/Server/uk.json index bb41b82ff..faddf0d4a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/uk.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/vi.json b/MediaBrowser.Server.Implementations/Localization/Server/vi.json index b4df819e0..0a19bfc1b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json index 27907b30b..2eb70ae66 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "\u6536\u85cf\u5939", "ViewTypeMovieGenres": "\u98ce\u683c", "ViewTypeMusicLatest": "\u6700\u65b0", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "\u4e13\u8f91", "ViewTypeMusicAlbumArtists": "\u4e13\u8f91\u827a\u672f\u5bb6", "HeaderOtherDisplaySettings": "\u663e\u793a\u8bbe\u7f6e", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json index 82645d51e..65d9b92a5 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json @@ -955,6 +955,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1413,5 +1414,8 @@ "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable rich presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs index f4820f432..743d8fed6 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs @@ -208,15 +208,7 @@ namespace MediaBrowser.Server.Implementations.Persistence result.LastErrorMessage = reader.GetString(7); } - if (!reader.IsDBNull(8)) - { - result.MetadataProvidersRefreshed = reader.GetString(8).Split('|').Where(i => !string.IsNullOrEmpty(i)).Select(i => new Guid(i)).ToList(); - } - - if (!reader.IsDBNull(9)) - { - result.ImageProvidersRefreshed = reader.GetString(9).Split('|').Where(i => !string.IsNullOrEmpty(i)).Select(i => new Guid(i)).ToList(); - } + // Skip metadata and image providers if (!reader.IsDBNull(10)) { @@ -251,8 +243,8 @@ namespace MediaBrowser.Server.Implementations.Persistence _saveStatusCommand.GetParameter(5).Value = status.DateLastImagesRefresh; _saveStatusCommand.GetParameter(6).Value = status.LastStatus.ToString(); _saveStatusCommand.GetParameter(7).Value = status.LastErrorMessage; - _saveStatusCommand.GetParameter(8).Value = string.Join("|", status.MetadataProvidersRefreshed.ToArray()); - _saveStatusCommand.GetParameter(9).Value = string.Join("|", status.ImageProvidersRefreshed.ToArray()); + _saveStatusCommand.GetParameter(8).Value = string.Empty; + _saveStatusCommand.GetParameter(9).Value = string.Empty; _saveStatusCommand.GetParameter(10).Value = status.ItemDateModified; _saveStatusCommand.Transaction = transaction; diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs index 4b7bfad3f..fd4d5eb27 100644 --- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs @@ -94,7 +94,7 @@ namespace MediaBrowser.Server.Implementations.Photos protected abstract Task> GetItemsWithImages(IHasImages item); - private const string Version = "29"; + private const string Version = "32"; protected string GetConfigurationCacheKey(List items, string itemName) { var parts = Version + "_" + (itemName ?? string.Empty) + "_" + @@ -103,9 +103,9 @@ namespace MediaBrowser.Server.Implementations.Photos return parts.GetMD5().ToString("N"); } - protected void CreateThumbCollage(IHasImages primaryItem, List items, string outputPath) + protected void CreateThumbCollage(IHasImages primaryItem, List items, string outputPath, bool drawText) { - CreateCollage(primaryItem, items, outputPath, 960, 540, true, primaryItem.Name); + CreateCollage(primaryItem, items, outputPath, 960, 540, drawText, primaryItem.Name); } protected virtual IEnumerable GetStripCollageImagePaths(IHasImages primaryItem, IEnumerable items) @@ -120,9 +120,9 @@ namespace MediaBrowser.Server.Implementations.Photos CreateCollage(primaryItem, items, outputPath, 600, 900, true, primaryItem.Name); } - protected void CreateSquareCollage(IHasImages primaryItem, List items, string outputPath) + protected void CreateSquareCollage(IHasImages primaryItem, List items, string outputPath, bool drawText) { - CreateCollage(primaryItem, items, outputPath, 800, 800, true, primaryItem.Name); + CreateCollage(primaryItem, items, outputPath, 800, 800, drawText, primaryItem.Name); } protected void CreateThumbCollage(IHasImages primaryItem, List items, string outputPath, int width, int height, bool drawText, string text) @@ -162,17 +162,23 @@ namespace MediaBrowser.Server.Implementations.Photos return false; } + var drawText = !(item is UserView); + if (imageType == ImageType.Thumb) { - CreateThumbCollage(item, itemsWithImages, outputPath); + CreateThumbCollage(item, itemsWithImages, outputPath, drawText); return true; } if (imageType == ImageType.Primary) { - if (item is PhotoAlbum || item is Playlist) + if (item is UserView) { - CreateSquareCollage(item, itemsWithImages, outputPath); + CreateSquareCollage(item, itemsWithImages, outputPath, drawText); + } + else if (item is PhotoAlbum || item is Playlist) + { + CreateSquareCollage(item, itemsWithImages, outputPath, drawText); } else { @@ -222,7 +228,6 @@ namespace MediaBrowser.Server.Implementations.Photos protected List GetFinalItems(List items) { - // Rotate the images no more than once per week return GetFinalItems(items, 4); } diff --git a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs index c68487440..8c142b646 100644 --- a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs @@ -9,18 +9,18 @@ using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.Photos { - public class PhotoAlbumImageProvider : BaseDynamicImageProvider - { - public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor) - { - } + //public class PhotoAlbumImageProvider : BaseDynamicImageProvider + //{ + // public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor) + // { + // } - protected override Task> GetItemsWithImages(IHasImages item) - { - var photoAlbum = (PhotoAlbum)item; - var items = GetFinalItems(photoAlbum.Children.ToList()); + // protected override Task> GetItemsWithImages(IHasImages item) + // { + // var photoAlbum = (PhotoAlbum)item; + // var items = GetFinalItems(photoAlbum.Children.ToList()); - return Task.FromResult(items); - } - } + // return Task.FromResult(items); + // } + //} } diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs index 47487bf4c..4a4d90d14 100644 --- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -62,42 +62,18 @@ namespace MediaBrowser.Server.Implementations.UserViews return new List(); } - if (string.Equals(view.ViewType, SpecialFolder.GameGenre, StringComparison.OrdinalIgnoreCase)) - { - var list = new List(); - - var genre = _libraryManager.GetGameGenre(view.Name); - - if (genre.HasImage(ImageType.Primary) || genre.HasImage(ImageType.Thumb)) - { - list.Add(genre); - } - return list; - } - if (string.Equals(view.ViewType, SpecialFolder.MusicGenre, StringComparison.OrdinalIgnoreCase)) - { - var list = new List(); - - var genre = _libraryManager.GetMusicGenre(view.Name); - - if (genre.HasImage(ImageType.Primary) || genre.HasImage(ImageType.Thumb)) - { - list.Add(genre); - } - return list; - } - if (string.Equals(view.ViewType, SpecialFolder.MovieGenre, StringComparison.OrdinalIgnoreCase) || + if (string.Equals(view.ViewType, SpecialFolder.GameGenre, StringComparison.OrdinalIgnoreCase) || + string.Equals(view.ViewType, SpecialFolder.MusicGenre, StringComparison.OrdinalIgnoreCase) || + string.Equals(view.ViewType, SpecialFolder.MovieGenre, StringComparison.OrdinalIgnoreCase) || string.Equals(view.ViewType, SpecialFolder.TvGenre, StringComparison.OrdinalIgnoreCase)) { - var list = new List(); - - var genre = _libraryManager.GetGenre(view.Name); - - if (genre.HasImage(ImageType.Primary) || genre.HasImage(ImageType.Thumb)) + var userItemsResult = await view.GetItems(new InternalItemsQuery { - list.Add(genre); - } - return list; + User = _userManager.GetUserById(view.UserId.Value), + CollapseBoxSetItems = false + }); + + return userItemsResult.Items.ToList(); } var isUsingCollectionStrip = IsUsingCollectionStrip(view); diff --git a/SharedVersion.cs b/SharedVersion.cs index e922d7591..248eed40e 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; //[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5582.2")] +[assembly: AssemblyVersion("3.0.5582.3")]