aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-25 14:32:58 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-25 14:32:58 -0400
commitd74e3b2dea894a7cdc3defac418069081dd2ae22 (patch)
tree9618eea91bf12790b51eeb0138a01f1641968043
parentc8a735bcb1ba71e9501d18b3044aa30793ff97ee (diff)
connect updates
-rw-r--r--MediaBrowser.Api/BaseApiService.cs2
-rw-r--r--MediaBrowser.Api/ItemRefreshService.cs2
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs5
-rw-r--r--MediaBrowser.Api/Playback/StreamState.cs10
-rw-r--r--MediaBrowser.Api/Subtitles/SubtitleService.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/PlaystateService.cs4
-rw-r--r--MediaBrowser.Controller/Channels/ChannelMediaInfo.cs5
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs26
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs27
-rw-r--r--MediaBrowser.Controller/Entities/User.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs3
-rw-r--r--MediaBrowser.Controller/IO/FileData.cs22
-rw-r--r--MediaBrowser.Controller/Library/TVUtils.cs64
-rw-r--r--MediaBrowser.Controller/Providers/DirectoryService.cs51
-rw-r--r--MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs5
-rw-r--r--MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs16
-rw-r--r--MediaBrowser.Dlna/Didl/DidlBuilder.cs4
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs2
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs2
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs2
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs2
-rw-r--r--MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Android.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Default.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml8
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml2
-rw-r--r--MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml2
-rw-r--r--MediaBrowser.LocalMetadata/BaseXmlProvider.cs7
-rw-r--r--MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs3
-rw-r--r--MediaBrowser.Model/Dlna/DeviceProfile.cs2
-rw-r--r--MediaBrowser.Model/Dto/MediaSourceInfo.cs1
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs14
-rw-r--r--MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs17
-rw-r--r--MediaBrowser.Providers/Subtitles/SubtitleManager.cs2
-rw-r--r--MediaBrowser.Providers/TV/FanArtSeasonProvider.cs17
-rw-r--r--MediaBrowser.Providers/TV/FanartSeriesProvider.cs17
-rw-r--r--MediaBrowser.Providers/TV/MissingEpisodeProvider.cs10
-rw-r--r--MediaBrowser.Server.Implementations/Collections/CollectionManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/da.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/de.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/el.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/es.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json8
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json8
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/he.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/it.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json16
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ar.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ca.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/cs.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/da.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/de.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/el.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/en_GB.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/en_US.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/es.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/es_MX.json16
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/fr.json38
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/he.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/hr.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/it.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/kk.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ko.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ms.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/nb.json12
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/nl.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/pl.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json44
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ru.json8
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/server.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/sv.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/tr.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/vi.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json6
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json6
-rw-r--r--MediaBrowser.WebDashboard/Api/PackageCreator.cs1
-rw-r--r--MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj6
-rw-r--r--MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs7
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Model.Signed.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
122 files changed, 552 insertions, 281 deletions
diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs
index 1af7054d9..f8379a810 100644
--- a/MediaBrowser.Api/BaseApiService.cs
+++ b/MediaBrowser.Api/BaseApiService.cs
@@ -107,7 +107,7 @@ namespace MediaBrowser.Api
return ResultFactory.GetStaticFileResult(Request, path);
}
- private readonly char[] _dashReplaceChars = { '?', '/' };
+ private readonly char[] _dashReplaceChars = { '?', '/', '&' };
private const char SlugChar = '-';
protected MusicArtist GetArtist(string name, ILibraryManager libraryManager)
diff --git a/MediaBrowser.Api/ItemRefreshService.cs b/MediaBrowser.Api/ItemRefreshService.cs
index 768e9a4a8..34e0726f1 100644
--- a/MediaBrowser.Api/ItemRefreshService.cs
+++ b/MediaBrowser.Api/ItemRefreshService.cs
@@ -152,7 +152,7 @@ namespace MediaBrowser.Api
private MetadataRefreshOptions GetRefreshOptions(BaseRefreshRequest request)
{
- return new MetadataRefreshOptions
+ return new MetadataRefreshOptions(new DirectoryService())
{
MetadataRefreshMode = request.MetadataRefreshMode,
ImageRefreshMode = request.ImageRefreshMode,
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index ed777cafe..9c8075bfb 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -13,7 +13,6 @@ using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
-using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.MediaInfo;
using System;
using System.Collections.Generic;
@@ -1545,6 +1544,7 @@ namespace MediaBrowser.Api.Playback
state.InputVideoSync = "-1";
state.InputAudioSync = "1";
state.InputContainer = recording.Container;
+ state.ReadInputAtNativeFramerate = source.ReadAtNativeFramerate;
}
else if (item is LiveTvChannel)
{
@@ -1572,6 +1572,7 @@ namespace MediaBrowser.Api.Playback
state.RemoteHttpHeaders = mediaSource.RequiredHttpHeaders;
state.InputBitrate = mediaSource.Bitrate;
state.InputFileSize = mediaSource.Size;
+ state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate;
mediaStreams = mediaSource.MediaStreams;
}
else
@@ -1588,6 +1589,7 @@ namespace MediaBrowser.Api.Playback
state.InputContainer = mediaSource.Container;
state.InputFileSize = mediaSource.Size;
state.InputBitrate = mediaSource.Bitrate;
+ state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate;
var video = item as Video;
@@ -1687,6 +1689,7 @@ namespace MediaBrowser.Api.Playback
state.RemoteHttpHeaders = mediaSource.RequiredHttpHeaders;
state.InputBitrate = mediaSource.Bitrate;
state.InputFileSize = mediaSource.Size;
+ state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate;
AttachMediaStreamInfo(state, mediaSource.MediaStreams, videoRequest, requestedUrl);
}
diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs
index 832eb3ca8..b6423ed2f 100644
--- a/MediaBrowser.Api/Playback/StreamState.cs
+++ b/MediaBrowser.Api/Playback/StreamState.cs
@@ -95,15 +95,7 @@ namespace MediaBrowser.Api.Playback
public bool DeInterlace { get; set; }
- public bool ReadInputAtNativeFramerate
- {
- get {
-
- return InputProtocol == MediaProtocol.Rtmp ||
- string.Equals(InputContainer, "wtv", StringComparison.OrdinalIgnoreCase) ||
- !string.IsNullOrEmpty(LiveTvStreamId);
- }
- }
+ public bool ReadInputAtNativeFramerate { get; set; }
public TransportStreamTimestamp InputTimestamp { get; set; }
diff --git a/MediaBrowser.Api/Subtitles/SubtitleService.cs b/MediaBrowser.Api/Subtitles/SubtitleService.cs
index 6e2882319..1d62374bd 100644
--- a/MediaBrowser.Api/Subtitles/SubtitleService.cs
+++ b/MediaBrowser.Api/Subtitles/SubtitleService.cs
@@ -254,7 +254,7 @@ namespace MediaBrowser.Api.Subtitles
await _subtitleManager.DownloadSubtitles(video, request.SubtitleId, CancellationToken.None)
.ConfigureAwait(false);
- await video.RefreshMetadata(new MetadataRefreshOptions(), CancellationToken.None).ConfigureAwait(false);
+ await video.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()), CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs
index 874d2bfa1..932ce77d3 100644
--- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs
+++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs
@@ -375,11 +375,11 @@ namespace MediaBrowser.Api.UserLibrary
if (wasPlayed)
{
- await item.MarkPlayed(user, datePlayed, _userDataRepository).ConfigureAwait(false);
+ await item.MarkPlayed(user, datePlayed, true).ConfigureAwait(false);
}
else
{
- await item.MarkUnplayed(user, _userDataRepository).ConfigureAwait(false);
+ await item.MarkUnplayed(user).ConfigureAwait(false);
}
return _userDataRepository.GetUserDataDto(item, user);
diff --git a/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs b/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs
index 64a4f355c..0c2e30923 100644
--- a/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs
+++ b/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs
@@ -37,6 +37,8 @@ namespace MediaBrowser.Controller.Channels
public string Id { get; set; }
+ public bool ReadAtNativeFramerate { get; set; }
+
public ChannelMediaInfo()
{
RequiredHttpHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
@@ -59,7 +61,8 @@ namespace MediaBrowser.Controller.Channels
RequiredHttpHeaders = RequiredHttpHeaders,
RunTimeTicks = RunTimeTicks,
Name = id,
- Id = id
+ Id = id,
+ ReadAtNativeFramerate = ReadAtNativeFramerate
};
var bitrate = (AudioBitrate ?? 0) + (VideoBitrate ?? 0);
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 3193ad091..82971ac5c 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -766,7 +766,7 @@ namespace MediaBrowser.Controller.Entities
public Task RefreshMetadata(CancellationToken cancellationToken)
{
- return RefreshMetadata(new MetadataRefreshOptions(), cancellationToken);
+ return RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()), cancellationToken);
}
/// <summary>
@@ -783,8 +783,6 @@ namespace MediaBrowser.Controller.Entities
if (IsFolder || Parent != null)
{
- options.DirectoryService = options.DirectoryService ?? new DirectoryService(Logger);
-
try
{
var files = locationType != LocationType.Remote && locationType != LocationType.Virtual ?
@@ -1360,10 +1358,12 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
/// <param name="user">The user.</param>
/// <param name="datePlayed">The date played.</param>
- /// <param name="userManager">The user manager.</param>
+ /// <param name="resetPosition">if set to <c>true</c> [reset position].</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
- public virtual async Task MarkPlayed(User user, DateTime? datePlayed, IUserDataManager userManager)
+ public virtual async Task MarkPlayed(User user,
+ DateTime? datePlayed,
+ bool resetPosition)
{
if (user == null)
{
@@ -1372,7 +1372,7 @@ namespace MediaBrowser.Controller.Entities
var key = GetUserDataKey();
- var data = userManager.GetUserData(user.Id, key);
+ var data = UserDataManager.GetUserData(user.Id, key);
if (datePlayed.HasValue)
{
@@ -1383,20 +1383,24 @@ namespace MediaBrowser.Controller.Entities
// Ensure it's at least one
data.PlayCount = Math.Max(data.PlayCount, 1);
+ if (resetPosition)
+ {
+ data.PlaybackPositionTicks = 0;
+ }
+
data.LastPlayedDate = datePlayed ?? data.LastPlayedDate;
data.Played = true;
- await userManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
+ await UserDataManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
}
/// <summary>
/// Marks the unplayed.
/// </summary>
/// <param name="user">The user.</param>
- /// <param name="userManager">The user manager.</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
- public virtual async Task MarkUnplayed(User user, IUserDataManager userManager)
+ public virtual async Task MarkUnplayed(User user)
{
if (user == null)
{
@@ -1405,7 +1409,7 @@ namespace MediaBrowser.Controller.Entities
var key = GetUserDataKey();
- var data = userManager.GetUserData(user.Id, key);
+ var data = UserDataManager.GetUserData(user.Id, key);
//I think it is okay to do this here.
// if this is only called when a user is manually forcing something to un-played
@@ -1415,7 +1419,7 @@ namespace MediaBrowser.Controller.Entities
data.LastPlayedDate = null;
data.Played = false;
- await userManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
+ await UserDataManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 4abdde8dd..d0f2e9dfa 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -319,7 +319,7 @@ namespace MediaBrowser.Controller.Entities
public Task ValidateChildren(IProgress<double> progress, CancellationToken cancellationToken)
{
- return ValidateChildren(progress, cancellationToken, new MetadataRefreshOptions());
+ return ValidateChildren(progress, cancellationToken, new MetadataRefreshOptions(new DirectoryService()));
}
/// <summary>
@@ -332,8 +332,6 @@ namespace MediaBrowser.Controller.Entities
/// <returns>Task.</returns>
public Task ValidateChildren(IProgress<double> progress, CancellationToken cancellationToken, MetadataRefreshOptions metadataRefreshOptions, bool recursive = true)
{
- metadataRefreshOptions.DirectoryService = metadataRefreshOptions.DirectoryService ?? new DirectoryService(Logger);
-
return ValidateChildrenWithCancellationSupport(progress, cancellationToken, recursive, true, metadataRefreshOptions, metadataRefreshOptions.DirectoryService);
}
@@ -1141,12 +1139,16 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
/// <param name="user">The user.</param>
/// <param name="datePlayed">The date played.</param>
- /// <param name="userManager">The user manager.</param>
+ /// <param name="resetPosition">if set to <c>true</c> [reset position].</param>
/// <returns>Task.</returns>
- public override async Task MarkPlayed(User user, DateTime? datePlayed, IUserDataManager userManager)
+ public override async Task MarkPlayed(User user,
+ DateTime? datePlayed,
+ bool resetPosition)
{
// Sweep through recursively and update status
- var tasks = GetRecursiveChildren(user, true).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual).Select(c => c.MarkPlayed(user, datePlayed, userManager));
+ var tasks = GetRecursiveChildren(user, true)
+ .Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
+ .Select(c => c.MarkPlayed(user, datePlayed, resetPosition));
await Task.WhenAll(tasks).ConfigureAwait(false);
}
@@ -1155,12 +1157,13 @@ namespace MediaBrowser.Controller.Entities
/// Marks the unplayed.
/// </summary>
/// <param name="user">The user.</param>
- /// <param name="userManager">The user manager.</param>
/// <returns>Task.</returns>
- public override async Task MarkUnplayed(User user, IUserDataManager userManager)
+ public override async Task MarkUnplayed(User user)
{
// Sweep through recursively and update status
- var tasks = GetRecursiveChildren(user, true).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual).Select(c => c.MarkUnplayed(user, userManager));
+ var tasks = GetRecursiveChildren(user, true)
+ .Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
+ .Select(c => c.MarkUnplayed(user));
await Task.WhenAll(tasks).ConfigureAwait(false);
}
@@ -1195,14 +1198,14 @@ namespace MediaBrowser.Controller.Entities
public override bool IsPlayed(User user)
{
- return GetRecursiveChildren(user).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
+ return GetRecursiveChildren(user)
+ .Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
.All(i => i.IsPlayed(user));
}
public override bool IsUnplayed(User user)
{
- return GetRecursiveChildren(user).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
- .All(i => i.IsUnplayed(user));
+ return !IsPlayed(user);
}
public override void FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, User user)
diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs
index 5d1a21387..0bbd2eeca 100644
--- a/MediaBrowser.Controller/Entities/User.cs
+++ b/MediaBrowser.Controller/Entities/User.cs
@@ -179,7 +179,7 @@ namespace MediaBrowser.Controller.Entities
Name = newName;
- return RefreshMetadata(new MetadataRefreshOptions
+ return RefreshMetadata(new MetadataRefreshOptions(new DirectoryService())
{
ReplaceAllMetadata = true,
ImageRefreshMode = ImageRefreshMode.FullRefresh,
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index f4104b29d..0b22d639e 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -398,9 +398,8 @@ namespace MediaBrowser.Controller.Entities
var currentImagePath = video.GetImagePath(ImageType.Primary);
var ownerImagePath = this.GetImagePath(ImageType.Primary);
- var newOptions = new MetadataRefreshOptions
+ var newOptions = new MetadataRefreshOptions(options.DirectoryService)
{
- DirectoryService = options.DirectoryService,
ImageRefreshMode = options.ImageRefreshMode,
MetadataRefreshMode = options.MetadataRefreshMode,
ReplaceAllMetadata = options.ReplaceAllMetadata
diff --git a/MediaBrowser.Controller/IO/FileData.cs b/MediaBrowser.Controller/IO/FileData.cs
index 4ee8a810b..fb0f07331 100644
--- a/MediaBrowser.Controller/IO/FileData.cs
+++ b/MediaBrowser.Controller/IO/FileData.cs
@@ -25,7 +25,13 @@ namespace MediaBrowser.Controller.IO
/// <param name="resolveShortcuts">if set to <c>true</c> [resolve shortcuts].</param>
/// <returns>Dictionary{System.StringFileSystemInfo}.</returns>
/// <exception cref="System.ArgumentNullException">path</exception>
- public static Dictionary<string, FileSystemInfo> GetFilteredFileSystemEntries(IDirectoryService directoryService, string path, IFileSystem fileSystem, ILogger logger, ItemResolveArgs args, int flattenFolderDepth = 0, bool resolveShortcuts = true)
+ public static Dictionary<string, FileSystemInfo> GetFilteredFileSystemEntries(IDirectoryService directoryService,
+ string path,
+ IFileSystem fileSystem,
+ ILogger logger,
+ ItemResolveArgs args,
+ int flattenFolderDepth = 0,
+ bool resolveShortcuts = true)
{
if (string.IsNullOrEmpty(path))
{
@@ -36,21 +42,13 @@ namespace MediaBrowser.Controller.IO
throw new ArgumentNullException("args");
}
- var entries = directoryService.GetFileSystemEntries(path);
-
if (!resolveShortcuts && flattenFolderDepth == 0)
{
- // Seeing dupes on some users file system for some reason
- var dictionary = new Dictionary<string, FileSystemInfo>(StringComparer.OrdinalIgnoreCase);
-
- foreach (var info in entries)
- {
- dictionary[info.FullName] = info;
- }
-
- return dictionary;
+ return directoryService.GetFileSystemDictionary(path);
}
+ var entries = directoryService.GetFileSystemEntries(path);
+
var dict = new Dictionary<string, FileSystemInfo>(StringComparer.OrdinalIgnoreCase);
foreach (var entry in entries)
diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs
index c85a8f335..314efcce5 100644
--- a/MediaBrowser.Controller/Library/TVUtils.cs
+++ b/MediaBrowser.Controller/Library/TVUtils.cs
@@ -213,38 +213,38 @@ namespace MediaBrowser.Controller.Library
return false;
}
- // It's a season folder if it's named as such and does not contain any audio files, apart from theme.mp3
- foreach (var fileSystemInfo in directoryService.GetFileSystemEntries(path))
- {
- var attributes = fileSystemInfo.Attributes;
-
- if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
- {
- continue;
- }
-
- // Can't enforce this because files saved by Bitcasa are always marked System
- //if ((attributes & FileAttributes.System) == FileAttributes.System)
- //{
- // continue;
- //}
-
- if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
- {
- //if (IsBadFolder(fileSystemInfo.Name))
- //{
- // return false;
- //}
- }
- else
- {
- if (EntityResolutionHelper.IsAudioFile(fileSystemInfo.FullName) &&
- !string.Equals(fileSystem.GetFileNameWithoutExtension(fileSystemInfo), BaseItem.ThemeSongFilename))
- {
- return false;
- }
- }
- }
+ //// It's a season folder if it's named as such and does not contain any audio files, apart from theme.mp3
+ //foreach (var fileSystemInfo in directoryService.GetFileSystemEntries(path))
+ //{
+ // var attributes = fileSystemInfo.Attributes;
+
+ // if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
+ // {
+ // continue;
+ // }
+
+ // // Can't enforce this because files saved by Bitcasa are always marked System
+ // //if ((attributes & FileAttributes.System) == FileAttributes.System)
+ // //{
+ // // continue;
+ // //}
+
+ // if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
+ // {
+ // //if (IsBadFolder(fileSystemInfo.Name))
+ // //{
+ // // return false;
+ // //}
+ // }
+ // else
+ // {
+ // if (EntityResolutionHelper.IsAudioFile(fileSystemInfo.FullName) &&
+ // !string.Equals(fileSystem.GetFileNameWithoutExtension(fileSystemInfo), BaseItem.ThemeSongFilename))
+ // {
+ // return false;
+ // }
+ // }
+ //}
return true;
}
diff --git a/MediaBrowser.Controller/Providers/DirectoryService.cs b/MediaBrowser.Controller/Providers/DirectoryService.cs
index 6f70df435..4fdc08da0 100644
--- a/MediaBrowser.Controller/Providers/DirectoryService.cs
+++ b/MediaBrowser.Controller/Providers/DirectoryService.cs
@@ -9,35 +9,47 @@ namespace MediaBrowser.Controller.Providers
{
public interface IDirectoryService
{
- List<FileSystemInfo> GetFileSystemEntries(string path);
+ IEnumerable<FileSystemInfo> GetFileSystemEntries(string path);
IEnumerable<FileSystemInfo> GetFiles(string path);
IEnumerable<FileSystemInfo> GetFiles(string path, bool clearCache);
FileSystemInfo GetFile(string path);
+ Dictionary<string, FileSystemInfo> GetFileSystemDictionary(string path);
}
public class DirectoryService : IDirectoryService
{
private readonly ILogger _logger;
- private readonly ConcurrentDictionary<string, List<FileSystemInfo>> _cache = new ConcurrentDictionary<string, List<FileSystemInfo>>(StringComparer.OrdinalIgnoreCase);
+ private readonly ConcurrentDictionary<string, Dictionary<string,FileSystemInfo>> _cache =
+ new ConcurrentDictionary<string, Dictionary<string, FileSystemInfo>>(StringComparer.OrdinalIgnoreCase);
public DirectoryService(ILogger logger)
{
_logger = logger;
}
- public List<FileSystemInfo> GetFileSystemEntries(string path)
+ public DirectoryService()
+ : this(new NullLogger())
+ {
+ }
+
+ public IEnumerable<FileSystemInfo> GetFileSystemEntries(string path)
{
return GetFileSystemEntries(path, false);
}
- private List<FileSystemInfo> GetFileSystemEntries(string path, bool clearCache)
+ public Dictionary<string, FileSystemInfo> GetFileSystemDictionary(string path)
+ {
+ return GetFileSystemDictionary(path, false);
+ }
+
+ private Dictionary<string, FileSystemInfo> GetFileSystemDictionary(string path, bool clearCache)
{
- List<FileSystemInfo> entries;
+ Dictionary<string, FileSystemInfo> entries;
if (clearCache)
{
- List<FileSystemInfo> removed;
+ Dictionary<string, FileSystemInfo> removed;
_cache.TryRemove(path, out removed);
}
@@ -46,21 +58,36 @@ namespace MediaBrowser.Controller.Providers
{
//_logger.Debug("Getting files for " + path);
+ entries = new Dictionary<string, FileSystemInfo>(StringComparer.OrdinalIgnoreCase);
+
try
{
- entries = new DirectoryInfo(path).EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly).ToList();
+ var list = new DirectoryInfo(path)
+ .EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly);
+
+ // Seeing dupes on some users file system for some reason
+ foreach (var item in list)
+ {
+ entries[item.FullName] = item;
+ }
}
catch (DirectoryNotFoundException)
{
- entries = new List<FileSystemInfo>();
}
+ //var group = entries.ToLookup(i => Path.GetDirectoryName(i.FullName)).ToList();
+
_cache.TryAdd(path, entries);
}
return entries;
}
+ private IEnumerable<FileSystemInfo> GetFileSystemEntries(string path, bool clearCache)
+ {
+ return GetFileSystemDictionary(path, clearCache).Values;
+ }
+
public IEnumerable<FileSystemInfo> GetFiles(string path)
{
return GetFiles(path, false);
@@ -74,9 +101,13 @@ namespace MediaBrowser.Controller.Providers
public FileSystemInfo GetFile(string path)
{
var directory = Path.GetDirectoryName(path);
- var filename = Path.GetFileName(path);
- return GetFiles(directory).FirstOrDefault(i => string.Equals(i.Name, filename, StringComparison.OrdinalIgnoreCase));
+ var dict = GetFileSystemDictionary(directory, false);
+
+ FileSystemInfo entry;
+ dict.TryGetValue(path, out entry);
+
+ return entry;
}
}
}
diff --git a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs
index 75aad4063..61bc3b87b 100644
--- a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs
+++ b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs
@@ -17,9 +17,12 @@ namespace MediaBrowser.Controller.Providers
/// Gets the metadata.
/// </summary>
/// <param name="info">The information.</param>
+ /// <param name="directoryService">The directory service.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{MetadataResult{`0}}.</returns>
- Task<LocalMetadataResult<TItemType>> GetMetadata(ItemInfo info, CancellationToken cancellationToken);
+ Task<LocalMetadataResult<TItemType>> GetMetadata(ItemInfo info,
+ IDirectoryService directoryService,
+ CancellationToken cancellationToken);
}
public class ItemInfo
diff --git a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs
index e7dcd03b5..a9e155509 100644
--- a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs
+++ b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Model.Entities;
-using System;
using System.Collections.Generic;
using System.Linq;
@@ -17,18 +16,24 @@ namespace MediaBrowser.Controller.Providers
public bool ForceSave { get; set; }
public MetadataRefreshOptions()
+ : this(new DirectoryService())
+ {
+ }
+
+ public MetadataRefreshOptions(IDirectoryService directoryService)
+ : base(directoryService)
{
MetadataRefreshMode = MetadataRefreshMode.Default;
}
- public MetadataRefreshOptions(MetadataRefreshOptions copy)
+ public MetadataRefreshOptions( MetadataRefreshOptions copy)
+ : base(copy.DirectoryService)
{
MetadataRefreshMode = copy.MetadataRefreshMode;
ForceSave = copy.ForceSave;
ReplaceAllMetadata = copy.ReplaceAllMetadata;
ImageRefreshMode = copy.ImageRefreshMode;
- DirectoryService = copy.DirectoryService;
ReplaceAllImages = copy.ReplaceAllImages;
ReplaceImages = copy.ReplaceImages.ToList();
}
@@ -37,15 +42,16 @@ namespace MediaBrowser.Controller.Providers
public class ImageRefreshOptions
{
public ImageRefreshMode ImageRefreshMode { get; set; }
- public IDirectoryService DirectoryService { get; set; }
+ public IDirectoryService DirectoryService { get; private set; }
public bool ReplaceAllImages { get; set; }
public List<ImageType> ReplaceImages { get; set; }
- public ImageRefreshOptions()
+ public ImageRefreshOptions(IDirectoryService directoryService)
{
ImageRefreshMode = ImageRefreshMode.Default;
+ DirectoryService = directoryService;
ReplaceImages = new List<ImageType>();
}
diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs
index 62f1febe7..f4afd3c24 100644
--- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs
+++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs
@@ -789,11 +789,9 @@ namespace MediaBrowser.Dlna.Didl
}
}
- var imageLimit = _profile.DidlAlbumArtLimit ?? 100;
-
AddImageResElement(item, element, 160, 160, playbackPercentage, "jpg", "JPEG_TN");
- if (imageLimit > 1)
+ if (!_profile.EnableSingleAlbumArtLimit)
{
AddImageResElement(item, element, 4096, 4096, playbackPercentage, "jpg", "JPEG_LRG");
AddImageResElement(item, element, 1024, 768, playbackPercentage, "jpg", "JPEG_MED");
diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs
index 86d108ac8..6f175ccd6 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs
@@ -47,7 +47,7 @@ namespace MediaBrowser.Dlna.Profiles
ProtocolInfo =
"http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000";
- DidlAlbumArtLimit = 1;
+ EnableSingleAlbumArtLimit = true;
TranscodingProfiles = new[]
{
diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs
index 7a5adf25f..32cf8b554 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs
@@ -44,7 +44,7 @@ namespace MediaBrowser.Dlna.Profiles
Manufacturer = "Microsoft Corporation";
ManufacturerUrl = "http://www.microsoft.com/";
SonyAggregationFlags = "10";
- DidlAlbumArtLimit = 1;
+ EnableSingleAlbumArtLimit = true;
TranscodingProfiles = new[]
{
diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs
index b5443e27b..85643bace 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs
@@ -44,7 +44,7 @@ namespace MediaBrowser.Dlna.Profiles
Manufacturer = "Microsoft Corporation";
ManufacturerUrl = "http://www.microsoft.com/";
SonyAggregationFlags = "10";
- DidlAlbumArtLimit = 1;
+ EnableSingleAlbumArtLimit = true;
TranscodingProfiles = new[]
{
diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs
index 9ae346fcf..0f7151a84 100644
--- a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs
@@ -44,7 +44,7 @@ namespace MediaBrowser.Dlna.Profiles
Manufacturer = "Microsoft Corporation";
ManufacturerUrl = "http://www.microsoft.com/";
SonyAggregationFlags = "10";
- DidlAlbumArtLimit = 1;
+ EnableSingleAlbumArtLimit = true;
TranscodingProfiles = new[]
{
diff --git a/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs b/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs
index a2152d896..e92b0acfe 100644
--- a/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs
+++ b/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs
@@ -37,7 +37,7 @@ namespace MediaBrowser.Dlna.Profiles
SonyAggregationFlags = "10";
XDlnaDoc = "DMS-1.50";
- DidlAlbumArtLimit = 1;
+ EnableSingleAlbumArtLimit = true;
DirectPlayProfiles = new[]
{
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Android.xml b/MediaBrowser.Dlna/Profiles/Xml/Android.xml
index 0b4f9f7b1..34cc3b092 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Android.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Android.xml
@@ -10,7 +10,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml
index 50ae2a2ed..1f16d89db 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml
@@ -10,7 +10,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml
index ad36f78b9..27cad32d7 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml
@@ -15,7 +15,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml
index aec9e2494..603ec554e 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml
@@ -16,7 +16,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml
index 8546ba61c..c8eff5b1d 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml
@@ -17,7 +17,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml
index 000a26ce0..e625555bd 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml
@@ -16,7 +16,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml
index d1a2b69e8..9cd8a324f 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml
@@ -14,7 +14,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml
index c14008b4f..81ecfdab1 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml
@@ -16,7 +16,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml
index bc3e94136..7e6cf76a3 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml
@@ -17,7 +17,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
@@ -72,7 +72,11 @@
</Conditions>
</CodecProfile>
</CodecProfiles>
- <ResponseProfiles />
+ <ResponseProfiles>
+ <ResponseProfile container="ts" type="Video" orgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO" mimeType="video/vnd.dlna.mpeg-tts">
+ <Conditions />
+ </ResponseProfile>
+ </ResponseProfiles>
<SubtitleProfiles>
<SubtitleProfile format="srt" method="External" />
</SubtitleProfiles>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml
index 0f39dbfa7..62d7a85d6 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml
@@ -10,7 +10,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml
index 4dc50994e..c903cdb14 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml
@@ -16,7 +16,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>true</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml
index d80de3043..1d0ea66bb 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml
@@ -16,7 +16,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml
index d7d193650..2a883ac67 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml
@@ -18,7 +18,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml
index fa241d16a..d9727ecd0 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml
@@ -17,7 +17,7 @@
<ModelUrl>http://www.microsoft.com/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit>1</DidlAlbumArtLimit>
+ <EnableSingleAlbumArtLimit>true</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_TN</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml
index 9055365be..1e3b48452 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml
@@ -17,7 +17,7 @@
<ModelUrl>http://www.microsoft.com/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit>1</DidlAlbumArtLimit>
+ <EnableSingleAlbumArtLimit>true</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_TN</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml
index 1abf97cbc..509f533b9 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml
@@ -17,7 +17,7 @@
<ModelUrl>http://www.microsoft.com/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit>1</DidlAlbumArtLimit>
+ <EnableSingleAlbumArtLimit>true</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_TN</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml
index 6bc408a6b..35e645422 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml
@@ -17,7 +17,7 @@
<ModelUrl>http://www.microsoft.com/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit>1</DidlAlbumArtLimit>
+ <EnableSingleAlbumArtLimit>true</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_TN</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml
index 2bbbd68fb..939f953b9 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml
@@ -17,7 +17,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit>1</DidlAlbumArtLimit>
+ <EnableSingleAlbumArtLimit>true</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_TN</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml
index ab945c619..e1e02c87b 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml
@@ -17,7 +17,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>true</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml b/MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml
index e06c6eca0..824ea3ca9 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml
@@ -14,7 +14,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml b/MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml
index e6b591d51..b878e8343 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml
@@ -10,7 +10,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml
index cf21c5434..17100466f 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml
@@ -17,7 +17,7 @@
<ModelUrl>http://www.microsoft.com/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml
index 90a4ef55d..7c791f13e 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml
@@ -15,7 +15,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml
index b6fec2bad..62830a54b 100644
--- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml
+++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml
@@ -16,7 +16,7 @@
<ModelUrl>http://mediabrowser.tv/</ModelUrl>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
- <DidlAlbumArtLimit xsi:nil="true" />
+ <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
<SupportedMediaTypes>Audio</SupportedMediaTypes>
<AlbumArtPn>JPEG_SM</AlbumArtPn>
<MaxAlbumArtWidth>480</MaxAlbumArtWidth>
diff --git a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs
index 25778d036..5eb067dcd 100644
--- a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Logging;
using System;
using System.IO;
using System.Threading;
@@ -14,11 +13,13 @@ namespace MediaBrowser.LocalMetadata
{
protected IFileSystem FileSystem;
- public async Task<LocalMetadataResult<T>> GetMetadata(ItemInfo info, CancellationToken cancellationToken)
+ public async Task<LocalMetadataResult<T>> GetMetadata(ItemInfo info,
+ IDirectoryService directoryService,
+ CancellationToken cancellationToken)
{
var result = new LocalMetadataResult<T>();
- var file = GetXmlFile(info, new DirectoryService(new NullLogger()));
+ var file = GetXmlFile(info, directoryService);
if (file == null)
{
diff --git a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
index cd9b78201..31329e6d7 100644
--- a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
+++ b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
@@ -33,7 +33,8 @@ namespace MediaBrowser.LocalMetadata.Images
{
var parentPath = Path.GetDirectoryName(item.Path);
- var parentPathFiles = directoryService.GetFileSystemEntries(parentPath);
+ var parentPathFiles = directoryService.GetFileSystemEntries(parentPath)
+ .ToList();
var nameWithoutExtension = _fileSystem.GetFileNameWithoutExtension(item.Path);
diff --git a/MediaBrowser.Model/Dlna/DeviceProfile.cs b/MediaBrowser.Model/Dlna/DeviceProfile.cs
index 66f593615..1fb553010 100644
--- a/MediaBrowser.Model/Dlna/DeviceProfile.cs
+++ b/MediaBrowser.Model/Dlna/DeviceProfile.cs
@@ -37,7 +37,7 @@ namespace MediaBrowser.Model.Dlna
public bool IgnoreTranscodeByteRangeRequests { get; set; }
public bool EnableAlbumArtInDidl { get; set; }
- public int? DidlAlbumArtLimit { get; set; }
+ public bool EnableSingleAlbumArtLimit { get; set; }
public string SupportedMediaTypes { get; set; }
diff --git a/MediaBrowser.Model/Dto/MediaSourceInfo.cs b/MediaBrowser.Model/Dto/MediaSourceInfo.cs
index 368f20181..068443238 100644
--- a/MediaBrowser.Model/Dto/MediaSourceInfo.cs
+++ b/MediaBrowser.Model/Dto/MediaSourceInfo.cs
@@ -21,6 +21,7 @@ namespace MediaBrowser.Model.Dto
public string Name { get; set; }
public long? RunTimeTicks { get; set; }
+ public bool ReadAtNativeFramerate { get; set; }
public VideoType? VideoType { get; set; }
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 2fdbe6740..1f46ee488 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -89,11 +89,6 @@ namespace MediaBrowser.Providers.Manager
public async Task RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
{
- if (refreshOptions.DirectoryService == null)
- {
- refreshOptions.DirectoryService = new DirectoryService(Logger);
- }
-
var itemOfType = (TItemType)item;
var config = ProviderManager.GetMetadataOptions(item);
@@ -324,7 +319,12 @@ namespace MediaBrowser.Providers.Manager
return item is TItemType;
}
- protected virtual async Task<RefreshResult> RefreshWithProviders(TItemType item, TIdType id, MetadataRefreshOptions options, List<IMetadataProvider> providers, ItemImageProvider imageService, CancellationToken cancellationToken)
+ protected virtual async Task<RefreshResult> RefreshWithProviders(TItemType item,
+ TIdType id,
+ MetadataRefreshOptions options,
+ List<IMetadataProvider> providers,
+ ItemImageProvider imageService,
+ CancellationToken cancellationToken)
{
var refreshResult = new RefreshResult
{
@@ -369,7 +369,7 @@ namespace MediaBrowser.Providers.Manager
try
{
- var localItem = await provider.GetMetadata(itemInfo, cancellationToken).ConfigureAwait(false);
+ var localItem = await provider.GetMetadata(itemInfo, options.DirectoryService, cancellationToken).ConfigureAwait(false);
if (localItem.HasMetadata)
{
diff --git a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
index 1d47ee9b9..c9d1424dc 100644
--- a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
+++ b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Common.Configuration;
+using System.Net;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
@@ -7,6 +8,7 @@ using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Net;
using MediaBrowser.Model.Providers;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Providers.Music;
@@ -88,7 +90,18 @@ namespace MediaBrowser.Providers.Movies
if (!string.IsNullOrEmpty(movieId))
{
- await EnsureMovieJson(movieId, cancellationToken).ConfigureAwait(false);
+ // Bad id entered
+ try
+ {
+ await EnsureMovieJson(movieId, cancellationToken).ConfigureAwait(false);
+ }
+ catch (HttpException ex)
+ {
+ if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound)
+ {
+ throw;
+ }
+ }
var path = GetFanartJsonPath(movieId);
diff --git a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs
index 179ab425b..9a16ae24d 100644
--- a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs
+++ b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs
@@ -252,7 +252,7 @@ namespace MediaBrowser.Providers.Subtitles
_monitor.ReportFileSystemChangeComplete(path, false);
}
- return _libraryManager.GetItemById(itemId).RefreshMetadata(new MetadataRefreshOptions
+ return _libraryManager.GetItemById(itemId).RefreshMetadata(new MetadataRefreshOptions(new DirectoryService())
{
ImageRefreshMode = ImageRefreshMode.ValidationOnly,
MetadataRefreshMode = MetadataRefreshMode.ValidationOnly
diff --git a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs
index 47c73abbb..05244af74 100644
--- a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs
+++ b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Common.IO;
+using System.Net;
+using MediaBrowser.Common.IO;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
@@ -6,6 +7,7 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Net;
using MediaBrowser.Model.Providers;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Providers.Music;
@@ -72,7 +74,18 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrEmpty(id) && season.IndexNumber.HasValue)
{
- await FanartSeriesProvider.Current.EnsureSeriesJson(id, cancellationToken).ConfigureAwait(false);
+ // Bad id entered
+ try
+ {
+ await FanartSeriesProvider.Current.EnsureSeriesJson(id, cancellationToken).ConfigureAwait(false);
+ }
+ catch (HttpException ex)
+ {
+ if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound)
+ {
+ throw;
+ }
+ }
var path = FanartSeriesProvider.Current.GetFanartJsonPath(id);
diff --git a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs
index 56945106a..2025f2fa1 100644
--- a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Common.Configuration;
+using System.Net;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
@@ -7,6 +8,7 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Net;
using MediaBrowser.Model.Providers;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Providers.Music;
@@ -81,7 +83,18 @@ namespace MediaBrowser.Providers.TV
if (!string.IsNullOrEmpty(id))
{
- await EnsureSeriesJson(id, cancellationToken).ConfigureAwait(false);
+ // Bad id entered
+ try
+ {
+ await EnsureSeriesJson(id, cancellationToken).ConfigureAwait(false);
+ }
+ catch (HttpException ex)
+ {
+ if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound)
+ {
+ throw;
+ }
+ }
var path = GetFanartJsonPath(id);
diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
index 87e2f6c9c..21d41ca00 100644
--- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
@@ -122,11 +122,13 @@ namespace MediaBrowser.Providers.TV
{
foreach (var series in group)
{
- await series.RefreshMetadata(new MetadataRefreshOptions
+ var directoryService = new DirectoryService();
+
+ await series.RefreshMetadata(new MetadataRefreshOptions(directoryService)
{
}, cancellationToken).ConfigureAwait(false);
- await series.ValidateChildren(new Progress<double>(), cancellationToken, new MetadataRefreshOptions(), true)
+ await series.ValidateChildren(new Progress<double>(), cancellationToken, new MetadataRefreshOptions(directoryService), true)
.ConfigureAwait(false);
}
}
@@ -469,7 +471,9 @@ namespace MediaBrowser.Providers.TV
/// <param name="seasonNumber">The season number.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{Season}.</returns>
- private async Task<Season> AddSeason(Series series, int seasonNumber, CancellationToken cancellationToken)
+ private async Task<Season> AddSeason(Series series,
+ int seasonNumber,
+ CancellationToken cancellationToken)
{
_logger.Info("Creating Season {0} entry for {1}", seasonNumber, series.Name);
diff --git a/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs b/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs
index fe4b16645..e346d6d01 100644
--- a/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs
+++ b/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs
@@ -77,7 +77,7 @@ namespace MediaBrowser.Server.Implementations.Collections
await parentFolder.AddChild(collection, CancellationToken.None).ConfigureAwait(false);
- await collection.RefreshMetadata(new MetadataRefreshOptions(), CancellationToken.None)
+ await collection.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()), CancellationToken.None)
.ConfigureAwait(false);
if (options.ItemIdList.Count > 0)
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 13ea7fb44..91e2b3697 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -530,7 +530,9 @@ namespace MediaBrowser.Server.Implementations.Library
return item;
}
- public BaseItem ResolvePath(FileSystemInfo fileInfo, Folder parent = null, string collectionType = null)
+ public BaseItem ResolvePath(FileSystemInfo fileInfo,
+ Folder parent = null,
+ string collectionType = null)
{
return ResolvePath(fileInfo, new DirectoryService(_logger), parent, collectionType);
}
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json
index f546cf531..aa4929300 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json
index f8651141a..202dda150 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json
index ae8b242ac..761046733 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json
index b38b94723..c8158937a 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json
index 1d390858c..84ac40902 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Kindersicherung",
"HeaderInvitationSent": "Einladung verschickt",
"MessageInvitationSentToUser": "Eine E-Mail mit der Einladung zum Sharing ist an {0} geschickt worden.",
- "MessageInvitationSentToNewUser": "Eine E-Mail mit der Einladung zur Anmeldung am Media Browser ist an {0} geschickt worden."
+ "MessageInvitationSentToNewUser": "Eine E-Mail mit der Einladung zur Anmeldung am Media Browser ist an {0} geschickt worden.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json
index 370df6f09..7e93cef9d 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json
index 1197db0f5..17bfb9502 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
index d66d49986..b25500b06 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json
index 51b199e49..d7a27cbf1 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json
index 1a4dfcf5d..c007c55dd 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json
@@ -600,13 +600,15 @@
"DeviceLastUsedByUserName": "\u00daltimo usado por {0}",
"HeaderDeleteDevice": "Eliminar Dispositivo",
"DeleteDeviceConfirmation": "\u00bfEsta seguro de querer eliminar este dispositivo? Volver\u00e1 a aparecer la siguiente vez que un usuario inicie sesi\u00f3n en \u00e9l.",
- "LabelEnableCameraUploadFor": "Habilitar subida desde la c\u00e1mara para:",
+ "LabelEnableCameraUploadFor": "Habilitar subir desde la c\u00e1mara para:",
"HeaderSelectUploadPath": "Seleccionar ruta de subida",
- "LabelEnableCameraUploadForHelp": "La subida ocurrir\u00e1 autom\u00e1ticamente en segundo plano al iniciar sesi\u00f3n en Media Browser.",
+ "LabelEnableCameraUploadForHelp": "Las subidas ocurrir\u00e1n autom\u00e1ticamente en segundo plano al iniciar sesi\u00f3n en Media Browser.",
"ErrorMessageStartHourGreaterThanEnd": "El horario de fin debe ser mayor al de comienzo.",
"ButtonLibraryAccess": "Acceso a biblioteca",
"ButtonParentalControl": "Control parental",
"HeaderInvitationSent": "Invitaci\u00f3n Enviada",
"MessageInvitationSentToUser": "Se ha enviado un correo electr\u00f3nico a {0}, invit\u00e1ndolo a aceptar tu invitaci\u00f3n para compartir.",
- "MessageInvitationSentToNewUser": "Se ha enviado un correo electr\u00f3nico a {0} invit\u00e1ndolo a registrarse con Media Browser."
+ "MessageInvitationSentToNewUser": "Se ha enviado un correo electr\u00f3nico a {0} invit\u00e1ndolo a registrarse con Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
index 6b4543d93..342a3df83 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
@@ -24,7 +24,7 @@
"UninstallPluginConfirmation": "\u00cates-vous s\u00fbr de vouloir d\u00e9sinstaller {0}?",
"NoPluginConfigurationMessage": "Ce plugin n'a rien \u00e0 configurer.",
"NoPluginsInstalledMessage": "Vous n'avez aucun plugin install\u00e9.",
- "BrowsePluginCatalogMessage": "Explorer notre catalogue de Plugins disponibles.",
+ "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.",
"MessageKeyEmailedTo": "Cl\u00e9 envoy\u00e9e par courriel \u00e0 {0}",
"MessageKeysLinked": "Cl\u00e9s associ\u00e9es.",
"HeaderConfirmation": "Confirmation",
@@ -573,7 +573,7 @@
"LabelShortRatingDescription": "Evaluation courte:",
"OptionIRecommendThisItem": "Je recommande cet article",
"WebClientTourContent": "Voir les medias ajout\u00e9s r\u00e9cemment, les prochains \u00e9pisodes et bien plus. Les cercles verts indiquent le nombre d'items que vous n'avez pas vu.",
- "WebClientTourMovies": "Lire les films, bandes-annonces et plus depuis n'importe quel p\u00e9riph\u00e9rique depuis un navigateur web",
+ "WebClientTourMovies": "Lire les films, bandes-annonces et plus depuis n'importe quel p\u00e9riph\u00e9rique avec un navigateur Web",
"WebClientTourMouseOver": "Laisser la souris au dessus des posters pour un acc\u00e8s rapide aux informations essentiels",
"WebClientTourTapHold": "Maintenir cliqu\u00e9 ou faire un clic droit sur n'importe quel poster pour le menu contextuel",
"WebClientTourMetadataManager": "Cliquer sur modifier pour ouvrir l'\u00e9diteur de m\u00e9dadonn\u00e9es",
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Contr\u00f4le parental",
"HeaderInvitationSent": "Invitation envoy\u00e9",
"MessageInvitationSentToUser": "Un mail a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0} pour les inviter \u00e0 accepter votre invitation de partage.",
- "MessageInvitationSentToNewUser": "Un mail a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0} pour les inviter \u00e0 s'inscrire sur Media Browser."
+ "MessageInvitationSentToNewUser": "Un mail a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0} pour les inviter \u00e0 s'inscrire sur Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json
index 7974df340..b16493d4e 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json
index c0ea87ed4..d272fb96e 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json
index 13c37aa9c..42dc85186 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
index 21c8ba889..ff00fae63 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
@@ -615,6 +615,8 @@
"ButtonLibraryAccess": "Library access",
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
- "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
}
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
index 74e6c479e..b2880874e 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "\u041c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0431\u0430\u0441\u049b\u0430\u0440\u0443",
"HeaderInvitationSent": "\u0428\u0430\u049b\u044b\u0440\u0443 \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456",
"MessageInvitationSentToUser": "\u041e\u043b\u0430\u0440\u0493\u0430 \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u0448\u0430\u049b\u044b\u0440\u0443\u044b\u04a3\u044b\u0437\u0434\u044b \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u0441\u044b\u043c\u0435\u043d, \u044d-\u043f\u043e\u0448\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043f \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456.",
- "MessageInvitationSentToNewUser": "\u041e\u043b\u0430\u0440\u0493\u0430 Media Browser \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0436\u0430\u0441\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u0441\u044b\u043c\u0435\u043d, \u044d-\u043f\u043e\u0448\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043f \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456."
+ "MessageInvitationSentToNewUser": "\u041e\u043b\u0430\u0440\u0493\u0430 Media Browser \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0436\u0430\u0441\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u0441\u044b\u043c\u0435\u043d, \u044d-\u043f\u043e\u0448\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043f \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json
index 54196ba4a..6409e07f4 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json
index 4c09b3491..f09cf7dfc 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json
@@ -436,7 +436,7 @@
"HeaderPluginInstallation": "Programtillegg installasjon",
"MessageAlreadyInstalled": "Denne versjonen er allerede installert.",
"ValueReviewCount": "{0} Anmeldelser",
- "MessageYouHaveVersionInstalled": "You currently have version {0} installed.",
+ "MessageYouHaveVersionInstalled": "Du har for \u00f8yeblikket versjon {0} installert",
"MessageTrialExpired": "Pr\u00f8veperioden for denne funksjonen er utl\u00f8pt",
"MessageTrialWillExpireIn": "Pr\u00f8veperioden for denne funksjonen utl\u00f8per om {0} dag (er)",
"MessageInstallPluginFromApp": "Dette programtillegget m\u00e5 installeres direkte i appen du har tenkt \u00e5 bruke den i.",
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
index 5d057cbfa..329a5845a 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Ouderlijk toezicht",
"HeaderInvitationSent": "Uitnodiging verzonden",
"MessageInvitationSentToUser": "Een email is verzonden naar {0} om je uitnodiging om media te delen te accepteren.",
- "MessageInvitationSentToNewUser": "Een email is verzonden naar {0} om je uitnodiging aan te melden bij Media Browser"
+ "MessageInvitationSentToNewUser": "Een email is verzonden naar {0} om je uitnodiging aan te melden bij Media Browser",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json
index 13c123848..b46ed9f5f 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
index 34732239d..3c560cd6b 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
@@ -74,8 +74,8 @@
"ButtonMarkTheseRead": "Marcar como lida",
"ButtonClose": "Fechar",
"LabelAllPlaysSentToPlayer": "Todas as reprodu\u00e7\u00f5es ser\u00e3o enviadas para o reprodutor selecionado.",
- "MessageInvalidUser": "Invalid username or password. Please try again.",
- "HeaderLoginFailure": "Login Failure",
+ "MessageInvalidUser": "Nome de usu\u00e1rio ou senha inv\u00e1lidos. Por favor, tente novamente.",
+ "HeaderLoginFailure": "Falha no Login",
"HeaderAllRecordings": "Todas as Grava\u00e7\u00f5es",
"RecommendationBecauseYouLike": "Porque voc\u00ea gosta de {0}",
"RecommendationBecauseYouWatched": "Porque voc\u00ea assistiu {0}",
@@ -604,9 +604,11 @@
"HeaderSelectUploadPath": "Selecione o caminho para carga",
"LabelEnableCameraUploadForHelp": "Cargas ser\u00e3o executadas automaticamente em retaguarda quando logar no Media Browser.",
"ErrorMessageStartHourGreaterThanEnd": "O tempo final deve ser maior que o tempo inicial.",
- "ButtonLibraryAccess": "Library access",
- "ButtonParentalControl": "Parental control",
- "HeaderInvitationSent": "Invitation Sent",
- "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "ButtonLibraryAccess": "Acesso \u00e0 biblioteca",
+ "ButtonParentalControl": "Controle Parental",
+ "HeaderInvitationSent": "Convite Enviado",
+ "MessageInvitationSentToUser": "Um email foi enviado para {0}, convidando para aceitar seu convite de compartilhamento.",
+ "MessageInvitationSentToNewUser": "Um email foi enviado para {0}, convidando para inscrever-se no Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json
index 83d53c60c..5fae1a637 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
index bb897b9e2..141e605f7 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c",
"HeaderInvitationSent": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e",
"MessageInvitationSentToUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0438\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e.",
- "MessageInvitationSentToNewUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0438\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Media Browser."
+ "MessageInvitationSentToNewUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0438\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json
index 8aa94d6d8..6ff993fc3 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json
index d8362a10c..50426fe66 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json
index ff9cc36c0..681bd2f83 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json
index fec3430ed..ad630f2c9 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
index 7fefbbf6c..3f1d56c34 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
@@ -608,5 +608,7 @@
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
- "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser."
+ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
+ "HeaderConnectionFailure": "Connection Failure",
+ "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ar.json b/MediaBrowser.Server.Implementations/Localization/Server/ar.json
index 283eb2773..d0e525b1e 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ca.json b/MediaBrowser.Server.Implementations/Localization/Server/ca.json
index 873041453..fda37bbf6 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/cs.json b/MediaBrowser.Server.Implementations/Localization/Server/cs.json
index 51276d374..e0ff02e18 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/da.json b/MediaBrowser.Server.Implementations/Localization/Server/da.json
index 70c2797a8..d06b968e3 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/da.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/de.json b/MediaBrowser.Server.Implementations/Localization/Server/de.json
index 79d48233b..841057e7c 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/de.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "Keine Trailer gefunden. Installiere das Trailer Channel Plugin, um eine Bibliothek aus Trailern vom Internet zu importieren.",
"HeaderNewUsers": "Neue Benutzer",
"ButtonSignUp": "Anmeldung",
- "ButtonForgotPassword": "Passwort vergessen?"
+ "ButtonForgotPassword": "Passwort vergessen?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/el.json b/MediaBrowser.Server.Implementations/Localization/Server/el.json
index 7761da2b5..09a45a39c 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/el.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json
index 8bfd198e4..3442778c4 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json
index cdf2b1993..029124104 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es.json b/MediaBrowser.Server.Implementations/Localization/Server/es.json
index 4f8b09138..558520011 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/es.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json
index 3e49f42dc..79100f98d 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json
@@ -256,7 +256,7 @@
"LabelAllowServerAutoRestartHelp": "El servidor reiniciar\u00e1 \u00fanicamente durante periodos ociosos, cuando no haya usuarios activos.",
"LabelEnableDebugLogging": "Habilitar bit\u00e1coras de depuraci\u00f3n",
"LabelRunServerAtStartup": "Ejecutar el servidor al iniciar",
- "LabelRunServerAtStartupHelp": "Esto iniciar\u00e1 el icono den el \u00e1rea de notificaci\u00f3n cuando windows arranque. Para iniciar el servicio de windows, desmarque esta opci\u00f3n y ejecute el servicio desde el panel de control de windows. Por favor tome en cuenta que no puede ejecutar ambos simult\u00e1neamente, por lo que deber\u00e1 finalizar el icono del \u00e1rea de notificaci\u00f3n antes de iniciar el servicio.",
+ "LabelRunServerAtStartupHelp": "Esto iniciar\u00e1 el icono en el \u00e1rea de notificaci\u00f3n cuando windows arranque. Para iniciar el servicio de windows, desmarque esta opci\u00f3n y ejecute el servicio desde el panel de control de windows. Por favor tome en cuenta que no puede ejecutar ambos simult\u00e1neamente, por lo que deber\u00e1 finalizar el icono del \u00e1rea de notificaci\u00f3n antes de iniciar el servicio.",
"ButtonSelectDirectory": "Seleccionar Carpeta",
"LabelCustomPaths": "Especificar rutas personalizadas cuando se desee. Deje los campos vac\u00edos para usar los valores predeterminados.",
"LabelCachePath": "Ruta para el Cach\u00e9:",
@@ -1203,18 +1203,18 @@
"LabelDateAddedBehaviorHelp": "Si se encuentra un valor en los metadados siempre ser\u00e1 empleado antes que cualquiera de estas opciones.",
"LabelNumberTrailerToPlay": "N\u00famero de avances a reproducir:",
"TitleDevices": "Dispositivos",
- "TabCameraUpload": "Subida de C\u00e1mara",
+ "TabCameraUpload": "Subir desde la C\u00e1mara",
"TabDevices": "Dispositivos",
"HeaderCameraUploadHelp": "Suba a Media Broswer fotos y videos tomados desde sus dispositivos m\u00f3viles de forma autom\u00e1tica.",
- "MessageNoDevicesSupportCameraUpload": "Actualmente no cuenta con ning\u00fan dispositivo que soporte subida desde c\u00e1mara.",
- "LabelCameraUploadPath": "Ruta de subida desde c\u00e1mara:",
+ "MessageNoDevicesSupportCameraUpload": "Actualmente no cuenta con ning\u00fan dispositivo que soporte subir desde la c\u00e1mara.",
+ "LabelCameraUploadPath": "Ruta para subir desde la c\u00e1mara:",
"LabelCameraUploadPathHelp": "Seleccione una ruta personalizada. si lo desea. Si no se especifica, se emplear\u00e1 una carpeta por omisi\u00f3n.",
"LabelCreateCameraUploadSubfolder": "Crear una subcarpeta para cada dispositivo",
"LabelCreateCameraUploadSubfolderHelp": "Se pueden especificar carpetas espec\u00edficas para un dispositivo haciendo clic en \u00e9l desde la p\u00e1gina de Dispositivos.",
"LabelCustomDeviceDisplayName": "Nombre a Desplegar:",
"LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre a desplegar personalizado o d\u00e9jelo vac\u00edo para usar el nombre reportado por el dispositivo.",
"HeaderInviteUser": "Invitar Usuario",
- "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Media Browser website, or their email address.",
+ "LabelConnectGuestUserNameHelp": "Este es el nombre de usuario que su amigo utiliza para iniciar sesi\u00f3n en el sitio web de Media Browser, o su cuenta de correo electr\u00f3nico.",
"HeaderInviteUserHelp": "Compartir sus medios con amigos es m\u00e1s f\u00e1cil que nunca con Media Browser Connect.",
"ButtonSendInvitation": "Enviar invitaci\u00f3n",
"HeaderGuests": "Invitados",
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No se encontraron avances. Instalar el complemento \"Canal trailers\" para importar una biblioteca de avances de internet.",
"HeaderNewUsers": "Nuevos Usuarios",
"ButtonSignUp": "Registrarse",
- "ButtonForgotPassword": "\u00bfOlvidaste la contrase\u00f1a?"
+ "ButtonForgotPassword": "\u00bfOlvidaste la contrase\u00f1a?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json
index aa200b6f3..baca03060 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json
@@ -39,7 +39,7 @@
"HeaderSetupLibrary": "Configurer votre biblioth\u00e8que de m\u00e9dia",
"ButtonAddMediaFolder": "Ajouter un r\u00e9pertoire de m\u00e9dia",
"LabelFolderType": "Type de r\u00e9pertoire:",
- "MediaFolderHelpPluginRequired": "* Requiert l'utilisation d'un plug-in, Ex: GameBrowser ou MB BookShelf",
+ "MediaFolderHelpPluginRequired": "* N\u00e9cessite l'utilisation d'un plugin, par exemple : \"GameBrowser\" ou \"MB BookShelf\".",
"ReferToMediaLibraryWiki": "Se r\u00e9f\u00e9rer au wiki des biblioth\u00e8ques de m\u00e9dia",
"LabelCountry": "Pays:",
"LabelLanguage": "Langue:",
@@ -726,7 +726,7 @@
"LabelDeviceDescription": "Description du p\u00e9riph\u00e9rique",
"HeaderIdentificationCriteriaHelp": "Entrer au moins un crit\u00e8re d'identification.",
"HeaderDirectPlayProfileHelp": "Ajouter des profils de lecture directe pour indiquer quels formats le p\u00e9riph\u00e9rique peut lire de fa\u00e7on native.",
- "HeaderTranscodingProfileHelp": "Ajoutez des profils de transcodage pour sp\u00e9cifier quels formats doit \u00eatre transcod\u00e9.",
+ "HeaderTranscodingProfileHelp": "Ajoutez des profils de transcodage pour indiquer quels formats devraient \u00eatre utilis\u00e9s quand le transcodage est requis.",
"HeaderResponseProfileHelp": "Les profils de r\u00e9ponse permettent de personnaliser l'information envoy\u00e9e au p\u00e9riph\u00e9rique lors de la lecture de certains types de m\u00e9dia.",
"LabelXDlnaCap": "Cap X-Dlna:",
"LabelXDlnaCapHelp": "D\u00e9termine le contenu des \u00e9l\u00e9ments X_DLNACAP dans l'espace de nom urn:schemas-dlna-org:device-1-0.",
@@ -1172,27 +1172,27 @@
"ButtonLearnMore": "Apprendre plus",
"TabPlayback": "Lecture",
"HeaderTrailersAndExtras": "Bandes-annonces et extras",
- "OptionFindTrailers": "Trouver automatiquement les bandes-annonces sur Internet",
+ "OptionFindTrailers": "Rechercher automatiquement les bandes-annonces sur Internet",
"HeaderLanguagePreferences": "Pr\u00e9f\u00e9rences de langue",
"TabCinemaMode": "Mode cin\u00e9ma",
"TitlePlayback": "Lecture",
"LabelEnableCinemaModeFor": "Activer le mode cin\u00e9ma pour :",
"CinemaModeConfigurationHelp": "Le mode cin\u00e9ma apporte l'exp\u00e9rience du cin\u00e9ma directement dans votre salon avec l'abilit\u00e9 de lire les bandes-annonces et les introductions personnalis\u00e9es avant le programme principal.",
- "OptionTrailersFromMyMovies": "Inclure les bandes-annonces des films dans la biblioth\u00e8que",
- "OptionUpcomingMoviesInTheaters": "Inclure les bandes-annonces des nouveaux et anciens films",
- "LabelLimitIntrosToUnwatchedContent": "Utiliser uniquement les bandes-annonces du contenu non visionn\u00e9",
+ "OptionTrailersFromMyMovies": "Inclure les bandes-annonces des films dans ma biblioth\u00e8que",
+ "OptionUpcomingMoviesInTheaters": "Inclure les bandes-annonces des nouveaut\u00e9s et des films \u00e0 l'affiche",
+ "LabelLimitIntrosToUnwatchedContent": "Utiliser seulement les bandes-annonces du contenu non lu",
"LabelEnableIntroParentalControl": "Activer le control parental intelligent",
- "LabelEnableIntroParentalControlHelp": "Les bandes-annonces ne pourront \u00eatre s\u00e9lectionn\u00e9es qu'avec un niveau d'acc\u00e8s \u00e9gal ou inf\u00e9rieur \u00e0 celui du contenu \u00e0 visionner.",
- "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "Ces fonctionnalit\u00e9s n\u00e9cessitent un compte membre actif et l'installation du plugin Bande annonces.",
- "OptionTrailersFromMyMoviesHelp": "Requiert la configuration des bandes-annonces locales.",
+ "LabelEnableIntroParentalControlHelp": "Les bandes-annonces seront seulement s\u00e9lectionn\u00e9es avec un niveau de contr\u00f4le parental \u00e9gal ou inf\u00e9rieur \u00e0 celui du contenu en cours de lecture.",
+ "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "Ces fonctionnalit\u00e9s n\u00e9cessitent un abonnement actif comme supporteur et l'installation du plugin \"Trailer channel\".",
+ "OptionTrailersFromMyMoviesHelp": "N\u00e9cessite la configuration des bandes-annonces locales.",
"LabelCustomIntrosPath": "Chemin des intros personnalis\u00e9es :",
- "LabelCustomIntrosPathHelp": "Un r\u00e9pertoire contenant des fichiers vid\u00e9os. Une vid\u00e9o sera s\u00e9lectionn\u00e9e al\u00e9atoirement et jou\u00e9e apr\u00e8s les bandes-annonces.",
+ "LabelCustomIntrosPathHelp": "Un r\u00e9pertoire contenant des fichiers vid\u00e9os. Une vid\u00e9o sera s\u00e9lectionn\u00e9e al\u00e9atoirement et lue apr\u00e8s les bandes-annonces.",
"ValueSpecialEpisodeName": "Sp\u00e9cial - {0}",
"LabelSelectInternetTrailersForCinemaMode": "Bandes-annonces Internet :",
- "OptionUpcomingDvdMovies": "Inclure les bandes annonces des nouveaux et prochains films en DVD et Blu-Ray",
- "OptionUpcomingStreamingMovies": "Inclure les bandes annonces des nouveaux et prochains films de NetFlix",
- "LabelDisplayTrailersWithinMovieSuggestions": "Afficher les bandes-annonces dans les suggestions de film.",
- "LabelDisplayTrailersWithinMovieSuggestionsHelp": "N\u00e9cessite l'installation du plugin Trailer",
+ "OptionUpcomingDvdMovies": "Inclure les bandes-annonces des nouveaut\u00e9s et des films \u00e0 venir sur DVD et Blu-Ray",
+ "OptionUpcomingStreamingMovies": "Inclure les bandes-annonces des nouveaut\u00e9s et des films \u00e0 l'affiche sur Netflix",
+ "LabelDisplayTrailersWithinMovieSuggestions": "Afficher les bandes-annonces dans les suggestions de films.",
+ "LabelDisplayTrailersWithinMovieSuggestionsHelp": "N\u00e9cessite l'installation du plugin \"Trailer channel\".",
"CinemaModeConfigurationHelp2": "Les utilisateurs ont la possibilit\u00e9 de d\u00e9sactiver le mode cin\u00e9ma dans leurs propres pr\u00e9f\u00e9rences.",
"LabelEnableCinemaMode": "Activer le mode cin\u00e9ma",
"HeaderCinemaMode": "Mode cin\u00e9ma",
@@ -1235,10 +1235,14 @@
"HeaderOptionalLinkMediaBrowserAccount": "Optionnel: lier votre compte Media Browser",
"ButtonTrailerReel": "Trailer reel",
"HeaderTrailerReel": "Trailer reel",
- "OptionPlayUnwatchedTrailersOnly": "Visionner uniquement les bandes annonces non vues",
+ "OptionPlayUnwatchedTrailersOnly": "Lire seulement les bandes-annonces non lus.",
"HeaderTrailerReelHelp": "Commencer un \"trailer reel\" pour lire une longue liste de lecture de bandes-annonces.",
- "MessageNoTrailersFound": "Aucune bande-annonce trouv\u00e9e. Installer le \"Trailer channel\" plugin pour importer une biblioth\u00e8que de bandes-annonces Internet.",
+ "MessageNoTrailersFound": "Aucune bande-annonce trouv\u00e9e. Installer le plugin \"Trailer channel\" pour importer une biblioth\u00e8que de bandes-annonces Internet.",
"HeaderNewUsers": "Nouveaux utilisateurs",
"ButtonSignUp": "S'inscrire",
- "ButtonForgotPassword": "Mot de passe oubli\u00e9 ?"
+ "ButtonForgotPassword": "Mot de passe oubli\u00e9 ?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/he.json b/MediaBrowser.Server.Implementations/Localization/Server/he.json
index df5489b4b..88f491f95 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/he.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/hr.json b/MediaBrowser.Server.Implementations/Localization/Server/hr.json
index 952f3fcb4..b63e81043 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/hr.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/hr.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/it.json b/MediaBrowser.Server.Implementations/Localization/Server/it.json
index 8b9544767..1a789aa5d 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/it.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/kk.json b/MediaBrowser.Server.Implementations/Localization/Server/kk.json
index 048d1b13f..bf6b3cfdc 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "\u0415\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b. \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440 \u049b\u043e\u0440\u044b\u043d \u0438\u043c\u043f\u043e\u0440\u0442\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440 \u0430\u0440\u043d\u0430\u0441\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0456\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u04a3\u044b\u0437.",
"HeaderNewUsers": "\u0416\u0430\u04a3\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440",
"ButtonSignUp": "\u0422\u0456\u0440\u043a\u0435\u043b\u0443",
- "ButtonForgotPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u04b1\u043c\u044b\u0442\u044b\u043b\u0434\u044b \u043c\u0430?"
+ "ButtonForgotPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u04b1\u043c\u044b\u0442\u044b\u043b\u0434\u044b \u043c\u0430?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ko.json b/MediaBrowser.Server.Implementations/Localization/Server/ko.json
index 1137090c0..6a39d6e57 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ms.json b/MediaBrowser.Server.Implementations/Localization/Server/ms.json
index c32f65df3..b570b6e44 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nb.json b/MediaBrowser.Server.Implementations/Localization/Server/nb.json
index 9fad01cec..9cc51feff 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json
@@ -1147,10 +1147,10 @@
"HeaderXmlSettings": "Xml innstillinger",
"HeaderXmlDocumentAttributes": "Xml dokument attributter",
"HeaderXmlDocumentAttribute": "Xml dokument attributt",
- "XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every xml response.",
+ "XmlDocumentAttributeListHelp": "Disse attributtene p\u00e5f\u00f8res rot elementet for alle xml responser.",
"OptionSaveMetadataAsHidden": "Lagre metadata og bilder som skjulte filer",
- "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan",
- "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.",
+ "LabelExtractChaptersDuringLibraryScan": "Hent ut kapittel bilder under bibliotek skann",
+ "LabelExtractChaptersDuringLibraryScanHelp": "Hvis aktivert, vil kapittel bilder bli hentet ut mens videoer importeres under bibliotek skanning.\nHvis deaktivert, vil de bli hentet ut under planlagte oppgaver for kapittel bilder, som medf\u00f8rer at vanlig bibliotek skanning blir fortere ferdig.",
"LabelConnectGuestUserName": "Their Media Browser username or email address:",
"LabelConnectUserName": "Media Browser brukernavn\/e-post",
"LabelConnectUserNameHelp": "Connect this user to a Media Browser account to enable easy sign-in access from Media Browser any app without having to know the server ip address.",
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nl.json b/MediaBrowser.Server.Implementations/Localization/Server/nl.json
index 921dc3d5d..dc9703835 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "Geen trailers gevonden. Installeer het trailer kanaal om internet trailers te importeren.",
"HeaderNewUsers": "Nieuwe gebruikers",
"ButtonSignUp": "Aanmelden",
- "ButtonForgotPassword": "Wachtwoord vergeten?"
+ "ButtonForgotPassword": "Wachtwoord vergeten?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pl.json b/MediaBrowser.Server.Implementations/Localization/Server/pl.json
index 91afc7433..ff34c00cf 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json
index a8548838f..cd88cc7f0 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json
@@ -821,7 +821,7 @@
"HeaderWelcomeToMediaBrowserWebClient": "Bem-vindo ao Cliente Web do Media Browser",
"ButtonDismiss": "Descartar",
"ButtonTakeTheTour": "Fa\u00e7a o tour",
- "ButtonEditOtherUserPreferences": "Edit this user's profile and personal preferences.",
+ "ButtonEditOtherUserPreferences": "Editar este perfil de usu\u00e1rio e prefer\u00eancias pessoais.",
"LabelChannelStreamQuality": "Qualidade preferida do stream de internet:",
"LabelChannelStreamQualityHelp": "Em um ambiente com banda larga de pouca velocidade, limitar a qualidade pode ajudar a assegurar um streaming mais flu\u00eddo.",
"OptionBestAvailableStreamQuality": "Melhor dispon\u00edvel",
@@ -1151,9 +1151,9 @@
"OptionSaveMetadataAsHidden": "Salvar metadados e imagens como arquivos ocultos",
"LabelExtractChaptersDuringLibraryScan": "Extrair imagens dos cap\u00edtulos durante o rastreamento da biblioteca",
"LabelExtractChaptersDuringLibraryScanHelp": "Se ativado, as imagens dos cap\u00edtulos ser\u00e3o extra\u00eddas quando os v\u00eddeos forem importados durante o rastreamento da biblioteca. Se desativado, elas ser\u00e3o extra\u00eddas durante a tarefa agendada de imagens dos cap\u00edtulos, permitindo que a tarefa de rastreamento da biblioteca seja mais r\u00e1pida.",
- "LabelConnectGuestUserName": "Their Media Browser username or email address:",
+ "LabelConnectGuestUserName": "Seu nome de usu\u00e1rio ou endere\u00e7o de email do Media Browser:",
"LabelConnectUserName": "Usu\u00e1rio\/email do Media Browser:",
- "LabelConnectUserNameHelp": "Connect this user to a Media Browser account to enable easy sign-in access from Media Browser any app without having to know the server ip address.",
+ "LabelConnectUserNameHelp": "Conectar este usu\u00e1rio \u00e0 conta do Media Browser para ativar o acesso f\u00e1cil de qualquer app do Media Browser sem a necessidade de conhecer o endere\u00e7o ip do servidor.",
"ButtonLearnMoreAboutMediaBrowserConnect": "Saiba mais sobre o Media Browser Connect",
"LabelExternalPlayers": "Reprodutores externos:",
"LabelExternalPlayersHelp": "Exibir bot\u00f5es para reproduzir conte\u00fado em reprodutores externos. Isto est\u00e1 dispon\u00edvel apenas em dispositivos que suportam esquemas url, geralmente Android e iOS. Com os reprodutores externos, geralmente n\u00e3o existe suporte para controle remoto ou para retomar.",
@@ -1214,7 +1214,7 @@
"LabelCustomDeviceDisplayName": "Nome para exibi\u00e7\u00e3o:",
"LabelCustomDeviceDisplayNameHelp": "Forne\u00e7a um nome para exibi\u00e7\u00e3o ou deixe vazio para usar o nome informado pelo dispositivo.",
"HeaderInviteUser": "Convidar usu\u00e1rio",
- "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Media Browser website, or their email address.",
+ "LabelConnectGuestUserNameHelp": "Este \u00e9 o nome de usu\u00e1rio que seus amigos usam para entrar no site do Media Browser, ou o endere\u00e7o de email deles.",
"HeaderInviteUserHelp": "Compartilhar suas m\u00eddias com seus amigos \u00e9 muito mais facil com o Media Browser Connect",
"ButtonSendInvitation": "Enviar convite",
"HeaderGuests": "Convidados",
@@ -1225,20 +1225,24 @@
"HeaderAccessScheduleHelp": "Criar um agendamento de acesso para limitar o acesso a certas horas.",
"ButtonAddSchedule": "Adicionar Agendamento",
"LabelAccessDay": "Dia da semana:",
- "LabelAccessStart": "Start time:",
- "LabelAccessEnd": "End time:",
- "HeaderSchedule": "Schedule",
- "OptionEveryday": "Every day",
- "OptionWeekdays": "Weekdays",
- "OptionWeekends": "Weekends",
- "MessageProfileInfoSynced": "User profile information synced with Media Browser Connect.",
- "HeaderOptionalLinkMediaBrowserAccount": "Optional: Link your Media Browser account",
- "ButtonTrailerReel": "Trailer reel",
- "HeaderTrailerReel": "Trailer Reel",
- "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers",
- "HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.",
- "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
- "HeaderNewUsers": "New Users",
- "ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "LabelAccessStart": "Hora inicial:",
+ "LabelAccessEnd": "Hora final:",
+ "HeaderSchedule": "Agendamento",
+ "OptionEveryday": "Todos os dias",
+ "OptionWeekdays": "Dias da semana",
+ "OptionWeekends": "Fins-de-semana",
+ "MessageProfileInfoSynced": "A informa\u00e7\u00e3o do perfil do usu\u00e1rio foi sincronizada com o Media Browser Connect.",
+ "HeaderOptionalLinkMediaBrowserAccount": "Opcional: Conectar sua conta do Media Browser",
+ "ButtonTrailerReel": "Carrossel de trailers",
+ "HeaderTrailerReel": "Carrossel de Trailers",
+ "OptionPlayUnwatchedTrailersOnly": "Reproduzir apenas trailers n\u00e3o assistidos",
+ "HeaderTrailerReelHelp": "Inicie um carrossel de trailers para reproduzir uma longa lista de reprodu\u00e7\u00e3o de trailers.",
+ "MessageNoTrailersFound": "Nenhum trailer encontrado. Instale o plugin de canal para importar uma biblioteca de trailers da internet.",
+ "HeaderNewUsers": "Novos Usu\u00e1rios",
+ "ButtonSignUp": "Entrar",
+ "ButtonForgotPassword": "Esqueceu a senha?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json
index 63cd0b2d0..7a25013d9 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json
index 35af43d91..6149960d7 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json
@@ -1214,7 +1214,7 @@
"LabelCustomDeviceDisplayName": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435:",
"LabelCustomDeviceDisplayNameHelp": "\u041f\u0440\u0438\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0451\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c.",
"HeaderInviteUser": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f",
- "LabelConnectGuestUserNameHelp": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u0430\u0448 \u0434\u0440\u0443\u0433 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u0441\u044f \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 Media Browser, \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u044d-\u043f\u043e\u0447\u0442\u044b.",
+ "LabelConnectGuestUserNameHelp": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u0430\u0448 \u0434\u0440\u0443\u0433 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 Media Browser, \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u044d-\u043f\u043e\u0447\u0442\u044b.",
"HeaderInviteUserHelp": "\u0421 Media Browser Connect \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0434\u0440\u0443\u0437\u044c\u044f\u043c\u0438.",
"ButtonSendInvitation": "\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435",
"HeaderGuests": "\u0413\u043e\u0441\u0442\u0438",
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u043a\u0430\u043d\u0430\u043b\u0430 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432.",
"HeaderNewUsers": "\u041d\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438",
"ButtonSignUp": "\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f",
- "ButtonForgotPassword": "\u0417\u0430\u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?"
+ "ButtonForgotPassword": "\u0417\u0430\u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json
index 54965c390..9009be3cd 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/server.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json
@@ -1258,5 +1258,8 @@
"ButtonSignUp": "Sign up",
"ButtonForgotPassword": "Forgot password?",
"OptionDisableUserPreferences": "Disable access to user preferences",
- "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences."
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email.",
+ "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly."
}
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sv.json b/MediaBrowser.Server.Implementations/Localization/Server/sv.json
index 5e28253e4..1a95f504b 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/tr.json b/MediaBrowser.Server.Implementations/Localization/Server/tr.json
index 909ed4f12..3c914ea87 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/vi.json b/MediaBrowser.Server.Implementations/Localization/Server/vi.json
index 005d966fa..d1fdf17df 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json
index 2a15f350a..e5a4e552b 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json
index 1745968fc..e63c99544 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json
@@ -1240,5 +1240,9 @@
"MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.",
"HeaderNewUsers": "New Users",
"ButtonSignUp": "Sign up",
- "ButtonForgotPassword": "Forgot password?"
+ "ButtonForgotPassword": "Forgot password?",
+ "OptionDisableUserPreferences": "Disable access to user preferences",
+ "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
+ "HeaderSelectServer": "Select Server",
+ "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email."
} \ No newline at end of file
diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
index 66d82cb14..f9ccfc88a 100644
--- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs
+++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
@@ -441,6 +441,7 @@ namespace MediaBrowser.WebDashboard.Api
"scheduledtaskpage.js",
"scheduledtaskspage.js",
"search.js",
+ "selectserver.js",
"serversecurity.js",
"songs.js",
"supporterkeypage.js",
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index 390ab6141..9ea996b5c 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -86,6 +86,12 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
+ <Content Include="dashboard-ui\scripts\selectserver.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\selectserver.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\thirdparty\apiclient\mediabrowser.apiclient.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs
index df61e67f9..1ee1b4241 100644
--- a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs
+++ b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Logging;
using MediaBrowser.XbmcMetadata.Savers;
using System;
using System.IO;
@@ -15,11 +14,13 @@ namespace MediaBrowser.XbmcMetadata.Providers
{
protected IFileSystem FileSystem;
- public async Task<LocalMetadataResult<T>> GetMetadata(ItemInfo info, CancellationToken cancellationToken)
+ public async Task<LocalMetadataResult<T>> GetMetadata(ItemInfo info,
+ IDirectoryService directoryService,
+ CancellationToken cancellationToken)
{
var result = new LocalMetadataResult<T>();
- var file = GetXmlFile(info, new DirectoryService(new NullLogger()));
+ var file = GetXmlFile(info, directoryService);
if (file == null)
{
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index e0e7674f5..a44361c0b 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.498</version>
+ <version>3.0.499</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.498" />
+ <dependency id="MediaBrowser.Common" version="3.0.499" />
<dependency id="NLog" version="3.1.0.0" />
<dependency id="SimpleInjector" version="2.6.0" />
<dependency id="sharpcompress" version="0.10.2" />
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index 3bc4af74f..520cff20d 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.498</version>
+ <version>3.0.499</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec
index 43e8e30ac..d743adff4 100644
--- a/Nuget/MediaBrowser.Model.Signed.nuspec
+++ b/Nuget/MediaBrowser.Model.Signed.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Model.Signed</id>
- <version>3.0.498</version>
+ <version>3.0.499</version>
<title>MediaBrowser.Model - Signed Edition</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index a73c5e912..1d969caf5 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.498</version>
+ <version>3.0.499</version>
<title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.498" />
+ <dependency id="MediaBrowser.Common" version="3.0.499" />
</dependencies>
</metadata>
<files>