Merge pull request #1083 from MediaBrowser/dev

3.0.5582.3
pull/702/head
Luke 10 years ago
commit ab0a7814d7

@ -60,6 +60,7 @@ namespace Emby.Drawing
_imageEncoder = imageEncoder;
_appPaths = appPaths;
ImageEnhancers = new List<IImageEnhancer>();
_saveImageSizeTimer = new Timer(SaveImageSizeCallback, null, Timeout.Infinite, Timeout.Infinite);
Dictionary<Guid, ImageSize> sizeDictionary;

@ -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
{
/// <summary>
@ -511,6 +511,30 @@ namespace MediaBrowser.Api.Images
/// <exception cref="ResourceNotFoundException"></exception>
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)

@ -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);
}
/// <summary>
/// Posts the specified request.
/// </summary>

@ -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;

@ -164,18 +164,22 @@ namespace MediaBrowser.Controller.Entities
protected void AddChildrenInternal(IEnumerable<BaseItem> 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<BaseItem> 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<BaseItem> LoadChildrenInternal()
{
return LoadChildren().ToList();
}
/// <summary>
/// Loads our children. Validation will occur externally.
/// We want this sychronous.

@ -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
/// <value>The last result error message.</value>
public string LastErrorMessage { get; set; }
/// <summary>
/// Gets or sets the providers refreshed.
/// </summary>
/// <value>The providers refreshed.</value>
public List<Guid> MetadataProvidersRefreshed { get; set; }
public List<Guid> 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<Guid>();
ImageProvidersRefreshed = new List<Guid>();
}
public bool IsDirty { get; private set; }
@ -109,33 +97,5 @@ namespace MediaBrowser.Controller.Providers
DateLastImagesRefresh = date;
}
public void AddImageProvidersRefreshed(List<Guid> providerIds)
{
var count = ImageProvidersRefreshed.Count;
providerIds.AddRange(ImageProvidersRefreshed);
ImageProvidersRefreshed = providerIds.Distinct().ToList();
if (ImageProvidersRefreshed.Count != count)
{
IsDirty = true;
}
}
public void AddMetadataProvidersRefreshed(List<Guid> providerIds)
{
var count = MetadataProvidersRefreshed.Count;
providerIds.AddRange(MetadataProvidersRefreshed);
MetadataProvidersRefreshed = providerIds.Distinct().ToList();
if (MetadataProvidersRefreshed.Count != count)
{
IsDirty = true;
}
}
}
}

@ -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<KeyValuePair<string, string>> GetResult(string methodName, Headers methodParams)

@ -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;

@ -94,7 +94,6 @@
<Compile Include="PlayTo\uParserObject.cs" />
<Compile Include="Profiles\Foobar2000Profile.cs" />
<Compile Include="Profiles\MediaMonkeyProfile.cs" />
<Compile Include="Profiles\WindowsMediaCenterProfile.cs" />
<Compile Include="ContentDirectory\ContentDirectory.cs" />
<Compile Include="ContentDirectory\ControlHandler.cs" />
<Compile Include="ContentDirectory\ServiceActionListBuilder.cs" />
@ -167,7 +166,9 @@
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282013%29.xml" />
<EmbeddedResource Include="Profiles\Xml\Sony PlayStation 3.xml" />
<EmbeddedResource Include="Profiles\Xml\WDTV Live.xml" />
<EmbeddedResource Include="Profiles\Xml\Xbox 360.xml" />
<EmbeddedResource Include="Profiles\Xml\Xbox 360.xml">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Profiles\Xml\Xbox One.xml" />
</ItemGroup>
<ItemGroup>

@ -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;

@ -114,7 +114,7 @@ namespace MediaBrowser.Dlna.PlayTo
_mediaSourceManager);
controller.Init(device);
var profile = _dlnaManager.GetProfile(device.Properties.ToDeviceIdentification()) ??
_dlnaManager.GetDefaultProfile();

@ -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

@ -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
}
}
},

@ -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,

@ -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,

@ -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
}
}
}
};
}
}
}

@ -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

@ -49,7 +49,7 @@
</TranscodingProfiles>
<ContainerProfiles />
<CodecProfiles>
<CodecProfile type="Video">
<CodecProfile type="Video" codec="h264">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
@ -58,7 +58,7 @@
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video" codec="mpeg2video">
<CodecProfile type="Video">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />

@ -44,16 +44,19 @@
</TranscodingProfiles>
<ContainerProfiles />
<CodecProfiles>
<CodecProfile type="Video">
<CodecProfile type="Video" codec="h264">
<Conditions>
<ProfileCondition condition="EqualsAny" property="VideoProfile" value="baseline|constrained baseline" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="NotEquals" property="IsAnamorphic" value="true" isRequired="false" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video" codec="h264">
<CodecProfile type="Video">
<Conditions>
<ProfileCondition condition="EqualsAny" property="VideoProfile" value="baseline|constrained baseline" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="NotEquals" property="IsAnamorphic" value="true" isRequired="false" />
</Conditions>
</CodecProfile>
<CodecProfile type="VideoAudio" codec="aac">

@ -58,14 +58,10 @@
</ContainerProfile>
</ContainerProfiles>
<CodecProfiles>
<CodecProfile type="Video">
<CodecProfile type="Video" codec="h264">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video" codec="h264">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
@ -73,10 +69,18 @@
</CodecProfile>
<CodecProfile type="Video" codec="mpeg2video">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
</Conditions>
</CodecProfile>
<CodecProfile type="VideoAudio" codec="ac3">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" />

@ -61,14 +61,10 @@
</ContainerProfile>
</ContainerProfiles>
<CodecProfiles>
<CodecProfile type="Video">
<CodecProfile type="Video" codec="h264">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video" codec="h264">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="true" />
@ -76,10 +72,18 @@
</CodecProfile>
<CodecProfile type="Video" codec="mpeg2video">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="20000000" isRequired="true" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
</Conditions>
</CodecProfile>
<CodecProfile type="VideoAudio" codec="ac3">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" />

@ -2,10 +2,10 @@
<Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Xbox One</Name>
<Identification>
<FriendlyName>Xbox-SystemOS</FriendlyName>
<ModelName>Xbox One</ModelName>
<FriendlyName>XboxOne</FriendlyName>
<Headers>
<HttpHeaderInfo name="User-Agent" value="NSPlayer" match="Substring" />
<HttpHeaderInfo name="FriendlyName.DLNA.ORG" value="XboxOne" match="Substring" />
<HttpHeaderInfo name="User-Agent" value="NSPlayer/12" match="Substring" />
</Headers>
</Identification>
<FriendlyName>Emby</FriendlyName>
@ -48,7 +48,7 @@
<TranscodingProfiles>
<TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" />
<TranscodingProfile container="jpeg" type="Photo" videoCodec="jpeg" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" />
<TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="aac" estimateContentLength="true" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" />
<TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="aac" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" />
</TranscodingProfiles>
<ContainerProfiles>
<ContainerProfile type="Video" container="mp4,mov">
@ -58,14 +58,10 @@
</ContainerProfile>
</ContainerProfiles>
<CodecProfiles>
<CodecProfile type="Video">
<CodecProfile type="Video" codec="mpeg4">
<Conditions>
<ProfileCondition condition="NotEquals" property="IsAnamorphic" value="true" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="VideoBitDepth" value="8" isRequired="false" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video" codec="mpeg4">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="false" />
@ -74,18 +70,30 @@
</CodecProfile>
<CodecProfile type="Video" codec="h264">
<Conditions>
<ProfileCondition condition="NotEquals" property="IsAnamorphic" value="true" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="VideoBitDepth" value="8" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="false" />
<ProfileCondition condition="EqualsAny" property="VideoProfile" value="high|main|baseline|constrained baseline" isRequired="false" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video" codec="wmv2,wmv3,vc1">
<Conditions>
<ProfileCondition condition="NotEquals" property="IsAnamorphic" value="true" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="VideoBitDepth" value="8" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" />
<ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="15360000" isRequired="false" />
</Conditions>
</CodecProfile>
<CodecProfile type="Video">
<Conditions>
<ProfileCondition condition="NotEquals" property="IsAnamorphic" value="true" isRequired="false" />
<ProfileCondition condition="LessThanEqual" property="VideoBitDepth" value="8" isRequired="false" />
</Conditions>
</CodecProfile>
<CodecProfile type="VideoAudio" codec="ac3,wmav2,wmapro">
<Conditions>
<ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" />

@ -102,7 +102,7 @@ namespace MediaBrowser.Model.Dlna
}
List<string> list = new List<string>();
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<string> list = new List<string>();
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<NameValuePair> BuildParams(StreamInfo item, string accessToken)
private static List<NameValuePair> BuildParams(StreamInfo item, string accessToken, bool isDlna)
{
List<NameValuePair> list = new List<NameValuePair>();
@ -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));

@ -69,6 +69,12 @@ namespace MediaBrowser.Model.Dto
/// <value>The key.</value>
public string Key { get; set; }
/// <summary>
/// Gets or sets the item identifier.
/// </summary>
/// <value>The item identifier.</value>
public string ItemId { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
}

@ -21,8 +21,8 @@ namespace MediaBrowser.Model.Session
public DeviceProfile DeviceProfile { get; set; }
public List<string> 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()
{

@ -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);
}
}

@ -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
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
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()

@ -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

@ -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;

@ -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<UserView> 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);
}

@ -1002,8 +1002,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv
List<TimerInfo> 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<TimerInfo>();
}
}
var timer = timerList.FirstOrDefault(i => string.Equals(i.ProgramId, program.ExternalId, StringComparison.OrdinalIgnoreCase));

@ -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",

@ -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.",

@ -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",

@ -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.",

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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 <b>Finish<\/b> to view the <b>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 <b>Fine<\/b> per visualizzare il <b>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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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."
}

@ -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;

@ -94,7 +94,7 @@ namespace MediaBrowser.Server.Implementations.Photos
protected abstract Task<List<BaseItem>> GetItemsWithImages(IHasImages item);
private const string Version = "29";
private const string Version = "32";
protected string GetConfigurationCacheKey(List<BaseItem> 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<BaseItem> items, string outputPath)
protected void CreateThumbCollage(IHasImages primaryItem, List<BaseItem> 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<string> GetStripCollageImagePaths(IHasImages primaryItem, IEnumerable<BaseItem> 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<BaseItem> items, string outputPath)
protected void CreateSquareCollage(IHasImages primaryItem, List<BaseItem> 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<BaseItem> 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, drawText);
}
else if (item is PhotoAlbum || item is Playlist)
{
CreateSquareCollage(item, itemsWithImages, outputPath);
CreateSquareCollage(item, itemsWithImages, outputPath, drawText);
}
else
{
@ -222,7 +228,6 @@ namespace MediaBrowser.Server.Implementations.Photos
protected List<BaseItem> GetFinalItems(List<BaseItem> items)
{
// Rotate the images no more than once per week
return GetFinalItems(items, 4);
}

@ -9,18 +9,18 @@ using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.Photos
{
public class PhotoAlbumImageProvider : BaseDynamicImageProvider<PhotoAlbum>
{
public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor)
{
}
//public class PhotoAlbumImageProvider : BaseDynamicImageProvider<PhotoAlbum>
//{
// public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor)
// {
// }
protected override Task<List<BaseItem>> GetItemsWithImages(IHasImages item)
{
var photoAlbum = (PhotoAlbum)item;
var items = GetFinalItems(photoAlbum.Children.ToList());
// protected override Task<List<BaseItem>> GetItemsWithImages(IHasImages item)
// {
// var photoAlbum = (PhotoAlbum)item;
// var items = GetFinalItems(photoAlbum.Children.ToList());
return Task.FromResult(items);
}
}
// return Task.FromResult(items);
// }
//}
}

@ -62,42 +62,18 @@ namespace MediaBrowser.Server.Implementations.UserViews
return new List<BaseItem>();
}
if (string.Equals(view.ViewType, SpecialFolder.GameGenre, StringComparison.OrdinalIgnoreCase))
{
var list = new List<BaseItem>();
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<BaseItem>();
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<BaseItem>();
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);

@ -1,4 +1,4 @@
using System.Reflection;
//[assembly: AssemblyVersion("3.0.*")]
[assembly: AssemblyVersion("3.0.5582.2")]
[assembly: AssemblyVersion("3.0.5582.3")]

Loading…
Cancel
Save