From fadd9174b7f492c8b11fad979a513625b203e2d4 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 19 Mar 2015 13:34:53 -0400 Subject: [PATCH 01/29] update movie guide --- .../dashboard-ui/scripts/librarybrowser.js | 34 +++++++++++++++---- .../dashboard-ui/scripts/livetvitems.js | 5 +-- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/librarybrowser.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/librarybrowser.js index b149d3b12d..c035766018 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/librarybrowser.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/librarybrowser.js @@ -986,19 +986,41 @@ primaryImageAspectRatio = LibraryBrowser.getAveragePrimaryImageAspectRatio([item]); - var futureDateText; + if (options.showPremiereDateIndex) { - if (item.PremiereDate) { - try { + var futureDateText; + + if (item.PremiereDate) { + try { + + futureDateText = LibraryBrowser.getFutureDateText(parseISO8601Date(item.PremiereDate, { toLocal: true }), true); - futureDateText = LibraryBrowser.getFutureDateText(parseISO8601Date(item.PremiereDate, { toLocal: true }), true); + } catch (err) { + + } + } + + var val = futureDateText || Globalize.translate('HeaderUnknownDate'); - } catch (err) { + if (val != currentIndexValue) { + html += '

' + val + '

'; + currentIndexValue = val; } } + else if (options.showStartDateIndex) { + + var futureDateText; + + if (item.StartDate) { + try { + + futureDateText = LibraryBrowser.getFutureDateText(parseISO8601Date(item.StartDate, { toLocal: true }), true); + + } catch (err) { - if (options.showPremiereDateIndex && futureDateText) { + } + } var val = futureDateText || Globalize.translate('HeaderUnknownDate'); diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/livetvitems.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/livetvitems.js index e9632048fa..4dfbec2033 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/livetvitems.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/livetvitems.js @@ -52,8 +52,7 @@ limit: query.Limit, totalRecordCount: result.TotalRecordCount, viewButton: true, - showLimit: false, - addSelectionButton: true + showLimit: false }); $('.listTopPaging', page).html(pagingHtml).trigger('create'); @@ -69,6 +68,7 @@ showTitle: false, centerText: true, lazy: true, + showStartDateIndex: true, overlayText: false, showProgramAirInfo: true }); @@ -79,6 +79,7 @@ shape: "portrait", context: 'livetv', showTitle: true, + showStartDateIndex: true, lazy: true, cardLayout: true, showProgramAirInfo: true From 88547e470369e27dc11514cbe076cfcfdefece6e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 20 Mar 2015 01:40:51 -0400 Subject: [PATCH 02/29] update ILiveTvService --- .../Playback/BaseStreamingService.cs | 4 +- .../LiveTv/ILiveTvManager.cs | 4 +- .../LiveTv/ILiveTvService.cs | 23 +++- .../Encoder/BaseEncoder.cs | 5 +- .../LiveTv/LiveTvManager.cs | 110 ++++++++++++------ .../dashboard-ui/dashboard.html | 4 - .../dashboard-ui/scripts/dashboardpage.js | 1 - .../dashboard-ui/scripts/mediaplayer.js | 2 +- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 12 files changed, 105 insertions(+), 60 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 7115ddffdb..5c857aa379 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -1816,12 +1816,10 @@ protected async Task GetState(StreamRequest request, CancellationTo } private void AttachMediaStreamInfo(StreamState state, - ChannelMediaInfo mediaInfo, + MediaSourceInfo mediaSource, VideoStreamRequest videoRequest, string requestedUrl) { - var mediaSource = mediaInfo.ToMediaSource(); - state.InputProtocol = mediaSource.Protocol; state.MediaPath = mediaSource.Path; state.RunTimeTicks = mediaSource.RunTimeTicks; diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index 9b36454d2a..0b58a92328 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -149,7 +149,7 @@ public interface ILiveTvManager /// The identifier. /// The cancellation token. /// Task{Stream}. - Task GetRecordingStream(string id, CancellationToken cancellationToken); + Task GetRecordingStream(string id, CancellationToken cancellationToken); /// /// Gets the channel stream. @@ -157,7 +157,7 @@ public interface ILiveTvManager /// The identifier. /// The cancellation token. /// Task{StreamResponseInfo}. - Task GetChannelStream(string id, CancellationToken cancellationToken); + Task GetChannelStream(string id, CancellationToken cancellationToken); /// /// Gets the program. diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvService.cs b/MediaBrowser.Controller/LiveTv/ILiveTvService.cs index 993db00043..d7e3df4e23 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvService.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvService.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Drawing; +using MediaBrowser.Model.Dto; namespace MediaBrowser.Controller.LiveTv { @@ -172,18 +173,36 @@ public interface ILiveTvService /// Gets the recording stream. /// /// The recording identifier. + /// The stream identifier. /// The cancellation token. /// Task{Stream}. - Task GetRecordingStream(string recordingId, CancellationToken cancellationToken); + Task GetRecordingStream(string recordingId, string streamId, CancellationToken cancellationToken); /// /// Gets the channel stream. /// /// The channel identifier. + /// The stream identifier. /// The cancellation token. /// Task{Stream}. - Task GetChannelStream(string channelId, CancellationToken cancellationToken); + Task GetChannelStream(string channelId, string streamId, CancellationToken cancellationToken); + /// + /// Gets the channel stream media sources. + /// + /// The channel identifier. + /// The cancellation token. + /// Task<List<MediaSourceInfo>>. + Task> GetChannelStreamMediaSources(string channelId, CancellationToken cancellationToken); + + /// + /// Gets the recording stream media sources. + /// + /// The recording identifier. + /// The cancellation token. + /// Task<List<MediaSourceInfo>>. + Task> GetRecordingStreamMediaSources(string recordingId, CancellationToken cancellationToken); + /// /// Closes the live stream. /// diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs index 6ddc3487de..44e0d15173 100644 --- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs @@ -10,6 +10,7 @@ using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; @@ -527,11 +528,9 @@ private async Task AcquireResources(EncodingJob state, CancellationToken cancell } private void AttachMediaStreamInfo(EncodingJob state, - ChannelMediaInfo mediaInfo, + MediaSourceInfo mediaSource, EncodingJobOptions videoRequest) { - var mediaSource = mediaInfo.ToMediaSource(); - state.InputProtocol = mediaSource.Protocol; state.MediaPath = mediaSource.Path; state.RunTimeTicks = mediaSource.RunTimeTicks; diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 777a8936b9..075451146d 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common; +using System.Globalization; +using MediaBrowser.Common; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Progress; @@ -14,6 +15,7 @@ using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Sorting; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.LiveTv; @@ -304,12 +306,12 @@ public async Task GetInternalRecording(string id, Cancellation private readonly SemaphoreSlim _liveStreamSemaphore = new SemaphoreSlim(1, 1); - public async Task GetRecordingStream(string id, CancellationToken cancellationToken) + public async Task GetRecordingStream(string id, CancellationToken cancellationToken) { return await GetLiveStream(id, false, cancellationToken).ConfigureAwait(false); } - public async Task GetChannelStream(string id, CancellationToken cancellationToken) + public async Task GetChannelStream(string id, CancellationToken cancellationToken) { return await GetLiveStream(id, true, cancellationToken).ConfigureAwait(false); } @@ -324,20 +326,20 @@ private ILiveTvService GetService(string name) return _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)); } - private async Task GetLiveStream(string id, bool isChannel, CancellationToken cancellationToken) + private async Task GetLiveStream(string id, bool isChannel, CancellationToken cancellationToken) { await _liveStreamSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false); try { - ChannelMediaInfo info; + MediaSourceInfo info; if (isChannel) { var channel = GetInternalChannel(id); var service = GetService(channel); _logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId); - info = await service.GetChannelStream(channel.ExternalId, cancellationToken).ConfigureAwait(false); + info = await service.GetChannelStream(channel.ExternalId, null, cancellationToken).ConfigureAwait(false); } else { @@ -345,7 +347,7 @@ private async Task GetLiveStream(string id, bool isChannel, Ca var service = GetService(recording); _logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.RecordingInfo.Id); - info = await service.GetRecordingStream(recording.RecordingInfo.Id, cancellationToken).ConfigureAwait(false); + info = await service.GetRecordingStream(recording.RecordingInfo.Id, null, cancellationToken).ConfigureAwait(false); } _logger.Info("Live stream info: {0}", _jsonSerializer.SerializeToString(info)); @@ -375,41 +377,73 @@ private async Task GetLiveStream(string id, bool isChannel, Ca } } - private void Sanitize(ChannelMediaInfo info) + private void Sanitize(MediaSourceInfo mediaSource) { - // Clean some bad data coming from providers - - if (info.AudioBitrate.HasValue && info.AudioBitrate <= 0) - { - info.AudioBitrate = null; - } - if (info.VideoBitrate.HasValue && info.VideoBitrate <= 0) - { - info.VideoBitrate = null; - } - if (info.AudioChannels.HasValue && info.AudioChannels <= 0) - { - info.AudioChannels = null; - } - if (info.Framerate.HasValue && info.Framerate <= 0) - { - info.Framerate = null; - } - if (info.Width.HasValue && info.Width <= 0) + if (mediaSource.MediaStreams.Count == 0) { - info.Width = null; - } - if (info.Height.HasValue && info.Height <= 0) - { - info.Height = null; + mediaSource.MediaStreams.AddRange(new List + { + new MediaStream + { + Type = MediaStreamType.Video, + // Set the index to -1 because we don't know the exact index of the video stream within the container + Index = -1 + }, + new MediaStream + { + Type = MediaStreamType.Audio, + // Set the index to -1 because we don't know the exact index of the audio stream within the container + Index = -1 + } + }); } - if (info.AudioSampleRate.HasValue && info.AudioSampleRate <= 0) + + // Clean some bad data coming from providers + foreach (var stream in mediaSource.MediaStreams) { - info.AudioSampleRate = null; + if (stream.BitRate.HasValue && stream.BitRate <= 0) + { + stream.BitRate = null; + } + if (stream.Channels.HasValue && stream.Channels <= 0) + { + stream.Channels = null; + } + if (stream.AverageFrameRate.HasValue && stream.AverageFrameRate <= 0) + { + stream.AverageFrameRate = null; + } + if (stream.RealFrameRate.HasValue && stream.RealFrameRate <= 0) + { + stream.RealFrameRate = null; + } + if (stream.Width.HasValue && stream.Width <= 0) + { + stream.Width = null; + } + if (stream.Height.HasValue && stream.Height <= 0) + { + stream.Height = null; + } + if (stream.SampleRate.HasValue && stream.SampleRate <= 0) + { + stream.SampleRate = null; + } + if (stream.Level.HasValue && stream.Level <= 0) + { + stream.Level = null; + } } - if (info.VideoLevel.HasValue && info.VideoLevel <= 0) + + var indexes = mediaSource.MediaStreams.Select(i => i.Index).Distinct().ToList(); + + // If there are duplicate stream indexes, set them all to unknown + if (indexes.Count != mediaSource.MediaStreams.Count) { - info.VideoLevel = null; + foreach (var stream in mediaSource.MediaStreams) + { + stream.Index = -1; + } } } @@ -1433,7 +1467,7 @@ private LiveTvProgram GetCurrentProgram(string externalChannelId) return program; } - private async Task> GetNewTimerDefaultsInternal(CancellationToken cancellationToken, LiveTvProgram program = null) + private async Task> GetNewTimerDefaultsInternal(CancellationToken cancellationToken, LiveTvProgram program = null) { var service = program != null && !string.IsNullOrWhiteSpace(program.ServiceName) ? GetService(program) : @@ -1679,7 +1713,7 @@ public async Task> GetRecordingGroups(RecordingGr class LiveStreamData { - internal ChannelMediaInfo Info; + internal MediaSourceInfo Info; internal int ConsumerCount; internal string ItemId; internal bool IsChannel; diff --git a/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html b/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html index 15ac783174..5a2f040fab 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html @@ -111,10 +111,6 @@

${HeaderPaths}

${LabelTranscodingTemporaryFiles}

-

- ${LabelImagesByName}
- -

diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/dashboardpage.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/dashboardpage.js index ffe33ed5ca..e011cf4ff6 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/dashboardpage.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/dashboardpage.js @@ -60,7 +60,6 @@ $('#cachePath', page).html(systemInfo.CachePath); $('#logPath', page).html(systemInfo.LogPath); - $('#imagesByNamePath', page).html(systemInfo.ItemsByNamePath); $('#transcodingTemporaryPath', page).html(systemInfo.TranscodingTempPath); $('#metadataPath', page).html(systemInfo.InternalMetadataPath); }, diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js index 5caa88ef34..304872884a 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js @@ -589,7 +589,7 @@ var mediaSource; - ApiClient.getJSON(ApiClient.getUrl('Items/' + item.Id + '/MediaInfo', { + ApiClient.getJSON(ApiClient.getUrl('Items/' + item.Id + '/PlaybackInfo', { userId: Dashboard.getCurrentUserId() })).done(function (result) { diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index bbdce1f110..ea30ffd4fa 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.593 + 3.0.594 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 7aa7a9f695..1802aaf879 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.593 + 3.0.594 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index b33205c1e1..2a0d38bbf6 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.593 + 3.0.594 MediaBrowser.Model - Signed Edition Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index 9d6ad279ca..4fd30306b9 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.593 + 3.0.594 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - + From 1ed664c55f8d1cb39cec92760862499be986a59e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 20 Mar 2015 13:17:03 -0400 Subject: [PATCH 03/29] improve people naming --- .../UserLibrary/ArtistsService.cs | 1 - .../Library/LibraryManager.cs | 9 ++++++- .../Session/WebSocketController.cs | 25 ------------------- SharedVersion.cs | 4 +-- 4 files changed, 10 insertions(+), 29 deletions(-) diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs index 121d395ba3..dd9825debd 100644 --- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs +++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs @@ -5,7 +5,6 @@ using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Querying; using ServiceStack; using System; using System.Collections.Generic; diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 1f82e7ef13..64e5d20c99 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -886,7 +886,14 @@ private T GetItemByName(string path, string name) if (type == typeof(Person)) { - subFolderPrefix = validFilename.Substring(0, 1); + var subFolderIndex = 0; + + while (!char.IsLetterOrDigit(validFilename[subFolderIndex])) + { + subFolderIndex++; + } + + subFolderPrefix = validFilename.Substring(subFolderIndex, 1); } var fullPath = string.IsNullOrEmpty(subFolderPrefix) ? diff --git a/MediaBrowser.Server.Implementations/Session/WebSocketController.cs b/MediaBrowser.Server.Implementations/Session/WebSocketController.cs index 19aaaf8a55..f51998feac 100644 --- a/MediaBrowser.Server.Implementations/Session/WebSocketController.cs +++ b/MediaBrowser.Server.Implementations/Session/WebSocketController.cs @@ -233,8 +233,6 @@ public Task SendMessage(string name, T data, CancellationToken cancellationTo private Task SendMessageInternal(WebSocketMessage message, CancellationToken cancellationToken) { - if (SkipSending()) return Task.FromResult(true); - var socket = GetActiveSocket(); return socket.SendAsync(message, cancellationToken); @@ -242,8 +240,6 @@ private Task SendMessageInternal(WebSocketMessage message, CancellationTok private Task SendMessagesInternal(WebSocketMessage message, CancellationToken cancellationToken) { - if (SkipSending()) return Task.FromResult(true); - var tasks = GetActiveSockets().Select(i => Task.Run(async () => { try @@ -260,27 +256,6 @@ private Task SendMessagesInternal(WebSocketMessage message, CancellationTo return Task.WhenAll(tasks); } - private bool SkipSending() - { - if (Session != null) - { - if (string.Equals(Session.Client, "mb-classic", StringComparison.OrdinalIgnoreCase)) - { - Version version; - - if (!string.IsNullOrWhiteSpace(Session.ApplicationVersion) && Version.TryParse(Session.ApplicationVersion, out version)) - { - if (version < new Version(3, 0, 196)) - { - _logger.Debug("Skipping web socket message to MBC version {0}.", version); - return true; - } - } - } - } - return false; - } - public void Dispose() { foreach (var socket in Sockets.ToList()) diff --git a/SharedVersion.cs b/SharedVersion.cs index 851d73ed7c..3f8cacbfac 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -//[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5557.0")] +[assembly: AssemblyVersion("3.0.*")] +//[assembly: AssemblyVersion("3.0.5557.0")] From 701a39a9d67dd6e460816807df09d7bdd42ac0e3 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 20 Mar 2015 13:29:18 -0400 Subject: [PATCH 04/29] update call to stop transcoding --- .../dashboard-ui/scripts/mediaplayer.js | 9 +++++++-- .../thirdparty/apiclient/mediabrowser.apiclient.js | 13 +++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js index 304872884a..ec3cc5ed10 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/mediaplayer.js @@ -138,6 +138,7 @@ var transcodingExtension; var isStatic; + var currentStreamId = getParameterByName('StreamId', currentSrc); if (self.currentItem.MediaType == "Video") { @@ -172,6 +173,7 @@ if (finalParams.isStatic) { currentSrc = currentSrc.replace('.webm', '.mp4').replace('.m3u8', '.mp4'); + currentSrc = replaceQueryString(currentSrc, 'StreamId', ''); } else { currentSrc = currentSrc.replace('.mp4', transcodingExtension).replace('.m4v', transcodingExtension).replace('.mkv', transcodingExtension).replace('.webm', transcodingExtension); currentSrc = replaceQueryString(currentSrc, 'StreamId', new Date().getTime()); @@ -209,7 +211,7 @@ }); if (self.currentItem.MediaType == "Video") { - ApiClient.stopActiveEncodings().done(function () { + ApiClient.stopActiveEncodings(currentStreamId).done(function () { self.startTimeTicksOffset = ticks; element.src = currentSrc; @@ -1269,6 +1271,8 @@ var playerElement = this; + var currentStreamId = getParameterByName('StreamId', playerElement.currentSrc); + $(playerElement).off('.mediaplayerevent').off('ended.playbackstopped'); self.cleanup(playerElement); @@ -1279,7 +1283,8 @@ var mediaSource = self.currentMediaSource; if (item.MediaType == "Video") { - ApiClient.stopActiveEncodings(); + + ApiClient.stopActiveEncodings(currentStreamId); if (self.isFullScreen()) { self.exitFullScreen(); } diff --git a/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/apiclient/mediabrowser.apiclient.js b/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/apiclient/mediabrowser.apiclient.js index b65c829213..8ce9a7788c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/apiclient/mediabrowser.apiclient.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/apiclient/mediabrowser.apiclient.js @@ -1881,12 +1881,17 @@ }); }; - self.stopActiveEncodings = function () { - - var url = self.getUrl("Videos/ActiveEncodings", { + self.stopActiveEncodings = function (streamId) { + var options = { deviceId: deviceId - }); + }; + + if (streamId) { + options.streamId = streamId; + } + + var url = self.getUrl("Videos/ActiveEncodings", options); return self.ajax({ type: "DELETE", From 287c2ff1385df47ea5cc321baebedc5482928293 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 20 Mar 2015 16:06:04 -0400 Subject: [PATCH 05/29] incorporate file length into image cache tag --- .../Playback/Hls/BaseHlsService.cs | 3 +- MediaBrowser.Controller/Entities/BaseItem.cs | 22 ++++++-- .../Entities/ItemImageInfo.cs | 6 +++ MediaBrowser.Model/ApiClient/IApiClient.cs | 3 +- .../Manager/ItemImageProvider.cs | 1 + .../Drawing/ImageProcessor.cs | 54 ++++++++++++------- .../Dto/DtoService.cs | 5 +- .../dashboard-ui/scripts/externalplayer.js | 1 - 8 files changed, 66 insertions(+), 29 deletions(-) diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index 8541a60ef5..d4c0ddc70e 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -107,8 +107,7 @@ private async Task ProcessRequestAsync(StreamRequest request, bool isLiv throw; } - var waitCount = isLive ? 2 : 2; - await WaitForMinimumSegmentCount(playlist, waitCount, cancellationTokenSource.Token).ConfigureAwait(false); + await WaitForMinimumSegmentCount(playlist, 3, cancellationTokenSource.Token).ConfigureAwait(false); } } finally diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index dd6189bc57..cdb52ec668 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1519,6 +1519,7 @@ public void SetImagePath(ImageType type, int index, FileSystemInfo file) image.Path = file.FullName; image.DateModified = imageInfo.DateModified; + image.Length = imageInfo.Length; } } @@ -1623,11 +1624,14 @@ public ItemImageInfo GetImageInfo(ImageType imageType, int imageIndex) return null; } + var fileInfo = new FileInfo(path); + return new ItemImageInfo { Path = path, - DateModified = FileSystem.GetLastWriteTimeUtc(path), - Type = imageType + DateModified = FileSystem.GetLastWriteTimeUtc(fileInfo), + Type = imageType, + Length = fileInfo.Length }; } @@ -1686,6 +1690,7 @@ public bool AddImages(ImageType imageType, IEnumerable images) else { existing.DateModified = FileSystem.GetLastWriteTimeUtc(newImage); + existing.Length = ((FileInfo) newImage).Length; } } @@ -1700,7 +1705,8 @@ private ItemImageInfo GetImageInfo(FileSystemInfo file, ImageType type) { Path = file.FullName, Type = type, - DateModified = FileSystem.GetLastWriteTimeUtc(file) + DateModified = FileSystem.GetLastWriteTimeUtc(file), + Length = ((FileInfo)file).Length }; } @@ -1739,9 +1745,15 @@ public Task SwapImages(ImageType type, int index1, int index2) FileSystem.SwapFiles(path1, path2); + var file1 = new FileInfo(info1.Path); + var file2 = new FileInfo(info2.Path); + // Refresh these values - info1.DateModified = FileSystem.GetLastWriteTimeUtc(info1.Path); - info2.DateModified = FileSystem.GetLastWriteTimeUtc(info2.Path); + info1.DateModified = FileSystem.GetLastWriteTimeUtc(file1); + info2.DateModified = FileSystem.GetLastWriteTimeUtc(file2); + + info1.Length = file1.Length; + info2.Length = file2.Length; return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); } diff --git a/MediaBrowser.Controller/Entities/ItemImageInfo.cs b/MediaBrowser.Controller/Entities/ItemImageInfo.cs index b36b818ffe..1122de4032 100644 --- a/MediaBrowser.Controller/Entities/ItemImageInfo.cs +++ b/MediaBrowser.Controller/Entities/ItemImageInfo.cs @@ -11,6 +11,12 @@ public class ItemImageInfo /// The path. public string Path { get; set; } + /// + /// Gets or sets the length. + /// + /// The length. + public long Length { get; set; } + /// /// Gets or sets the type. /// diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index ef99e444f5..c5b74c5c10 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -690,8 +690,9 @@ public interface IApiClient : IServerEvents, IDisposable /// Stops the transcoding processes. /// /// The device identifier. + /// The stream identifier. /// Task. - Task StopTranscodingProcesses(string deviceId); + Task StopTranscodingProcesses(string deviceId, string streamId); /// /// Sets the index of the audio stream. diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index 3c75aa20ad..533e843ea8 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -386,6 +386,7 @@ public bool MergeImages(IHasImages item, List images) else { currentImage.DateModified = _fileSystem.GetLastWriteTimeUtc(image.FileInfo); + currentImage.Length = ((FileInfo) image.FileInfo).Length; } } } diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index 79e5a0cf00..a9affe1ec0 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -144,7 +144,7 @@ private void TestWebp() { var tmpPath = Path.Combine(_appPaths.TempDirectory, Guid.NewGuid() + ".webp"); Directory.CreateDirectory(Path.GetDirectoryName(tmpPath)); - + using (var wand = new MagickWand(1, 1, new PixelWand("none", 1))) { wand.SaveImage(tmpPath); @@ -186,21 +186,31 @@ public async Task ProcessImage(ImageProcessingOptions options) } var dateModified = options.Image.DateModified; + var length = options.Image.Length; if (options.CropWhiteSpace) { - var tuple = await GetWhitespaceCroppedImage(originalImagePath, dateModified).ConfigureAwait(false); + var tuple = await GetWhitespaceCroppedImage(originalImagePath, dateModified, length).ConfigureAwait(false); originalImagePath = tuple.Item1; dateModified = tuple.Item2; + length = tuple.Item3; } if (options.Enhancers.Count > 0) { - var tuple = await GetEnhancedImage(options.Image, options.Item, options.ImageIndex, options.Enhancers).ConfigureAwait(false); + var tuple = await GetEnhancedImage(new ItemImageInfo + { + Length = length, + DateModified = dateModified, + Type = options.Image.Type, + Path = originalImagePath + + }, options.Item, options.ImageIndex, options.Enhancers).ConfigureAwait(false); originalImagePath = tuple.Item1; dateModified = tuple.Item2; + length = tuple.Item3; } var originalImageSize = GetImageSize(originalImagePath, dateModified); @@ -217,7 +227,7 @@ public async Task ProcessImage(ImageProcessingOptions options) var quality = options.Quality ?? 90; var outputFormat = GetOutputFormat(options.OutputFormat); - var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, outputFormat, options.AddPlayedIndicator, options.PercentPlayed, options.UnplayedCount, options.BackgroundColor); + var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, length, outputFormat, options.AddPlayedIndicator, options.PercentPlayed, options.UnplayedCount, options.BackgroundColor); var semaphore = GetLock(cacheFilePath); @@ -341,13 +351,11 @@ private void DrawIndicator(MagickWand wand, int imageWidth, int imageHeight, Ima /// /// Crops whitespace from an image, caches the result, and returns the cached path /// - /// The original image path. - /// The date modified. - /// System.String. - private async Task> GetWhitespaceCroppedImage(string originalImagePath, DateTime dateModified) + private async Task> GetWhitespaceCroppedImage(string originalImagePath, DateTime dateModified, long length) { var name = originalImagePath; name += "datemodified=" + dateModified.Ticks; + name += "length=" + length; var croppedImagePath = GetCachePath(CroppedWhitespaceImageCachePath, name, Path.GetExtension(originalImagePath)); @@ -359,7 +367,7 @@ private async Task> GetWhitespaceCroppedImage(string ori if (File.Exists(croppedImagePath)) { semaphore.Release(); - return new Tuple(croppedImagePath, _fileSystem.GetLastWriteTimeUtc(croppedImagePath)); + return GetResult(croppedImagePath); } try @@ -377,14 +385,21 @@ private async Task> GetWhitespaceCroppedImage(string ori // We have to have a catch-all here because some of the .net image methods throw a plain old Exception _logger.ErrorException("Error cropping image {0}", ex, originalImagePath); - return new Tuple(originalImagePath, dateModified); + return new Tuple(originalImagePath, dateModified, length); } finally { semaphore.Release(); } - return new Tuple(croppedImagePath, _fileSystem.GetLastWriteTimeUtc(croppedImagePath)); + return GetResult(croppedImagePath); + } + + private Tuple GetResult(string path) + { + var file = new FileInfo(path); + + return new Tuple(path, _fileSystem.GetLastWriteTimeUtc(file), file.Length); } /// @@ -395,7 +410,7 @@ private async Task> GetWhitespaceCroppedImage(string ori /// /// Gets the cache file path based on a set of parameters /// - private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, ImageFormat format, bool addPlayedIndicator, double percentPlayed, int? unwatchedCount, string backgroundColor) + private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, long length, ImageFormat format, bool addPlayedIndicator, double percentPlayed, int? unwatchedCount, string backgroundColor) { var filename = originalPath; @@ -406,6 +421,7 @@ private string GetCacheFilePath(string originalPath, ImageSize outputSize, int q filename += "quality=" + quality; filename += "datemodified=" + dateModified.Ticks; + filename += "length=" + length; filename += "f=" + format; @@ -601,16 +617,17 @@ public string GetImageCacheTag(IHasImages item, ItemImageInfo image, List i.GetConfigurationCacheKey(item, imageType)).ToList(); - cacheKeys.Add(originalImagePath + dateModified.Ticks); + cacheKeys.Add(originalImagePath + dateModified.Ticks + string.Empty + length); return string.Join("|", cacheKeys.ToArray()).GetMD5().ToString("N"); } @@ -633,7 +650,7 @@ public async Task GetEnhancedImage(IHasImages item, ImageType imageType, return result.Item1; } - private async Task> GetEnhancedImage(ItemImageInfo image, + private async Task> GetEnhancedImage(ItemImageInfo image, IHasImages item, int imageIndex, List enhancers) @@ -641,6 +658,7 @@ private async Task> GetEnhancedImage(ItemImageInfo image var originalImagePath = image.Path; var dateModified = image.DateModified; var imageType = image.Type; + var length = image.Length; try { @@ -652,9 +670,7 @@ private async Task> GetEnhancedImage(ItemImageInfo image // If the path changed update dateModified if (!ehnancedImagePath.Equals(originalImagePath, StringComparison.OrdinalIgnoreCase)) { - dateModified = _fileSystem.GetLastWriteTimeUtc(ehnancedImagePath); - - return new Tuple(ehnancedImagePath, dateModified); + return GetResult(ehnancedImagePath); } } catch (Exception ex) @@ -662,7 +678,7 @@ private async Task> GetEnhancedImage(ItemImageInfo image _logger.Error("Error enhancing image", ex); } - return new Tuple(originalImagePath, dateModified); + return new Tuple(originalImagePath, dateModified, length); } /// diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 887a94ab30..b28f26946c 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -765,11 +765,14 @@ private ChapterInfoDto GetChapterInfoDto(ChapterInfo chapterInfo, BaseItem item) if (!string.IsNullOrEmpty(chapterInfo.ImagePath)) { + var file = new FileInfo(chapterInfo.ImagePath); + dto.ImageTag = GetImageCacheTag(item, new ItemImageInfo { Path = chapterInfo.ImagePath, Type = ImageType.Chapter, - DateModified = _fileSystem.GetLastWriteTimeUtc(chapterInfo.ImagePath) + DateModified = _fileSystem.GetLastWriteTimeUtc(file), + Length = file.Length }); } diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/externalplayer.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/externalplayer.js index 1e78f1c408..afe9a69db3 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/externalplayer.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/externalplayer.js @@ -396,7 +396,6 @@ ApiClient.markUnplayed(userId, item.Id); } - }); $(".playstateSlider", elem).on("change", function (e) { From a2c1184c282a89c04e0a0b889d4e5065658408b4 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 21 Mar 2015 12:10:02 -0400 Subject: [PATCH 06/29] beta fixes --- .../BaseApplicationHost.cs | 2 +- .../Persistence/IItemRepository.cs | 2 +- .../Session/ISessionController.cs | 5 ++ .../ContentDirectoryBrowser.cs | 2 +- MediaBrowser.Dlna/PlayTo/PlayToController.cs | 4 ++ .../Subtitles/AssParser.cs | 71 +++++++++---------- .../Dlna/Profiles/DefaultProfile.cs | 14 ++-- .../Connect/ConnectManager.cs | 6 +- .../Notifications/Notifications.cs | 2 +- .../HttpServer/Security/SessionContext.cs | 5 +- .../LiveTv/LiveTvManager.cs | 11 ++- .../Localization/Server/server.json | 2 +- .../Notifications/CoreNotificationTypes.cs | 6 +- .../Persistence/SqliteItemRepository.cs | 11 +-- .../ScheduledTasks/SystemUpdateTask.cs | 2 +- .../Session/HttpSessionController.cs | 4 ++ .../Session/SessionManager.cs | 48 ++++++++----- .../Session/WebSocketController.cs | 19 ++++- .../ApplicationHost.cs | 2 +- .../ServerNotifyIcon.cs | 4 +- .../Splash/SplashForm.Designer.cs | 4 +- .../Api/PackageCreator.cs | 4 +- .../dashboard-ui/dashboard.html | 4 +- .../thirdparty/jquery.unveil-custom.js | 4 +- .../Images/XbmcImageSaver.cs | 2 +- 25 files changed, 138 insertions(+), 102 deletions(-) diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index 0f89bd1a6f..bc1b0e7855 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -294,7 +294,7 @@ protected virtual void OnLoggerLoaded(bool isFirstLoad) public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths, bool isStartup) { - logger.LogMultiline("Media Browser", LogSeverity.Info, GetBaseExceptionMessage(appPaths)); + logger.LogMultiline("Emby", LogSeverity.Info, GetBaseExceptionMessage(appPaths)); } protected static StringBuilder GetBaseExceptionMessage(IApplicationPaths appPaths) diff --git a/MediaBrowser.Controller/Persistence/IItemRepository.cs b/MediaBrowser.Controller/Persistence/IItemRepository.cs index edaa15c9df..245c81d706 100644 --- a/MediaBrowser.Controller/Persistence/IItemRepository.cs +++ b/MediaBrowser.Controller/Persistence/IItemRepository.cs @@ -107,7 +107,7 @@ public interface IItemRepository : IRepository /// /// The type. /// IEnumerable{Guid}. - IEnumerable GetItemsOfType(Type type); + IEnumerable GetItemsOfType(Type type); /// /// Saves the children. diff --git a/MediaBrowser.Controller/Session/ISessionController.cs b/MediaBrowser.Controller/Session/ISessionController.cs index a4badee473..f8a6ed1fc1 100644 --- a/MediaBrowser.Controller/Session/ISessionController.cs +++ b/MediaBrowser.Controller/Session/ISessionController.cs @@ -115,5 +115,10 @@ public interface ISessionController /// The cancellation token. /// Task. Task SendMessage(string name, T data, CancellationToken cancellationToken); + + /// + /// Called when [activity]. + /// + void OnActivity(); } } diff --git a/MediaBrowser.Dlna/ContentDirectory/ContentDirectoryBrowser.cs b/MediaBrowser.Dlna/ContentDirectory/ContentDirectoryBrowser.cs index 0c62ada809..d90f0765fb 100644 --- a/MediaBrowser.Dlna/ContentDirectory/ContentDirectoryBrowser.cs +++ b/MediaBrowser.Dlna/ContentDirectory/ContentDirectoryBrowser.cs @@ -33,7 +33,7 @@ public async Task> Browse(ContentDirectoryBrowseReq var options = new HttpRequestOptions { CancellationToken = cancellationToken, - UserAgent = "Media Browser", + UserAgent = "Emby", RequestContentType = "text/xml; charset=\"utf-8\"", LogErrorResponseBody = true, Url = request.ContentDirectoryUrl diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs index f53318069c..d52428dc9e 100644 --- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs +++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs @@ -47,6 +47,10 @@ public bool IsSessionActive } } + public void OnActivity() + { + } + public bool SupportsMediaControl { get { return IsSessionActive; } diff --git a/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs b/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs index 2a8c958b25..4d426683fe 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs @@ -42,6 +42,9 @@ public SubtitleTrackInfo Parse(Stream stream, CancellationToken cancellationToke subEvent.StartPositionTicks = GetTicks(sections[headers["Start"]]); subEvent.EndPositionTicks = GetTicks(sections[headers["End"]]); + + //RemoteNativeFormatting(subEvent); + subEvent.Text = string.Join(",", sections.Skip(headers["Text"])); subEvent.Text = subEvent.Text.Replace(@"\N", ParserValues.NewLine, StringComparison.OrdinalIgnoreCase); subEvent.Text = Regex.Replace(subEvent.Text, @"\{(\\[\w]+\(?([\w\d]+,?)+\)?)+\}", string.Empty, RegexOptions.IgnoreCase); @@ -49,7 +52,6 @@ public SubtitleTrackInfo Parse(Stream stream, CancellationToken cancellationToke trackInfo.TrackEvents.Add(subEvent); } } - RemoteNativeFormatting(trackInfo); return trackInfo; } @@ -74,46 +76,43 @@ private Dictionary ParseFieldHeaders(string line) { /// /// Credit: https://github.com/SubtitleEdit/subtitleedit/blob/master/src/Logic/SubtitleFormats/AdvancedSubStationAlpha.cs /// - private void RemoteNativeFormatting(SubtitleTrackInfo subtitle) + private void RemoteNativeFormatting(SubtitleTrackEvent p) { - foreach (var p in subtitle.TrackEvents) + int indexOfBegin = p.Text.IndexOf('{'); + string pre = string.Empty; + while (indexOfBegin >= 0 && p.Text.IndexOf('}') > indexOfBegin) { - int indexOfBegin = p.Text.IndexOf('{'); - string pre = string.Empty; - while (indexOfBegin >= 0 && p.Text.IndexOf('}') > indexOfBegin) + string s = p.Text.Substring(indexOfBegin); + if (s.StartsWith("{\\an1}", StringComparison.Ordinal) || + s.StartsWith("{\\an2}", StringComparison.Ordinal) || + s.StartsWith("{\\an3}", StringComparison.Ordinal) || + s.StartsWith("{\\an4}", StringComparison.Ordinal) || + s.StartsWith("{\\an5}", StringComparison.Ordinal) || + s.StartsWith("{\\an6}", StringComparison.Ordinal) || + s.StartsWith("{\\an7}", StringComparison.Ordinal) || + s.StartsWith("{\\an8}", StringComparison.Ordinal) || + s.StartsWith("{\\an9}", StringComparison.Ordinal)) { - string s = p.Text.Substring(indexOfBegin); - if (s.StartsWith("{\\an1}", StringComparison.Ordinal) || - s.StartsWith("{\\an2}", StringComparison.Ordinal) || - s.StartsWith("{\\an3}", StringComparison.Ordinal) || - s.StartsWith("{\\an4}", StringComparison.Ordinal) || - s.StartsWith("{\\an5}", StringComparison.Ordinal) || - s.StartsWith("{\\an6}", StringComparison.Ordinal) || - s.StartsWith("{\\an7}", StringComparison.Ordinal) || - s.StartsWith("{\\an8}", StringComparison.Ordinal) || - s.StartsWith("{\\an9}", StringComparison.Ordinal)) - { - pre = s.Substring(0, 6); - } - else if (s.StartsWith("{\\an1\\", StringComparison.Ordinal) || - s.StartsWith("{\\an2\\", StringComparison.Ordinal) || - s.StartsWith("{\\an3\\", StringComparison.Ordinal) || - s.StartsWith("{\\an4\\", StringComparison.Ordinal) || - s.StartsWith("{\\an5\\", StringComparison.Ordinal) || - s.StartsWith("{\\an6\\", StringComparison.Ordinal) || - s.StartsWith("{\\an7\\", StringComparison.Ordinal) || - s.StartsWith("{\\an8\\", StringComparison.Ordinal) || - s.StartsWith("{\\an9\\", StringComparison.Ordinal)) - { - pre = s.Substring(0, 5) + "}"; - } - int indexOfEnd = p.Text.IndexOf('}'); - p.Text = p.Text.Remove(indexOfBegin, (indexOfEnd - indexOfBegin) + 1); - - indexOfBegin = p.Text.IndexOf('{'); + pre = s.Substring(0, 6); } - p.Text = pre + p.Text; + else if (s.StartsWith("{\\an1\\", StringComparison.Ordinal) || + s.StartsWith("{\\an2\\", StringComparison.Ordinal) || + s.StartsWith("{\\an3\\", StringComparison.Ordinal) || + s.StartsWith("{\\an4\\", StringComparison.Ordinal) || + s.StartsWith("{\\an5\\", StringComparison.Ordinal) || + s.StartsWith("{\\an6\\", StringComparison.Ordinal) || + s.StartsWith("{\\an7\\", StringComparison.Ordinal) || + s.StartsWith("{\\an8\\", StringComparison.Ordinal) || + s.StartsWith("{\\an9\\", StringComparison.Ordinal)) + { + pre = s.Substring(0, 5) + "}"; + } + int indexOfEnd = p.Text.IndexOf('}'); + p.Text = p.Text.Remove(indexOfBegin, (indexOfEnd - indexOfBegin) + 1); + + indexOfBegin = p.Text.IndexOf('{'); } + p.Text = pre + p.Text; } } } diff --git a/MediaBrowser.Model/Dlna/Profiles/DefaultProfile.cs b/MediaBrowser.Model/Dlna/Profiles/DefaultProfile.cs index 959f8b8016..c9db9fbf85 100644 --- a/MediaBrowser.Model/Dlna/Profiles/DefaultProfile.cs +++ b/MediaBrowser.Model/Dlna/Profiles/DefaultProfile.cs @@ -13,13 +13,13 @@ public DefaultProfile() XDlnaDoc = "DMS-1.50"; - FriendlyName = "Media Browser"; - Manufacturer = "Media Browser"; - ModelDescription = "Media Browser"; - ModelName = "Media Browser"; - ModelNumber = "Media Browser"; - ModelUrl = "http://mediabrowser.tv/"; - ManufacturerUrl = "http://mediabrowser.tv/"; + FriendlyName = "Emby"; + Manufacturer = "Emby"; + ModelDescription = "Emby"; + ModelName = "Emby"; + ModelNumber = "Emby"; + ModelUrl = "http://emby.media/"; + ManufacturerUrl = "http://emby.media/"; AlbumArtPn = "JPEG_SM"; diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index be0b325487..a7f8717a74 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -150,7 +150,7 @@ private async Task UpdateConnectInfoInternal() if (string.IsNullOrWhiteSpace(wanApiAddress)) { - _logger.Warn("Cannot update Media Browser Connect information without a WanApiAddress"); + _logger.Warn("Cannot update Emby Connect information without a WanApiAddress"); return; } @@ -411,7 +411,7 @@ private async Task LinkUserInternal(string userId, string connec if (!connectUser.IsActive) { - throw new ArgumentException("The Media Browser account has been disabled."); + throw new ArgumentException("The Emby account has been disabled."); } var user = GetUser(userId); @@ -517,7 +517,7 @@ private async Task InviteUserInternal(ConnectAuthorizationReques if (!connectUser.IsActive) { - throw new ArgumentException("The Media Browser account has been disabled."); + throw new ArgumentException("The Emby account has been disabled."); } connectUserId = connectUser.Id; diff --git a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs index f6a35973b7..bc995d62ab 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs @@ -389,7 +389,7 @@ async void _userManager_UserCreated(object sender, GenericEventArgs e) var notification = new NotificationRequest { UserIds = new List { e.Argument.Id.ToString("N") }, - Name = "Welcome to Media Browser!", + Name = "Welcome to Emby!", Description = "Check back here for more notifications." }; diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs index 1bbe9893b8..c8278dc545 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs @@ -28,7 +28,10 @@ public Task GetSession(IServiceRequest requestContext) if (!string.IsNullOrWhiteSpace(authorization.Token)) { var auth = GetTokenInfo(requestContext); - return _sessionManager.GetSessionByAuthenticationToken(auth, authorization.DeviceId, requestContext.RemoteIp, authorization.Version); + if (auth != null) + { + return _sessionManager.GetSessionByAuthenticationToken(auth, authorization.DeviceId, requestContext.RemoteIp, authorization.Version); + } } var session = _sessionManager.GetSession(authorization.DeviceId, authorization.Client, authorization.Version); diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 075451146d..aff8015167 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1111,13 +1111,18 @@ private async Task DeleteOldPrograms(List currentIdList, IProgress var numComplete = 0; - foreach (var program in list) + foreach (var programId in list) { cancellationToken.ThrowIfCancellationRequested(); - if (!currentIdList.Contains(program.Id)) + if (!currentIdList.Contains(new Guid(programId))) { - await _libraryManager.DeleteItem(program).ConfigureAwait(false); + var program = _libraryManager.GetItemById(programId); + + if (program != null) + { + await _libraryManager.DeleteItem(program).ConfigureAwait(false); + } } numComplete++; diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index c2a115df45..8681eb7c8f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -16,7 +16,7 @@ "LabelNext": "Next", "LabelYoureDone": "You're Done!", "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "TitleMediaBrowser": "Media Browser", + "TitleMediaBrowser": "Emby", "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", "TellUsAboutYourself": "Tell us about yourself", "ButtonQuickStartGuide": "Quick start guide", diff --git a/MediaBrowser.Server.Implementations/Notifications/CoreNotificationTypes.cs b/MediaBrowser.Server.Implementations/Notifications/CoreNotificationTypes.cs index a33fe21477..98d3672fa4 100644 --- a/MediaBrowser.Server.Implementations/Notifications/CoreNotificationTypes.cs +++ b/MediaBrowser.Server.Implementations/Notifications/CoreNotificationTypes.cs @@ -27,7 +27,7 @@ public IEnumerable GetNotificationTypes() { Type = NotificationType.ApplicationUpdateInstalled.ToString(), DefaultDescription = "{ReleaseNotes}", - DefaultTitle = "A new version of Media Browser Server has been installed.", + DefaultTitle = "A new version of Emby Server has been installed.", Variables = new List{"Version"} }, @@ -71,7 +71,7 @@ public IEnumerable GetNotificationTypes() new NotificationTypeInfo { Type = NotificationType.ServerRestartRequired.ToString(), - DefaultTitle = "Please restart Media Browser Server to finish updating." + DefaultTitle = "Please restart Emby Server to finish updating." }, new NotificationTypeInfo @@ -158,7 +158,7 @@ public IEnumerable GetNotificationTypes() knownTypes.Add(new NotificationTypeInfo { Type = NotificationType.ApplicationUpdateAvailable.ToString(), - DefaultTitle = "A new version of Media Browser Server is available for download." + DefaultTitle = "A new version of Emby Server is available for download." }); } diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 3ffe31ed18..4c45d5b838 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -522,7 +522,7 @@ public IEnumerable GetChildrenItems(Guid parentId) } } - public IEnumerable GetItemsOfType(Type type) + public IEnumerable GetItemsOfType(Type type) { if (type == null) { @@ -533,7 +533,7 @@ public IEnumerable GetItemsOfType(Type type) using (var cmd = _connection.CreateCommand()) { - cmd.CommandText = "select type,data from TypedBaseItems where type = @type"; + cmd.CommandText = "select guid from TypedBaseItems where type = @type"; cmd.Parameters.Add(cmd, "@type", DbType.String).Value = type.FullName; @@ -541,12 +541,7 @@ public IEnumerable GetItemsOfType(Type type) { while (reader.Read()) { - var item = GetItem(reader); - - if (item != null) - { - yield return item; - } + yield return reader.GetString(0); } } } diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/SystemUpdateTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/SystemUpdateTask.cs index 231a98b4ae..fa3cd6be7e 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/SystemUpdateTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/SystemUpdateTask.cs @@ -108,7 +108,7 @@ public async Task Execute(CancellationToken cancellationToken, IProgress } else { - Logger.Info("A new version of Media Browser is available."); + Logger.Info("A new version of " + _appHost.Name + " is available."); } progress.Report(100); diff --git a/MediaBrowser.Server.Implementations/Session/HttpSessionController.cs b/MediaBrowser.Server.Implementations/Session/HttpSessionController.cs index 4d5c408535..9a7fb33dfb 100644 --- a/MediaBrowser.Server.Implementations/Session/HttpSessionController.cs +++ b/MediaBrowser.Server.Implementations/Session/HttpSessionController.cs @@ -43,6 +43,10 @@ public HttpSessionController(IHttpClient httpClient, ResetPingTimer(); } + public void OnActivity() + { + } + private string PostUrl { get diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 5ea970426a..f88e21aea3 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -236,34 +236,44 @@ public async Task LogSessionActivity(string appName, } var activityDate = DateTime.UtcNow; - var session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false); - + var lastActivityDate = session.LastActivityDate; session.LastActivityDate = activityDate; - if (user == null) + if (user != null) { - return session; - } - - var lastActivityDate = user.LastActivityDate; + var userLastActivityDate = user.LastActivityDate ?? DateTime.MinValue; + user.LastActivityDate = activityDate; - user.LastActivityDate = activityDate; + // Don't log in the db anymore frequently than 10 seconds + if ((activityDate - userLastActivityDate).TotalSeconds > 10) + { + try + { + // Save this directly. No need to fire off all the events for this. + await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false); + } + catch (Exception ex) + { + _logger.ErrorException("Error updating user", ex); + } + } + } - // Don't log in the db anymore frequently than 10 seconds - if (lastActivityDate.HasValue && (activityDate - lastActivityDate.Value).TotalSeconds < 10) + if ((activityDate - lastActivityDate).TotalSeconds > 10) { - return session; - } + EventHelper.FireEventIfNotNull(SessionActivity, this, new SessionEventArgs + { + SessionInfo = session - // Save this directly. No need to fire off all the events for this. - await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false); + }, _logger); + } - EventHelper.FireEventIfNotNull(SessionActivity, this, new SessionEventArgs + var controller = session.SessionController; + if (controller != null) { - SessionInfo = session - - }, _logger); + controller.OnActivity(); + } return session; } @@ -1680,7 +1690,7 @@ public Task GetSessionByAuthenticationToken(AuthenticationInfo info deviceId = info.DeviceId; } - return GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndpoint, user); + return LogSessionActivity(appName, appVersion, deviceId, deviceName, remoteEndpoint, user); } public Task GetSessionByAuthenticationToken(string token, string deviceId, string remoteEndpoint) diff --git a/MediaBrowser.Server.Implementations/Session/WebSocketController.cs b/MediaBrowser.Server.Implementations/Session/WebSocketController.cs index f51998feac..d4ecd9572e 100644 --- a/MediaBrowser.Server.Implementations/Session/WebSocketController.cs +++ b/MediaBrowser.Server.Implementations/Session/WebSocketController.cs @@ -30,17 +30,28 @@ public WebSocketController(SessionInfo session, ILogger logger, ISessionManager Sockets = new List(); } + private bool HasOpenSockets + { + get { return GetActiveSockets().Any(); } + } + + public bool SupportsMediaControl + { + get { return HasOpenSockets; } + } + + private bool _isActive; public bool IsSessionActive { get { - return Sockets.Any(i => i.State == WebSocketState.Open); + return _isActive; } } - public bool SupportsMediaControl + public void OnActivity() { - get { return GetActiveSockets().Any(); } + _isActive = true; } private IEnumerable GetActiveSockets() @@ -64,6 +75,8 @@ void connection_Closed(object sender, EventArgs e) { if (!GetActiveSockets().Any()) { + _isActive = false; + try { _sessionManager.ReportSessionEnded(Session.Id); diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index f35317cd2a..db3b85e19a 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -432,7 +432,7 @@ protected override async Task RegisterResources(IProgress progress) RegisterSingleInstance(() => new SearchEngine(LogManager, LibraryManager, UserManager)); - HttpServer = ServerFactory.CreateServer(this, LogManager, "Media Browser", "web/index.html"); + HttpServer = ServerFactory.CreateServer(this, LogManager, "Emby", "web/index.html"); RegisterSingleInstance(HttpServer, false); progress.Report(10); diff --git a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs index e3e1359d9a..f04593e903 100644 --- a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs +++ b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs @@ -75,7 +75,7 @@ public ServerNotifyIcon(ILogManager logManager, // notifyIcon1.ContextMenuStrip = contextMenuStrip1; notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); - notifyIcon1.Text = "Media Browser"; + notifyIcon1.Text = "Emby"; notifyIcon1.Visible = true; // // contextMenuStrip1 @@ -162,7 +162,7 @@ public ServerNotifyIcon(ILogManager logManager, if (_appHost.IsFirstRun) { - Action action = () => notifyIcon1.ShowBalloonTip(5000, "Media Browser", "Welcome to Media Browser Server!", ToolTipIcon.Info); + Action action = () => notifyIcon1.ShowBalloonTip(5000, "Emby", "Welcome to Emby Server!", ToolTipIcon.Info); contextMenuStrip1.Invoke(action); } diff --git a/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs b/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs index ef3b796996..190a98178c 100644 --- a/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs +++ b/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs @@ -123,7 +123,7 @@ private void InitializeComponent() this.lblStatus.Name = "lblStatus"; this.lblStatus.Size = new System.Drawing.Size(469, 59); this.lblStatus.TabIndex = 0; - this.lblStatus.Text = "Loading Media Browser"; + this.lblStatus.Text = "Loading Emby Server"; this.lblStatus.UseWaitCursor = true; // // panel1 @@ -162,7 +162,7 @@ private void InitializeComponent() this.Name = "SplashForm"; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Media Browser"; + this.Text = "Emby"; this.UseWaitCursor = true; this.panelMainContainer.ResumeLayout(false); this.panel2.ResumeLayout(false); diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index a93cccfbcf..4262a314dc 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -180,11 +180,9 @@ private static string GetMetaTags() sb.Append(""); //sb.Append(""); sb.Append(""); - sb.Append(""); + sb.Append(""); //sb.Append(""); - sb.Append(""); - sb.Append(""); // http://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html diff --git a/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html b/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html index 5a2f040fab..ad32deb5a3 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html @@ -134,8 +134,8 @@

${HeaderLatestNews}

diff --git a/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/jquery.unveil-custom.js b/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/jquery.unveil-custom.js index fea7924cdc..7c6b415218 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/jquery.unveil-custom.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/thirdparty/jquery.unveil-custom.js @@ -51,8 +51,8 @@ images = images.not(loaded); } - $w.scroll(unveil); - $w.resize(unveil); + $w.on('scroll.unveil', unveil); + $w.on('resize.unveil', unveil); unveil(); diff --git a/MediaBrowser.XbmcMetadata/Images/XbmcImageSaver.cs b/MediaBrowser.XbmcMetadata/Images/XbmcImageSaver.cs index 054a7eabbe..01eeb5f3b3 100644 --- a/MediaBrowser.XbmcMetadata/Images/XbmcImageSaver.cs +++ b/MediaBrowser.XbmcMetadata/Images/XbmcImageSaver.cs @@ -266,7 +266,7 @@ private string GetBackdropSaveFilename(IEnumerable images, string public string Name { - get { return "Media Browser/Plex/Xbmc Images"; } + get { return "Emby/Plex/Xbmc Images"; } } } } From fc0e6ffaeb07ec2008b3931c0fb51a7f8de63e9b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 21 Mar 2015 12:12:40 -0400 Subject: [PATCH 07/29] update dlna profiles --- MediaBrowser.Dlna/MediaBrowser.Dlna.csproj | 2 - .../Profiles/Windows81Profile.cs | 219 ---------------- .../Profiles/WindowsPhoneProfile.cs | 239 ------------------ MediaBrowser.Dlna/Profiles/Xml/Default.xml | 14 +- MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml | 14 +- .../Profiles/Xml/DirecTV HD-DVR.xml | 14 +- .../Profiles/Xml/Dish Hopper-Joey.xml | 14 +- .../Profiles/Xml/LG Smart TV.xml | 14 +- .../Profiles/Xml/Linksys DMA2100.xml | 14 +- .../Profiles/Xml/MediaMonkey.xml | 14 +- .../Profiles/Xml/Panasonic Viera.xml | 14 +- .../Profiles/Xml/Popcorn Hour.xml | 14 +- .../Profiles/Xml/Samsung Smart TV.xml | 14 +- .../Profiles/Xml/Sony Blu-ray Player 2013.xml | 8 +- .../Profiles/Xml/Sony Blu-ray Player.xml | 8 +- .../Profiles/Xml/Sony Bravia (2010).xml | 4 +- .../Profiles/Xml/Sony Bravia (2011).xml | 4 +- .../Profiles/Xml/Sony Bravia (2012).xml | 4 +- .../Profiles/Xml/Sony Bravia (2013).xml | 4 +- .../Profiles/Xml/Sony PlayStation 3.xml | 14 +- MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml | 14 +- MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml | 2 +- MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml | 14 +- MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml | 14 +- 24 files changed, 115 insertions(+), 575 deletions(-) delete mode 100644 MediaBrowser.Dlna/Profiles/Windows81Profile.cs delete mode 100644 MediaBrowser.Dlna/Profiles/WindowsPhoneProfile.cs diff --git a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj index aed4ef4219..2f4d444188 100644 --- a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj +++ b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj @@ -94,9 +94,7 @@ - - diff --git a/MediaBrowser.Dlna/Profiles/Windows81Profile.cs b/MediaBrowser.Dlna/Profiles/Windows81Profile.cs deleted file mode 100644 index cf7790c525..0000000000 --- a/MediaBrowser.Dlna/Profiles/Windows81Profile.cs +++ /dev/null @@ -1,219 +0,0 @@ -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Dlna.Profiles; -using System.Xml.Serialization; - -namespace MediaBrowser.Dlna.Profiles -{ - [XmlRoot("Profile")] - public class Windows81Profile : DefaultProfile - { - public Windows81Profile() - { - Name = "Windows 8/RT"; - - Identification = new DeviceIdentification - { - Manufacturer = "Microsoft SDK Customer" - }; - - TranscodingProfiles = new[] - { - new TranscodingProfile - { - Container = "mp3", - AudioCodec = "mp3", - Type = DlnaProfileType.Audio, - Context = EncodingContext.Streaming - }, - new TranscodingProfile - { - Container = "mp3", - AudioCodec = "mp3", - Type = DlnaProfileType.Audio, - Context = EncodingContext.Static - }, - new TranscodingProfile - { - Protocol = "hls", - Container = "ts", - VideoCodec = "h264", - AudioCodec = "aac", - Type = DlnaProfileType.Video, - Context = EncodingContext.Streaming - }, - new TranscodingProfile - { - Container = "ts", - VideoCodec = "h264", - AudioCodec = "aac", - Type = DlnaProfileType.Video, - Context = EncodingContext.Streaming - }, - new TranscodingProfile - { - Container = "mp4", - VideoCodec = "h264", - AudioCodec = "aac,ac3,eac3", - Type = DlnaProfileType.Video, - Context = EncodingContext.Static - } - }; - - DirectPlayProfiles = new[] - { - new DirectPlayProfile - { - Container = "mp4,mov", - VideoCodec = "h264,mpeg4", - AudioCodec = "aac,ac3,eac3,mp3,pcm", - Type = DlnaProfileType.Video - }, - - new DirectPlayProfile - { - Container = "ts", - VideoCodec = "h264", - AudioCodec = "aac,ac3,eac3,mp3,mp2,pcm", - Type = DlnaProfileType.Video - }, - - new DirectPlayProfile - { - Container = "asf", - VideoCodec = "wmv2,wmv3,vc1", - AudioCodec = "wmav2,wmapro,wmavoice", - Type = DlnaProfileType.Video - }, - - new DirectPlayProfile - { - Container = "avi", - VideoCodec = "mpeg4,msmpeg4,mjpeg", - AudioCodec = "mp3,ac3,eac3,mp2,pcm", - Type = DlnaProfileType.Video - }, - - new DirectPlayProfile - { - Container = "mp4", - AudioCodec = "aac", - Type = DlnaProfileType.Audio - }, - - new DirectPlayProfile - { - Container = "mp3", - AudioCodec = "mp3", - Type = DlnaProfileType.Audio - }, - - new DirectPlayProfile - { - Container = "m4a", - AudioCodec = "aac", - VideoCodec = "", - Type = DlnaProfileType.Audio - }, - - new DirectPlayProfile - { - Container = "jpeg", - Type = DlnaProfileType.Photo - } - }; - - CodecProfiles = new[] - { - new CodecProfile - { - Type = CodecType.Video, - Codec="h264", - Conditions = new [] - { - - // Note: Add any of the following if supported - - //"Constrained Baseline", - //"Baseline", - //"Extended", - //"Main", - //"High", - //"Progressive High", - //"Constrained High" - - // The first one in the list should be the higest one, e.g. if High profile is supported, make sure it appears before baseline: high|baseline - - new ProfileCondition(ProfileConditionType.EqualsAny, ProfileConditionValue.VideoProfile, "high|main|extended|baseline|constrained baseline"), - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoLevel, - Value = "51" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoBitDepth, - Value = "8", - IsRequired = false - } - } - }, - - new CodecProfile - { - Type = CodecType.Video, - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoBitDepth, - Value = "8", - IsRequired = false - } - } - }, - - new CodecProfile - { - Type = CodecType.VideoAudio, - Codec = "aac,eac3", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.AudioChannels, - Value = "8" - } - } - }, - - new CodecProfile - { - Type = CodecType.VideoAudio, - Codec = "ac3", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.AudioChannels, - Value = "6" - } - } - } - }; - - SubtitleProfiles = new[] - { - new SubtitleProfile - { - Format = "vtt", - Method = SubtitleDeliveryMethod.External - } - }; - } - } -} diff --git a/MediaBrowser.Dlna/Profiles/WindowsPhoneProfile.cs b/MediaBrowser.Dlna/Profiles/WindowsPhoneProfile.cs deleted file mode 100644 index 3a0ec1576a..0000000000 --- a/MediaBrowser.Dlna/Profiles/WindowsPhoneProfile.cs +++ /dev/null @@ -1,239 +0,0 @@ -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Dlna.Profiles; -using System.Xml.Serialization; - -namespace MediaBrowser.Dlna.Profiles -{ - [XmlRoot("Profile")] - public class WindowsPhoneProfile : DefaultProfile - { - public WindowsPhoneProfile() - { - Name = "Windows Phone"; - - TranscodingProfiles = new[] - { - new TranscodingProfile - { - Container = "mp3", - AudioCodec = "mp3", - Type = DlnaProfileType.Audio, - Context = EncodingContext.Streaming - }, - new TranscodingProfile - { - Container = "mp3", - AudioCodec = "mp3", - Type = DlnaProfileType.Audio, - Context = EncodingContext.Static - }, - new TranscodingProfile - { - Protocol = "hls", - Container = "ts", - VideoCodec = "h264", - AudioCodec = "aac", - Type = DlnaProfileType.Video, - Context = EncodingContext.Streaming - }, - new TranscodingProfile - { - Container = "mp4", - VideoCodec = "h264", - AudioCodec = "aac", - Type = DlnaProfileType.Video, - Context = EncodingContext.Streaming - }, - new TranscodingProfile - { - Container = "mp4", - VideoCodec = "h264", - AudioCodec = "aac", - Type = DlnaProfileType.Video, - Context = EncodingContext.Static - } - }; - - DirectPlayProfiles = new[] - { - new DirectPlayProfile - { - Container = "mp4,mov", - VideoCodec = "h264", - AudioCodec = "aac,mp3", - Type = DlnaProfileType.Video - }, - - new DirectPlayProfile - { - Container = "mp4,avi", - VideoCodec = "mpeg4,msmpeg4", - AudioCodec = "aac,mp3", - Type = DlnaProfileType.Video - }, - - new DirectPlayProfile - { - Container = "asf", - VideoCodec = "wmv2,wmv3,vc1", - AudioCodec = "wmav2,wmapro,wmavoice", - Type = DlnaProfileType.Video - }, - - new DirectPlayProfile - { - Container = "asf", - AudioCodec = "wmav2,wmapro,wmavoice", - Type = DlnaProfileType.Audio - }, - - new DirectPlayProfile - { - Container = "mp4,aac", - AudioCodec = "aac", - Type = DlnaProfileType.Audio - }, - - new DirectPlayProfile - { - Container = "mp3", - AudioCodec = "mp3", - Type = DlnaProfileType.Audio - }, - - new DirectPlayProfile - { - Container = "jpeg,png,gif,bmp", - Type = DlnaProfileType.Photo - } - }; - - CodecProfiles = new[] - { - new CodecProfile - { - Type = CodecType.Video, - Codec="h264", - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Width, - Value = "800" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Height, - Value = "480" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoBitrate, - Value = "1000000", - IsRequired = false - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoFramerate, - Value = "24", - IsRequired = false - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoLevel, - Value = "3" - }, - new ProfileCondition(ProfileConditionType.EqualsAny, ProfileConditionValue.VideoProfile, "baseline|constrained baseline"), - new ProfileCondition - { - Condition = ProfileConditionType.NotEquals, - Property = ProfileConditionValue.IsAnamorphic, - Value = "true" - } - } - }, - - new CodecProfile - { - Type = CodecType.Video, - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Width, - Value = "800" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.Height, - Value = "480" - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoBitrate, - Value = "1000000", - IsRequired = false - }, - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.VideoFramerate, - Value = "24", - IsRequired = false - }, - new ProfileCondition - { - Condition = ProfileConditionType.NotEquals, - Property = ProfileConditionValue.IsAnamorphic, - Value = "true" - } - } - }, - - new CodecProfile - { - Type = CodecType.VideoAudio, - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.AudioBitrate, - Value = "128000" - }, - - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.AudioChannels, - Value = "2" - } - } - }, - - new CodecProfile - { - Type = CodecType.Audio, - Conditions = new [] - { - new ProfileCondition - { - Condition = ProfileConditionType.LessThanEqual, - Property = ProfileConditionValue.AudioBitrate, - Value = "128000" - } - } - } - }; - - } - } -} diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml index 7062afc69a..3c1fbfb1b7 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml @@ -1,13 +1,13 @@ Generic Device - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml index 9ff1ae8336..2fde800089 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml @@ -6,13 +6,13 @@ Denon - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml index 746b7f5c40..7876ccc7c5 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml @@ -7,13 +7,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index 4a70e3d4c5..d7ad1ac301 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -8,13 +8,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml index 471917a13f..a2fc002e51 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml @@ -7,13 +7,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml index 5fe441945b..a273586bdc 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml @@ -5,13 +5,13 @@ DMA2100us - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml index 35775892c8..e92b998300 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml @@ -7,13 +7,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml index 36c5289298..dcc06abb33 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml @@ -8,13 +8,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml index 0749dbeac7..8470f601ac 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -1,13 +1,13 @@ Popcorn Hour - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml index 9e61df43ed..d8d2a0b2bb 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml @@ -7,13 +7,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false true false 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 91aa767bee..e4959c0c71 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml @@ -7,13 +7,13 @@ Sony - Media Browser + Emby Microsoft Corporation - http://mediabrowser.tv/ + http://emby.media/ Windows Media Player Sharing - Media Browser + Emby 3.0 - http://mediabrowser.tv/ + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml index a6ea108408..b46b94c1de 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml @@ -9,13 +9,13 @@ - Media Browser + Emby Microsoft Corporation - http://mediabrowser.tv/ + http://emby.media/ Windows Media Player Sharing - Media Browser + Emby 3.0 - http://mediabrowser.tv/ + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml index 0c3bdc4c5f..ba993ca3e5 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -8,11 +8,11 @@ - Media Browser + Emby Microsoft Corporation http://www.microsoft.com/ Windows Media Player Sharing - Media Browser + Emby 3.0 http://www.microsoft.com/ false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 0269c05c16..271cf1132d 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -8,11 +8,11 @@ - Media Browser + Emby Microsoft Corporation http://www.microsoft.com/ Windows Media Player Sharing - Media Browser + Emby 3.0 http://www.microsoft.com/ false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml index 9aa614faae..4f849b7319 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml @@ -8,11 +8,11 @@ - Media Browser + Emby Microsoft Corporation http://www.microsoft.com/ Windows Media Player Sharing - Media Browser + Emby 3.0 http://www.microsoft.com/ false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml index 231db2091f..e074b83899 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml @@ -8,11 +8,11 @@ - Media Browser + Emby Microsoft Corporation http://www.microsoft.com/ Windows Media Player Sharing - Media Browser + Emby 3.0 http://www.microsoft.com/ false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml index 153b66be81..e90d1bc0f0 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml @@ -8,13 +8,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false true diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml index d51669cfb8..3d7e745f8e 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml @@ -8,13 +8,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ true false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml index da55724075..ae0f53edb0 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml @@ -12,7 +12,7 @@ Microsoft Corporation http://www.microsoft.com/ Windows Media Player Sharing - Media Browser + Emby 12.0 http://www.microsoft.com/ false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml index 063cebebc3..2595ffbdfc 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml @@ -8,13 +8,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml index de7c03c481..1418e63bd5 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml @@ -7,13 +7,13 @@ - Media Browser - Media Browser - http://mediabrowser.tv/ - Media Browser - Media Browser - Media Browser - http://mediabrowser.tv/ + Emby + Emby + http://emby.media/ + Emby + Emby + Emby + http://emby.media/ false false false From 6bbc892cc63d327961a52c2009a560e9a7fab4eb Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 21 Mar 2015 13:00:39 -0400 Subject: [PATCH 08/29] update translations --- .../Localization/JavaScript/javascript.json | 48 ++++---- .../Localization/JavaScript/pt_BR.json | 2 +- .../Localization/Server/pt_BR.json | 2 +- .../Localization/Server/ru.json | 12 +- .../Localization/Server/server.json | 104 +++++++++--------- 5 files changed, 84 insertions(+), 84 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index ffba5e5ab9..63b37ba8ac 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -6,8 +6,8 @@ "Administrator": "Administrator", "Password": "Password", "DeleteImage": "Delete Image", - "MessageThankYouForSupporting": "Thank you for supporting Media Browser.", - "MessagePleaseSupportMediaBrowser": "Please support Media Browser.", + "MessageThankYouForSupporting": "Thank you for supporting Emby.", + "MessagePleaseSupportMediaBrowser": "Please support Emby.", "DeleteImageConfirmation": "Are you sure you wish to delete this image?", "FileReadCancelled": "The file read has been canceled.", "FileNotFound": "File not found.", @@ -37,7 +37,7 @@ "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", - "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", "HeaderConfirmRemoveUser": "Remove User", "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", @@ -89,8 +89,8 @@ "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", - "HeaderWelcomeToMediaBrowserServerDashboard": "Welcome to the Media Browser Dashboard", - "HeaderWelcomeToMediaBrowserWebClient": "Welcome to the Media Browser Web Client", + "HeaderWelcomeToMediaBrowserServerDashboard": "Welcome to the Emby Server Dashboard", + "HeaderWelcomeToMediaBrowserWebClient": "Welcome to the Emby Web Client", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitleSync": "Sync", @@ -193,7 +193,7 @@ "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", - "MessageConfirmItemGrouping": "Media Browser clients will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", "HeaderResume": "Resume", "HeaderMyViews": "My Views", "HeaderLibraryFolders": "Media Folders", @@ -241,8 +241,8 @@ "OrganizePatternResult": "Result: {0}", "HeaderRestart": "Restart", "HeaderShutdown": "Shutdown", - "MessageConfirmRestart": "Are you sure you wish to restart Media Browser Server?", - "MessageConfirmShutdown": "Are you sure you wish to shutdown Media Browser Server?", + "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", + "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", "ButtonUpdateNow": "Update Now", "ValueItemCount": "{0} item", "ValueItemCountPlural": "{0} items", @@ -313,7 +313,7 @@ "OptionBlockLiveTvChannels": "Live TV Channels", "OptionBlockChannelContent": "Internet Channel Content", "ButtonRevoke": "Revoke", - "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Media Browser will be abruptly terminated.", + "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Emby Server will be abruptly terminated.", "HeaderConfirmRevokeApiKey": "Revoke Api Key", "ValueContainer": "Container: {0}", "ValueAudioCodec": "Audio Codec: {0}", @@ -533,17 +533,17 @@ "MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.", "ValuePriceUSD": "Price: {0} (USD)", "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership.", - "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Media Browser.", + "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", "MessageSupporterMembershipExpiredOn": "Your supporter membership expired on {0}.", - "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Media Browser.", + "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", "MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.", "ButtonDelete": "Delete", - "HeaderMediaBrowserAccountAdded": "Media Browser Account Added", - "MessageMediaBrowserAccountAdded": "The Media Browser account has been added to this user.", - "MessagePendingMediaBrowserAccountAdded": "The Media Browser account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", - "HeaderMediaBrowserAccountRemoved": "Media Browser Account Removed", - "MessageMediaBrowserAccontRemoved": "The Media Browser account has been removed from this user.", - "TooltipLinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderMediaBrowserAccountAdded": "Emby Account Added", + "MessageMediaBrowserAccountAdded": "The Emby account has been added to this user.", + "MessagePendingMediaBrowserAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", + "HeaderMediaBrowserAccountRemoved": "Emby Account Removed", + "MessageMediaBrowserAccontRemoved": "The Emby account has been removed from this user.", + "TooltipLinkedToMediaBrowserConnect": "Linked to Emby Connect", "HeaderUnrated": "Unrated", "ValueDiscNumber": "Disc {0}", "HeaderUnknownDate": "Unknown Date", @@ -674,12 +674,12 @@ "WebClientTourMetadataManager": "Click edit to open the metadata manager", "WebClientTourPlaylists": "Easily create playlists and instant mixes, and play them on any device", "WebClientTourCollections": "Create movie collections to group box sets together", - "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Media Browser apps", - "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Media Browser app", + "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Emby apps", + "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Emby app", "WebClientTourUserPreferences3": "Design the web client home page to your liking", "WebClientTourUserPreferences4": "Configure backdrops, theme songs and external players", "WebClientTourMobile1": "The web client works great on smartphones and tablets...", - "WebClientTourMobile2": "and easily controls other devices and Media Browser apps", + "WebClientTourMobile2": "and easily controls other devices and Emby apps", "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", "MessageEnjoyYourStay": "Enjoy your stay", "DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.", @@ -691,7 +691,7 @@ "DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.", "DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.", "DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.", - "DashboardTourMobile": "The Media Browser dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", + "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", "MessageRefreshQueued": "Refresh queued", "TabDevices": "Devices", @@ -701,13 +701,13 @@ "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", "LabelEnableCameraUploadFor": "Enable camera upload for:", "HeaderSelectUploadPath": "Select Upload Path", - "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Media Browser.", + "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", "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.", + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", "ButtonSelectServer": "Select server", @@ -725,7 +725,7 @@ "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", "HeaderInviteGuest": "Invite Guest", "ButtonLinkMyMediaBrowserAccount": "Link my account now", - "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Media Browser account to this server.", + "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", "ButtonSync": "Sync", "SyncMedia": "Sync Media", "HeaderCancelSyncJob": "Cancel Sync", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json index 119f41e108..4ddfb39c08 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json @@ -39,7 +39,7 @@ "MessageErrorLoadingSupporterInfo": "Ocorreu um erro ao carregar a informa\u00e7\u00e3o do colaborador. Por favor, tente novamente mais tarde.", "MessageLinkYourSupporterKey": "Conecte sua chave de colaborador com at\u00e9 {0} membros do Media Browser Connect para desfrutar de acesso livre \u00e0s seguintes apps:", "HeaderConfirmRemoveUser": "Remover Usu\u00e1rio", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "Bem vindo ao controle remoto. Deslize para baixo em qualquer lugar desta tela para voltar para o local de onde veio anteriormente.", "MessageConfirmRemoveConnectSupporter": "Deseja realmente remover os benef\u00edcios adicionais de colaborador deste usu\u00e1rio?", "ValueTimeLimitSingleHour": "Limite de tempo: 1 hora", "ValueTimeLimitMultiHour": "Limite de tempo: {0} horas", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json index 88f91cc1e0..8d0adbe66a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json @@ -62,7 +62,7 @@ "HeaderVideo": "V\u00eddeo", "HeaderPaths": "Caminhos", "CategorySync": "Sincroniza\u00e7\u00e3o", - "TabPlaylist": "Playlist", + "TabPlaylist": "Lista de Reprodu\u00e7\u00e3o", "HeaderEasyPinCode": "C\u00f3digo de Pin Facil", "HeaderGrownupsOnly": "Adultos Apenas!", "DividerOr": "-- ou --", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json index 23f372184d..15cc530615 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -82,8 +82,8 @@ "LabelCustomCertificatePathHelp": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b .pfx SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d \u043e\u043f\u0443\u0449\u0435\u043d, \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.", "TitleNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", "ButtonDonateWithPayPal": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 PayPal", - "OptionDetectArchiveFilesAsMedia": "\u0410\u0440\u0445\u0438\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", - "OptionDetectArchiveFilesAsMediaHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 .RAR \u0438 .ZIP \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b.", + "OptionDetectArchiveFilesAsMedia": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445", + "OptionDetectArchiveFilesAsMediaHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 .RAR \u0438 .ZIP \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043a\u0430\u043a \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b.", "LabelEnterConnectUserName": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u042d-\u043f\u043e\u0447\u0442\u0430", "LabelEnterConnectUserNameHelp": "\u042d\u0442\u043e - \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Media Browser.", "LabelEnableEnhancedMovies": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", @@ -344,7 +344,7 @@ "LabelImagesByNamePath": "\u041f\u0443\u0442\u044c \u043a \u0440\u0438\u0441\u0443\u043d\u043a\u0430\u043c \u0447\u0435\u0440\u0435\u0437 \u0438\u043c\u044f:", "LabelImagesByNamePathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0430\u043a\u0442\u0451\u0440\u043e\u0432, \u0436\u0430\u043d\u0440\u043e\u0432 \u0438 \u0441\u0442\u0443\u0434\u0438\u0439.", "LabelMetadataPath": "\u041f\u0443\u0442\u044c \u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c:", - "LabelMetadataPathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a.", + "LabelMetadataPathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043d\u0435 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a.", "LabelTranscodingTempPath": "\u041f\u0443\u0442\u044c \u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438:", "LabelTranscodingTempPathHelp": "\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435. \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.", "TabBasics": "\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435", @@ -363,8 +363,8 @@ "LabelAutomaticUpdatesFanartHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043d\u043e\u0432\u044b\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 fanart.tv. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f.", "LabelAutomaticUpdatesTmdbHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043d\u043e\u0432\u044b\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 TheMovieDB.org. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f.", "LabelAutomaticUpdatesTvdbHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043d\u043e\u0432\u044b\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 TheTVDB.com. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f.", - "LabelFanartApiKey": "\u041b\u0438\u0447\u043d\u044b\u0439 API-\u043a\u043b\u044e\u0447:", - "LabelFanartApiKeyHelp": "\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043a Fanart \u0431\u0435\u0437 \u043b\u0438\u0447\u043d\u043e\u0433\u043e API-\u043a\u043b\u044e\u0447\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u044b \u0441\u0432\u044b\u0448\u0435 7 \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434. \u0421 \u043b\u0438\u0447\u043d\u044b\u043c API-\u043a\u043b\u044e\u0447\u043e\u043c - \u0441\u0440\u043e\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0434\u043e 48 \u0447\u0430\u0441\u043e\u0432, \u0430 \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c VIP-\u0447\u043b\u0435\u043d\u043e\u043c Fanart, \u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u0434\u043e 10 \u043c\u0438\u043d\u0443\u0442.", + "LabelFanartApiKey": "\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 API-\u043a\u043b\u044e\u0447:", + "LabelFanartApiKeyHelp": "\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043a Fanart \u0431\u0435\u0437 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e API-\u043a\u043b\u044e\u0447\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043d\u044b\u0445 \u0441\u0432\u044b\u0448\u0435 7 \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434. \u0421 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u043c API-\u043a\u043b\u044e\u0447\u043e\u043c - \u0441\u0440\u043e\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0434\u043e 48 \u0447\u0430\u0441\u043e\u0432, \u0430 \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c VIP-\u0447\u043b\u0435\u043d\u043e\u043c Fanart, \u0442\u043e \u044d\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u0434\u043e 10 \u043c\u0438\u043d\u0443\u0442.", "ExtractChapterImagesHelp": "\u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0446\u0435\u043d\u044b. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c, \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0434\u0435\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0437\u0430\u0434\u0430\u0447\u0430, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043d\u043e\u0447\u044c. \u0420\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0447\u0430\u0441\u044b \u043f\u0438\u043a.", "LabelMetadataDownloadLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e:", "ButtonAutoScroll": "\u041a \u0430\u0432\u0442\u043e\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0435", @@ -906,7 +906,7 @@ "HeaderBecomeMediaBrowserSupporter": "\u0421\u0442\u0430\u043d\u044c\u0442\u0435 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043e\u043c Media Browser", "TextEnjoyBonusFeatures": "\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438", "MessageNoMovieSuggestionsAvailable": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432. \u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0438\u043b\u044c\u043c\u044b, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043d\u0430\u0437\u0430\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438.", - "MessageNoCollectionsAvailable": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u0432\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0430\u043b\u044c\u0431\u043e\u043c\u043e\u0432, \u043a\u043d\u0438\u0433 \u0438 \u0438\u0433\u0440. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 +, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.", + "MessageNoCollectionsAvailable": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u044f\u043c\u0438 \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0430\u043b\u044c\u0431\u043e\u043c\u043e\u0432, \u043a\u043d\u0438\u0433 \u0438 \u0438\u0433\u0440. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \"+\", \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.", "MessageNoPlaylistsAvailable": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043e\u043c. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u043e \u0441\u043f\u0438\u0441\u043a\u0438, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043a\u043e\u0441\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u00bb.", "MessageNoPlaylistItemsAvailable": "\u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0443\u0441\u0442.", "ButtonDismiss": "\u041f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 8681eb7c8f..72d511b350 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -7,7 +7,7 @@ "LabelApiDocumentation": "Api Documentation", "LabelDeveloperResources": "Developer Resources", "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Media Browser", + "LabelConfigureMediaBrowser": "Configure Emby", "LabelOpenLibraryViewer": "Open Library Viewer", "LabelRestartServer": "Restart Server", "LabelShowLogWindow": "Show Log Window", @@ -15,19 +15,19 @@ "LabelFinish": "Finish", "LabelNext": "Next", "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", + "WelcomeToMediaBrowser": "Welcome to Emby!", "TitleMediaBrowser": "Emby", "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", "TellUsAboutYourself": "Tell us about yourself", "ButtonQuickStartGuide": "Quick start guide", "LabelYourFirstName": "Your first name:", "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", "LabelWindowsService": "Windows Service", "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish to view the Server Dashboard.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click Finish to view the Server Dashboard.", "LabelConfigureSettings": "Configure settings", "LabelEnableVideoImageExtraction": "Enable video image extraction", "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", @@ -35,7 +35,7 @@ "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", + "HeaderTermsOfService": "Emby Terms of Service", "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", "OptionIAcceptTermsOfService": "I accept the terms of service", "ButtonPrivacyPolicy": "Privacy policy", @@ -48,10 +48,10 @@ "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", "ButtonConvertMedia": "Convert media", "ButtonOrganize": "Organize", - "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "LinkedToMediaBrowserConnect": "Linked to Emby Connect", "HeaderSupporterBenefits": "Supporter Benefits", "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", "ButtonOk": "Ok", "ButtonCancel": "Cancel", @@ -85,7 +85,7 @@ "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "Sync Job", @@ -114,7 +114,7 @@ "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", "TabPreferences": "Preferences", "TabPassword": "Password", "TabLibraryAccess": "Library Access", @@ -289,12 +289,12 @@ "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", - "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", + "MediaBrowserHasCommunity": "Emby has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", "SearchKnowledgeBase": "Search the Knowledge Base", "VisitTheCommunity": "Visit the Community", - "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", - "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", + "VisitMediaBrowserWebsite": "Visit the Emby Web Site", + "VisitMediaBrowserWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", "OptionHideUser": "Hide this user from login screens", "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", "OptionDisableUser": "Disable this user", @@ -369,8 +369,8 @@ "LabelMetadataDownloadLanguage": "Preferred download language:", "ButtonAutoScroll": "Auto-scroll", "LabelImageSavingConvention": "Image saving convention:", - "LabelImageSavingConventionHelp": "Media Browser recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", - "OptionImageSavingCompatible": "Compatible - Media Browser/Kodi/Plex", + "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", + "OptionImageSavingCompatible": "Compatible - Emby/Kodi/Plex", "OptionImageSavingStandard": "Standard - MB2", "ButtonSignIn": "Sign In", "TitleSignIn": "Sign In", @@ -515,11 +515,11 @@ "EditCollectionItemsHelp": "Add or remove any movies, series, albums, books or games you wish to group within this collection.", "HeaderAddTitles": "Add Titles", "LabelEnableDlnaPlayTo": "Enable DLNA Play To", - "LabelEnableDlnaPlayToHelp": "Media Browser can detect devices within your network and offer the ability to remote control them.", + "LabelEnableDlnaPlayToHelp": "Emby can detect devices within your network and offer the ability to remote control them.", "LabelEnableDlnaDebugLogging": "Enable DLNA debug logging", "LabelEnableDlnaDebugLoggingHelp": "This will create large log files and should only be used as needed for troubleshooting purposes.", "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Media Browser.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Emby.", "HeaderCustomDlnaProfiles": "Custom Profiles", "HeaderSystemDlnaProfiles": "System Profiles", "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", @@ -536,7 +536,7 @@ "LabelFriendlyServerName": "Friendly server name:", "LabelFriendlyServerNameHelp": "This name will be used to identify this server. If left blank, the computer name will be used.", "LabelPreferredDisplayLanguage": "Preferred display language:", - "LabelPreferredDisplayLanguageHelp": "Translating Media Browser is an ongoing project and is not yet complete.", + "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project and is not yet complete.", "LabelReadHowYouCanContribute": "Read about how you can contribute.", "HeaderNewCollection": "New Collection", "ButtonSubmit": "Submit", @@ -544,7 +544,7 @@ "LabelCustomCss": "Custom css:", "LabelCustomCssHelp": "Apply your own custom css to the web interface.", "LabelLocalHttpServerPortNumber": "Local http port number:", - "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Media Browser's http server should bind to.", + "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", "LabelPublicHttpPort": "Public http port number:", "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local http port.", "LabelPublicHttpsPort": "Public https port number:", @@ -552,12 +552,12 @@ "LabelEnableHttps": "Report https as external address", "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address. This may break clients that do not yet support https.", "LabelHttpsPort": "Local https port number:", - "LabelHttpsPortHelp": "The tcp port number that Media Browser's https server should bind to.", + "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", "LabelEnableAutomaticPortMap": "Enable automatic port mapping", "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", "LabelExternalDDNS": "External WAN Address:", - "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Media Browser apps will use it when connecting remotely. Leave empty for automatic detection.", + "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", "TabResume": "Resume", "TabWeather": "Weather", "TitleAppSettings": "App Settings", @@ -585,7 +585,7 @@ "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", - "HeaderSupportTheTeam": "Support the Media Browser Team", + "HeaderSupportTheTeam": "Support the Emby Team", "LabelSupportAmount": "Amount (USD)", "HeaderSupportTheTeamHelp": "Help ensure the continued development of this project by donating. A portion of all donations will be contributed to other free tools we depend on.", "ButtonEnterSupporterKey": "Enter supporter key", @@ -617,7 +617,7 @@ "OptionMove": "Move", "LabelTransferMethodHelp": "Copy or move files from the watch folder", "HeaderLatestNews": "Latest News", - "HeaderHelpImproveMediaBrowser": "Help Improve Media Browser", + "HeaderHelpImproveMediaBrowser": "Help Improve Emby", "HeaderRunningTasks": "Running Tasks", "HeaderActiveDevices": "Active Devices", "HeaderPendingInstallations": "Pending Installations", @@ -628,8 +628,8 @@ "ButtonUpdateNow": "Update Now", "TabHosting": "Hosting", "PleaseUpdateManually": "Please shutdown the server and update manually.", - "NewServerVersionAvailable": "A new version of Media Browser Server is available!", - "ServerUpToDate": "Media Browser Server is up to date", + "NewServerVersionAvailable": "A new version of Emby Server is available!", + "ServerUpToDate": "Emby Server is up to date", "LabelComponentsUpdated": "The following components have been installed or updated:", "MessagePleaseRestartServerToFinishUpdating": "Please restart the server to finish applying updates.", "LabelDownMixAudioScale": "Audio boost when downmixing:", @@ -646,13 +646,13 @@ "LabelSupporterEmailAddress": "The email address that was used to purchase the key.", "ButtonRetrieveKey": "Retrieve Key", "LabelSupporterKey": "Supporter Key (paste from email)", - "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Media Browser.", + "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.", "MessageInvalidKey": "Supporter key is missing or invalid.", - "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be a Media Browser Supporter. Please donate and support the continued development of the core product. Thank you.", + "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.", "HeaderDisplaySettings": "Display Settings", "TabPlayTo": "Play To", "LabelEnableDlnaServer": "Enable Dlna server", - "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Media Browser content.", + "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", "LabelEnableBlastAliveMessages": "Blast alive messages", "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", "LabelBlastMessageInterval": "Alive message interval (seconds)", @@ -795,7 +795,7 @@ "LabelIconMaxHeight": "Icon max height:", "LabelIconMaxHeightHelp": "Max resolution of icons exposed via upnp:icon.", "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", - "HeaderProfileServerSettingsHelp": "These values control how Media Browser will present itself to the device.", + "HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.", "LabelMaxBitrate": "Max bitrate:", "LabelMaxBitrateHelp": "Specify a max bitrate in bandwidth constrained environments, or if the device imposes it's own limit.", "LabelMaxStreamingBitrate": "Max streaming bitrate:", @@ -838,7 +838,7 @@ "OptionEstimateContentLength": "Estimate content length when transcoding", "OptionReportByteRangeSeekingWhenTranscoding": "Report that the server supports byte seeking when transcoding", "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", - "HeaderSubtitleDownloadingHelp": "When Media Browser scans your video files it can search for missing subtitles, and download them using a subtitle provider such as OpenSubtitles.org.", + "HeaderSubtitleDownloadingHelp": "When Emby scans your video files it can search for missing subtitles, and download them using a subtitle provider such as OpenSubtitles.org.", "HeaderDownloadSubtitlesFor": "Download subtitles for:", "MessageNoChapterProviders": "Install a chapter provider plugin such as ChapterDb to enable additional chapter options.", "LabelSkipIfGraphicalSubsPresent": "Skip if the video already contains graphical subtitles", @@ -848,7 +848,7 @@ "HeaderDownloadChaptersFor": "Download chapter names for:", "LabelOpenSubtitlesUsername": "Open Subtitles username:", "LabelOpenSubtitlesPassword": "Open Subtitles password:", - "HeaderChapterDownloadingHelp": "When Media Browser scans your video files it can download friendly chapter names from the internet using chapter plugins such as ChapterDb.", + "HeaderChapterDownloadingHelp": "When Emby scans your video files it can download friendly chapter names from the internet using chapter plugins such as ChapterDb.", "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", "LabelSubtitlePlaybackMode": "Subtitle mode:", "LabelDownloadLanguages": "Download languages:", @@ -912,7 +912,7 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", - "HeaderBecomeMediaBrowserSupporter": "Become a Media Browser Supporter", + "HeaderBecomeMediaBrowserSupporter": "Become an Emby Supporter", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", @@ -979,9 +979,9 @@ "LabelProtocolInfo": "Protocol info:", "LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.", "TabNfo": "Nfo", - "HeaderKodiMetadataHelp": "Media Browser includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", + "HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", "LabelKodiMetadataUser": "Sync user watch data to nfo's for:", - "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Media Browser and Nfo files.", + "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.", "LabelKodiMetadataDateFormat": "Release date format:", "LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.", "LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files", @@ -999,7 +999,7 @@ "TabLogs": "Logs", "HeaderServerLogFiles": "Server log files:", "TabBranding": "Branding", - "HeaderBrandingHelp": "Customize the appearance of Media Browser to fit the needs of your group or organization.", + "HeaderBrandingHelp": "Customize the appearance of Emby to fit the needs of your group or organization.", "LabelLoginDisclaimer": "Login disclaimer:", "LabelLoginDisclaimerHelp": "This will be displayed at the bottom of the login page.", "LabelAutomaticallyDonate": "Automatically donate this amount every month", @@ -1015,7 +1015,7 @@ "HeaderLatestMusic": "Latest Music", "HeaderBranding": "Branding", "HeaderApiKeys": "Api Keys", - "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Media Browser. Keys are issued by logging in with a Media Browser account, or by manually granting the application a key.", + "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Emby Server. Keys are issued by logging in with an Emby account, or by manually granting the application a key.", "HeaderApiKey": "Api Key", "HeaderApp": "App", "HeaderDevice": "Device", @@ -1025,7 +1025,7 @@ "HeaderNewApiKey": "New Api Key", "LabelAppName": "App name", "LabelAppNameExample": "Example: Sickbeard, NzbDrone", - "HeaderNewApiKeyHelp": "Grant an application permission to communicate with Media Browser.", + "HeaderNewApiKeyHelp": "Grant an application permission to communicate with Emby Server.", "ButtonEnterSupporterKey": "Enter supporter key", "HeaderHttpHeaders": "Http Headers", "HeaderIdentificationHeader": "Identification Header", @@ -1133,7 +1133,7 @@ "UserDeletedWithName": "User {0} has been deleted", "MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Media Browser Server has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", "AuthenticationSucceededWithUserName": "{0} successfully authenticated", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "UserDownloadingItemWithValues": "{0} is downloading {1}", @@ -1154,14 +1154,14 @@ "ViewTypeLiveTvRecordingGroups": "Recordings", "ViewTypeLiveTvChannels": "Channels", "LabelEasyPinCode": "Easy pin code:", - "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Media Browser apps, and can also be used for easy in-network sign in.", + "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Emby apps, and can also be used for easy in-network sign in.", "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", - "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Media Browser apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", + "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", "HeaderPassword": "Password", "HeaderLocalAccess": "Local Access", "HeaderViewOrder": "View Order", "ButtonResetEasyPassword": "Reset easy pin code", - "LabelSelectUserViewOrder": "Choose the order your views will be displayed in within Media Browser apps", + "LabelSelectUserViewOrder": "Choose the order your views will be displayed in within Emby apps", "LabelMetadataRefreshMode": "Metadata refresh mode:", "LabelImageRefreshMode": "Image refresh mode:", "OptionDownloadMissingImages": "Download missing images", @@ -1265,10 +1265,10 @@ "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", "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.", - "LabelConnectGuestUserName": "Their Media Browser username or email address:", - "LabelConnectUserName": "Media Browser username/email:", - "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.", - "ButtonLearnMoreAboutMediaBrowserConnect": "Learn more about Media Browser Connect", + "LabelConnectGuestUserName": "Their Emby username or email address:", + "LabelConnectUserName": "Emby username/email:", + "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", + "ButtonLearnMoreAboutMediaBrowserConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", "HeaderSubtitleProfile": "Subtitle Profile", @@ -1317,7 +1317,7 @@ "TabCameraUpload": "Camera Upload", "TabDevices": "Devices", "TitleDevices": "Devices", - "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Media Browser.", + "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Emby.", "MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.", "LabelCameraUploadPath": "Camera upload path:", "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.", @@ -1326,10 +1326,10 @@ "LabelCustomDeviceDisplayName": "Display name:", "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.", "HeaderInviteUser": "Invite User", - "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Media Browser website, or their email address.", - "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Media Browser Connect.", + "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", + "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", "ButtonSendInvitation": "Send Invitation", - "HeaderSignInWithConnect": "Sign in with Media Browser Connect", + "HeaderSignInWithConnect": "Sign in with Emby Connect", "HeaderGuests": "Guests", "HeaderLocalUsers": "Local Users", "HeaderPendingInvitations": "Pending Invitations", @@ -1344,8 +1344,8 @@ "OptionEveryday": "Every day", "OptionWeekdays": "Weekdays", "OptionWeekends": "Weekends", - "MessageProfileInfoSynced": "User profile information synced with Media Browser Connect.", - "HeaderOptionalLinkMediaBrowserAccount": "Optional: Link your Media Browser account", + "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", + "HeaderOptionalLinkMediaBrowserAccount": "Optional: Link your Emby account", "ButtonTrailerReel": "Trailer reel", "HeaderTrailerReel": "Trailer Reel", "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", From 4fe8e504050d680ed3246805525605bb6be11e22 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 21 Mar 2015 14:12:12 -0400 Subject: [PATCH 09/29] update text --- .../Notifications/Notifications.cs | 2 +- .../Localization/JavaScript/javascript.json | 20 +++++++------- .../Localization/Server/server.json | 25 +++++++++--------- .../Browser/BrowserLauncher.cs | 2 +- .../ServerNotifyIcon.cs | 2 +- .../MediaBrowser.WebDashboard.csproj | 2 +- .../dashboard-ui/about.html | 2 +- .../dashboard-ui/channelitems.html | 2 +- .../dashboard-ui/channels.html | 2 +- .../dashboard-ui/channelslatest.html | 2 +- .../dashboard-ui/cinemamodeconfiguration.html | 2 +- .../dashboard-ui/collections.html | 2 +- .../dashboard-ui/connectlogin.html | 4 +-- .../dashboard-ui/css/fonts/Montserrat.woff2 | Bin 0 -> 9688 bytes .../dashboard-ui/css/fonts/mblogo.woff | Bin 3108 -> 0 bytes .../dashboard-ui/css/librarybrowser.css | 7 +---- .../dashboard-ui/css/librarymenu.css | 3 +-- .../dashboard-ui/css/site.css | 10 ++++--- .../dashboard-ui/dashboard.html | 2 +- .../dashboard-ui/dashboardgeneral.html | 2 +- .../dashboard-ui/editcollectionitems.html | 2 +- .../dashboard-ui/edititemimages.html | 2 +- .../dashboard-ui/edititemmetadata.html | 2 +- .../dashboard-ui/edititemsubtitles.html | 2 +- .../dashboard-ui/episodes.html | 2 +- .../dashboard-ui/favorites.html | 2 +- .../dashboard-ui/gamegenres.html | 2 +- .../dashboard-ui/games.html | 2 +- .../dashboard-ui/gamesrecommended.html | 2 +- .../dashboard-ui/gamestudios.html | 2 +- .../dashboard-ui/gamesystems.html | 2 +- .../dashboard-ui/homelatest.html | 2 +- .../dashboard-ui/index.html | 2 +- .../dashboard-ui/kids.html | 2 +- .../dashboard-ui/livetvchannel.html | 2 +- .../dashboard-ui/livetvchannels.html | 2 +- .../dashboard-ui/livetvguide.html | 2 +- .../dashboard-ui/livetvitems.html | 2 +- .../dashboard-ui/livetvnewrecording.html | 2 +- .../dashboard-ui/livetvprogram.html | 2 +- .../dashboard-ui/livetvrecording.html | 2 +- .../dashboard-ui/livetvrecordinglist.html | 2 +- .../dashboard-ui/livetvrecordings.html | 2 +- .../dashboard-ui/livetvseriestimer.html | 2 +- .../dashboard-ui/livetvseriestimers.html | 2 +- .../dashboard-ui/livetvsuggested.html | 2 +- .../dashboard-ui/livetvtimer.html | 2 +- .../dashboard-ui/livetvtimers.html | 2 +- .../dashboard-ui/moviegenres.html | 2 +- .../dashboard-ui/moviepeople.html | 2 +- .../dashboard-ui/movies.html | 2 +- .../dashboard-ui/movieslatest.html | 2 +- .../dashboard-ui/moviesrecommended.html | 2 +- .../dashboard-ui/moviestudios.html | 2 +- .../dashboard-ui/movietrailers.html | 2 +- .../dashboard-ui/musicalbumartists.html | 2 +- .../dashboard-ui/musicalbums.html | 2 +- .../dashboard-ui/musicartists.html | 2 +- .../dashboard-ui/musicgenres.html | 2 +- .../dashboard-ui/musicrecommended.html | 2 +- .../dashboard-ui/musicvideos.html | 2 +- .../dashboard-ui/mypreferencesdisplay.html | 2 +- .../dashboard-ui/mypreferenceslanguages.html | 2 +- .../dashboard-ui/mypreferenceswebclient.html | 2 +- .../dashboard-ui/myprofile.html | 4 +-- .../dashboard-ui/nowplaying.html | 2 +- .../dashboard-ui/playlistedit.html | 2 +- .../dashboard-ui/playlists.html | 2 +- .../dashboard-ui/plugincatalog.html | 4 +-- .../dashboard-ui/reports.html | 2 +- .../dashboard-ui/scripts/dashboardpage.js | 4 +-- .../dashboard-ui/scripts/indexpage.js | 2 +- .../dashboard-ui/scripts/librarymenu.js | 4 +-- .../dashboard-ui/scripts/site.js | 5 ++-- .../dashboard-ui/scripts/supporterpage.js | 2 +- .../dashboard-ui/scripts/useredit.js | 8 +++--- .../dashboard-ui/scripts/userprofilespage.js | 4 +-- .../dashboard-ui/scripts/wizarduserpage.js | 4 +-- .../dashboard-ui/selectserver.html | 2 +- .../dashboard-ui/songs.html | 2 +- .../dashboard-ui/support.html | 10 +++---- .../dashboard-ui/tvgenres.html | 2 +- .../dashboard-ui/tvlatest.html | 2 +- .../dashboard-ui/tvpeople.html | 2 +- .../dashboard-ui/tvrecommended.html | 2 +- .../dashboard-ui/tvshows.html | 2 +- .../dashboard-ui/tvstudios.html | 2 +- .../dashboard-ui/tvupcoming.html | 2 +- .../dashboard-ui/useredit.html | 2 +- .../dashboard-ui/userpassword.html | 2 +- .../dashboard-ui/userprofiles.html | 6 ++--- .../dashboard-ui/wizardagreement.html | 6 ++--- .../dashboard-ui/wizardfinish.html | 6 ++--- .../dashboard-ui/wizardlibrary.html | 2 +- .../dashboard-ui/wizardservice.html | 2 +- .../dashboard-ui/wizardsettings.html | 2 +- .../dashboard-ui/wizardstart.html | 4 +-- .../dashboard-ui/wizarduser.html | 6 ++--- 98 files changed, 146 insertions(+), 150 deletions(-) create mode 100644 MediaBrowser.WebDashboard/dashboard-ui/css/fonts/Montserrat.woff2 delete mode 100644 MediaBrowser.WebDashboard/dashboard-ui/css/fonts/mblogo.woff diff --git a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs index bc995d62ab..2fc249744c 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs @@ -174,7 +174,7 @@ async void _appHost_HasUpdateAvailableChanged(object sender, EventArgs e) var notification = new NotificationRequest { - Description = "Please see mediabrowser.tv for details.", + Description = "Please see emby.media for details.", NotificationType = type }; diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index 63b37ba8ac..cde8e98210 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -7,7 +7,7 @@ "Password": "Password", "DeleteImage": "Delete Image", "MessageThankYouForSupporting": "Thank you for supporting Emby.", - "MessagePleaseSupportMediaBrowser": "Please support Emby.", + "MessagePleaseSupportProject": "Please support Emby.", "DeleteImageConfirmation": "Are you sure you wish to delete this image?", "FileReadCancelled": "The file read has been canceled.", "FileNotFound": "File not found.", @@ -89,8 +89,8 @@ "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", - "HeaderWelcomeToMediaBrowserServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToMediaBrowserWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", + "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitleSync": "Sync", @@ -538,12 +538,12 @@ "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", "MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.", "ButtonDelete": "Delete", - "HeaderMediaBrowserAccountAdded": "Emby Account Added", - "MessageMediaBrowserAccountAdded": "The Emby account has been added to this user.", - "MessagePendingMediaBrowserAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", - "HeaderMediaBrowserAccountRemoved": "Emby Account Removed", - "MessageMediaBrowserAccontRemoved": "The Emby account has been removed from this user.", - "TooltipLinkedToMediaBrowserConnect": "Linked to Emby Connect", + "HeaderEmbyAccountAdded": "Emby Account Added", + "MessageEmbyAccountAdded": "The Emby account has been added to this user.", + "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", + "HeaderEmbyAccountRemoved": "Emby Account Removed", + "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", + "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", "HeaderUnrated": "Unrated", "ValueDiscNumber": "Disc {0}", "HeaderUnknownDate": "Unknown Date", @@ -724,7 +724,7 @@ "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", "HeaderInviteGuest": "Invite Guest", - "ButtonLinkMyMediaBrowserAccount": "Link my account now", + "ButtonLinkMyEmbyAccount": "Link my account now", "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", "ButtonSync": "Sync", "SyncMedia": "Sync Media", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 72d511b350..0fc603a083 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -7,7 +7,7 @@ "LabelApiDocumentation": "Api Documentation", "LabelDeveloperResources": "Developer Resources", "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Emby", + "LabelConfigureServer": "Configure Emby", "LabelOpenLibraryViewer": "Open Library Viewer", "LabelRestartServer": "Restart Server", "LabelShowLogWindow": "Show Log Window", @@ -15,8 +15,7 @@ "LabelFinish": "Finish", "LabelNext": "Next", "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Welcome to Emby!", - "TitleMediaBrowser": "Emby", + "WelcomeToProject": "Welcome to Emby!", "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", "TellUsAboutYourself": "Tell us about yourself", "ButtonQuickStartGuide": "Quick start guide", @@ -48,7 +47,7 @@ "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", "ButtonConvertMedia": "Convert media", "ButtonOrganize": "Organize", - "LinkedToMediaBrowserConnect": "Linked to Emby Connect", + "LinkedToEmbyConnect": "Linked to Emby Connect", "HeaderSupporterBenefits": "Supporter Benefits", "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", @@ -289,12 +288,12 @@ "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", - "MediaBrowserHasCommunity": "Emby has a thriving community of users and contributors.", + "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", "SearchKnowledgeBase": "Search the Knowledge Base", "VisitTheCommunity": "Visit the Community", - "VisitMediaBrowserWebsite": "Visit the Emby Web Site", - "VisitMediaBrowserWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", + "VisitProjectWebsite": "Visit the Emby Web Site", + "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", "OptionHideUser": "Hide this user from login screens", "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", "OptionDisableUser": "Disable this user", @@ -617,7 +616,7 @@ "OptionMove": "Move", "LabelTransferMethodHelp": "Copy or move files from the watch folder", "HeaderLatestNews": "Latest News", - "HeaderHelpImproveMediaBrowser": "Help Improve Emby", + "HeaderHelpImproveProject": "Help Improve Emby", "HeaderRunningTasks": "Running Tasks", "HeaderActiveDevices": "Active Devices", "HeaderPendingInstallations": "Pending Installations", @@ -861,8 +860,8 @@ "LabelMessageTitle": "Message title:", "MessageNoAvailablePlugins": "No available plugins.", "LabelDisplayPluginsFor": "Display plugins for:", - "PluginTabMediaBrowserClassic": "MB Classic", - "PluginTabMediaBrowserTheater": "MB Theater", + "PluginTabAppClassic": "Emby Classic", + "PluginTabAppTheater": "Emby Theater", "LabelEpisodeNamePlain": "Episode name", "LabelSeriesNamePlain": "Series name", "ValueSeriesNamePeriod": "Series.name", @@ -912,7 +911,7 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", - "HeaderBecomeMediaBrowserSupporter": "Become an Emby Supporter", + "HeaderBecomeProjectSupporter": "Become an Emby Supporter", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", @@ -1268,7 +1267,7 @@ "LabelConnectGuestUserName": "Their Emby username or email address:", "LabelConnectUserName": "Emby username/email:", "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", - "ButtonLearnMoreAboutMediaBrowserConnect": "Learn more about Emby Connect", + "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", "HeaderSubtitleProfile": "Subtitle Profile", @@ -1345,7 +1344,7 @@ "OptionWeekdays": "Weekdays", "OptionWeekends": "Weekends", "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", - "HeaderOptionalLinkMediaBrowserAccount": "Optional: Link your Emby account", + "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", "ButtonTrailerReel": "Trailer reel", "HeaderTrailerReel": "Trailer Reel", "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", diff --git a/MediaBrowser.Server.Startup.Common/Browser/BrowserLauncher.cs b/MediaBrowser.Server.Startup.Common/Browser/BrowserLauncher.cs index 2f0aaee76c..3eeb072a88 100644 --- a/MediaBrowser.Server.Startup.Common/Browser/BrowserLauncher.cs +++ b/MediaBrowser.Server.Startup.Common/Browser/BrowserLauncher.cs @@ -38,7 +38,7 @@ public static void OpenGithub(ILogger logger) /// The logger. public static void OpenCommunity(ILogger logger) { - OpenUrl("http://mediabrowser.tv/community", logger); + OpenUrl("http://emby.media/community", logger); } /// diff --git a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs index f04593e903..9db3bdb90d 100644 --- a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs +++ b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs @@ -178,7 +178,7 @@ private void LocalizeText() cmdSwagger.Text = _localization.GetLocalizedString("LabelApiDocumentation"); cmdApiDocs.Text = _localization.GetLocalizedString("LabelDeveloperResources"); cmdBrowse.Text = _localization.GetLocalizedString("LabelBrowseLibrary"); - cmdConfigure.Text = _localization.GetLocalizedString("LabelConfigureMediaBrowser"); + cmdConfigure.Text = _localization.GetLocalizedString("LabelConfigureServer"); cmdRestart.Text = _localization.GetLocalizedString("LabelRestartServer"); } diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index f945ce0821..81e0904d18 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -2238,7 +2238,7 @@ - + PreserveNewest diff --git a/MediaBrowser.WebDashboard/dashboard-ui/about.html b/MediaBrowser.WebDashboard/dashboard-ui/about.html index 5d63398446..74759074de 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/about.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/about.html @@ -17,7 +17,7 @@ ${TabAbout}
- MEDIABROWSER + MEDIA


diff --git a/MediaBrowser.WebDashboard/dashboard-ui/channelitems.html b/MediaBrowser.WebDashboard/dashboard-ui/channelitems.html index 45cd31e300..948b9e09c0 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/channelitems.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/channelitems.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
diff --git a/MediaBrowser.WebDashboard/dashboard-ui/channels.html b/MediaBrowser.WebDashboard/dashboard-ui/channels.html index fffcecb670..4f3ceefb09 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/channels.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/channels.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
diff --git a/MediaBrowser.WebDashboard/dashboard-ui/channelslatest.html b/MediaBrowser.WebDashboard/dashboard-ui/channelslatest.html index 8ec0061528..505c026b04 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/channelslatest.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/channelslatest.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
diff --git a/MediaBrowser.WebDashboard/dashboard-ui/cinemamodeconfiguration.html b/MediaBrowser.WebDashboard/dashboard-ui/cinemamodeconfiguration.html index adb98f135e..66e8de327f 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/cinemamodeconfiguration.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/cinemamodeconfiguration.html @@ -46,7 +46,7 @@
${OptionTrailersFromMyMoviesHelp}
- +
  • diff --git a/MediaBrowser.WebDashboard/dashboard-ui/collections.html b/MediaBrowser.WebDashboard/dashboard-ui/collections.html index 9e21f31b6a..7d9eb01ae1 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/collections.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/collections.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/connectlogin.html b/MediaBrowser.WebDashboard/dashboard-ui/connectlogin.html index c9903da552..ea1b241ca6 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/connectlogin.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/connectlogin.html @@ -28,12 +28,12 @@

    ${HeaderSignInWithConnect}

    ${ButtonSignIn}

    - ${ButtonForgotPassword} + ${ButtonForgotPassword}


    ${HeaderNewUsers}

    - ${ButtonSignUp} + ${ButtonSignUp}
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/css/fonts/Montserrat.woff2 b/MediaBrowser.WebDashboard/dashboard-ui/css/fonts/Montserrat.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..560f18bb0ff069a4f5f40f84444adef97fd51040 GIT binary patch literal 9688 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 literal 0 HcmV?d00001 diff --git a/MediaBrowser.WebDashboard/dashboard-ui/css/fonts/mblogo.woff b/MediaBrowser.WebDashboard/dashboard-ui/css/fonts/mblogo.woff deleted file mode 100644 index 86e8833068a3880e57a6a3d508a40cb3521e25bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3108 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 Mx)K27X^>UmKldql+5i9m diff --git a/MediaBrowser.WebDashboard/dashboard-ui/css/librarybrowser.css b/MediaBrowser.WebDashboard/dashboard-ui/css/librarybrowser.css index 556793a9b7..ba3e08ec28 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/css/librarybrowser.css +++ b/MediaBrowser.WebDashboard/dashboard-ui/css/librarybrowser.css @@ -704,8 +704,7 @@ span.itemCommunityRating:not(:empty) + .userDataIcons { .libraryPanelHeader { margin: 5px 0 15px 0; font-size: 15px; - font-family: MBLogo; - font-weight: 200; + font-family: Montserrat; } .libraryPanelHeader a { @@ -724,10 +723,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons { font-weight: 300; } -.mediaBrowserAccent { - color: #52B54B !important; -} - .detailImageProgressContainer { position: absolute; bottom: 2px; diff --git a/MediaBrowser.WebDashboard/dashboard-ui/css/librarymenu.css b/MediaBrowser.WebDashboard/dashboard-ui/css/librarymenu.css index fb140c969d..eb638c53ea 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/css/librarymenu.css +++ b/MediaBrowser.WebDashboard/dashboard-ui/css/librarymenu.css @@ -100,8 +100,7 @@ } .logoLibraryMenuButtonText { - font-family: MBLogo; - font-weight: 200; + font-family: Montserrat; color: #000; } diff --git a/MediaBrowser.WebDashboard/dashboard-ui/css/site.css b/MediaBrowser.WebDashboard/dashboard-ui/css/site.css index 9b476abe76..f0c127f99a 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/css/site.css +++ b/MediaBrowser.WebDashboard/dashboard-ui/css/site.css @@ -33,11 +33,13 @@ src: local('Roboto Bold'), local('Roboto-Bold'), url(fonts/RobotoBold.woff) format('woff'); } +/* latin */ @font-face { - font-family: 'MBLogo'; - font-style: normal; - font-weight: 200; - src: url('fonts/mblogo.woff') format('woff'); + font-family: 'Montserrat'; + font-style: normal; + font-weight: 400; + src: local('Montserrat-Regular'), url(fonts/Montserrat.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; } /* For some reason jquery mobile 1.4.5 wants to horitontally pad mini form fields. */ diff --git a/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html b/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html index ad32deb5a3..528ff8e6a2 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html @@ -49,7 +49,7 @@

    ${HeaderServerInformation}

  • diff --git a/MediaBrowser.WebDashboard/dashboard-ui/dashboardgeneral.html b/MediaBrowser.WebDashboard/dashboard-ui/dashboardgeneral.html index 8d161ae492..f844708c67 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/dashboardgeneral.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/dashboardgeneral.html @@ -28,7 +28,7 @@
    ${LabelPreferredDisplayLanguageHelp}
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/editcollectionitems.html b/MediaBrowser.WebDashboard/dashboard-ui/editcollectionitems.html index 7e5bcefb0c..aa72118445 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/editcollectionitems.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/editcollectionitems.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/edititemimages.html b/MediaBrowser.WebDashboard/dashboard-ui/edititemimages.html index 13b90c45ea..6e1fc2b1e4 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/edititemimages.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/edititemimages.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/edititemmetadata.html b/MediaBrowser.WebDashboard/dashboard-ui/edititemmetadata.html index 8e5e726a39..336d2a2c2a 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/edititemmetadata.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/edititemmetadata.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/edititemsubtitles.html b/MediaBrowser.WebDashboard/dashboard-ui/edititemsubtitles.html index 322d3bb475..dfcdb5bddb 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/edititemsubtitles.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/edititemsubtitles.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/episodes.html b/MediaBrowser.WebDashboard/dashboard-ui/episodes.html index ca0cd20d8e..dffcea8614 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/episodes.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/episodes.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/favorites.html b/MediaBrowser.WebDashboard/dashboard-ui/favorites.html index 6f59a40a9e..0a4cacae9b 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/favorites.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/favorites.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/gamegenres.html b/MediaBrowser.WebDashboard/dashboard-ui/gamegenres.html index 44b128024b..eab7e4ef9f 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/gamegenres.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/gamegenres.html @@ -1,7 +1,7 @@ - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/games.html b/MediaBrowser.WebDashboard/dashboard-ui/games.html index ab54ba9227..76e18e4845 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/games.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/games.html @@ -1,7 +1,7 @@ - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/gamesrecommended.html b/MediaBrowser.WebDashboard/dashboard-ui/gamesrecommended.html index 71f6452d82..ec54afcba5 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/gamesrecommended.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/gamesrecommended.html @@ -1,7 +1,7 @@ - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/gamestudios.html b/MediaBrowser.WebDashboard/dashboard-ui/gamestudios.html index 57ab065b91..90a1b6cb26 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/gamestudios.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/gamestudios.html @@ -1,7 +1,7 @@ - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/gamesystems.html b/MediaBrowser.WebDashboard/dashboard-ui/gamesystems.html index 968eeb151a..ff9cb82dfb 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/gamesystems.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/gamesystems.html @@ -1,7 +1,7 @@ - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/homelatest.html b/MediaBrowser.WebDashboard/dashboard-ui/homelatest.html index 3a57e91ae9..1035bf92cb 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/homelatest.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/homelatest.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/index.html b/MediaBrowser.WebDashboard/dashboard-ui/index.html index 5c0b4721f7..416432de5a 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/index.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/index.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/kids.html b/MediaBrowser.WebDashboard/dashboard-ui/kids.html index c8fc57ca3e..9f0af0fae6 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/kids.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/kids.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvchannel.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvchannel.html index bee12e5a51..09ace61035 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvchannel.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvchannel.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvchannels.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvchannels.html index eec876d58d..7733379c82 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvchannels.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvchannels.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvguide.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvguide.html index c4615e1b6b..50342200b6 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvguide.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvguide.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvitems.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvitems.html index 11e56cc07b..5020a1ea32 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvitems.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvitems.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvnewrecording.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvnewrecording.html index 349278c513..be2ecddc7f 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvnewrecording.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvnewrecording.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvprogram.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvprogram.html index e1057a9901..5ecda6d56c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvprogram.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvprogram.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvrecording.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvrecording.html index 8dc91cb79b..2fb072e01c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvrecording.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvrecording.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvrecordinglist.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvrecordinglist.html index 062c5049c2..e7fedb3590 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvrecordinglist.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvrecordinglist.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvrecordings.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvrecordings.html index 2f0826a810..88412b480f 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvrecordings.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvrecordings.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvseriestimer.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvseriestimer.html index d2ac008db8..3f703d33ba 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvseriestimer.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvseriestimer.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvseriestimers.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvseriestimers.html index 6c57ca6dc3..9e0db536d6 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvseriestimers.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvseriestimers.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvsuggested.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvsuggested.html index a68e396bd2..0f936adce4 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvsuggested.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvsuggested.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvtimer.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvtimer.html index 167dca2b95..7a9b2b3304 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvtimer.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvtimer.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/livetvtimers.html b/MediaBrowser.WebDashboard/dashboard-ui/livetvtimers.html index bae7ad047f..e3b8eb303e 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/livetvtimers.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/livetvtimers.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/moviegenres.html b/MediaBrowser.WebDashboard/dashboard-ui/moviegenres.html index 33bb8f5448..ed4de7f7a0 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/moviegenres.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/moviegenres.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/moviepeople.html b/MediaBrowser.WebDashboard/dashboard-ui/moviepeople.html index 00ba9c262c..b376b6bf1d 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/moviepeople.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/moviepeople.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/movies.html b/MediaBrowser.WebDashboard/dashboard-ui/movies.html index ea9d8558d0..d22d910e92 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/movies.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/movies.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/movieslatest.html b/MediaBrowser.WebDashboard/dashboard-ui/movieslatest.html index 6bbd112818..4becc84c87 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/movieslatest.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/movieslatest.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/moviesrecommended.html b/MediaBrowser.WebDashboard/dashboard-ui/moviesrecommended.html index 4350430db4..9ac43e153d 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/moviesrecommended.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/moviesrecommended.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/moviestudios.html b/MediaBrowser.WebDashboard/dashboard-ui/moviestudios.html index dacfc1dc5f..a64f6f351d 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/moviestudios.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/moviestudios.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/movietrailers.html b/MediaBrowser.WebDashboard/dashboard-ui/movietrailers.html index bfd70f3c94..2238813f64 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/movietrailers.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/movietrailers.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/musicalbumartists.html b/MediaBrowser.WebDashboard/dashboard-ui/musicalbumartists.html index d1b4eb2bfb..f9429b904c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/musicalbumartists.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/musicalbumartists.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/musicalbums.html b/MediaBrowser.WebDashboard/dashboard-ui/musicalbums.html index f17c6c9ca0..c24bc9f6b4 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/musicalbums.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/musicalbums.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/musicartists.html b/MediaBrowser.WebDashboard/dashboard-ui/musicartists.html index 459d581d44..580f80654b 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/musicartists.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/musicartists.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/musicgenres.html b/MediaBrowser.WebDashboard/dashboard-ui/musicgenres.html index 6fc047110a..3bbd796af7 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/musicgenres.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/musicgenres.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/musicrecommended.html b/MediaBrowser.WebDashboard/dashboard-ui/musicrecommended.html index 075ffcc571..26641bf606 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/musicrecommended.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/musicrecommended.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/musicvideos.html b/MediaBrowser.WebDashboard/dashboard-ui/musicvideos.html index b0c77f054f..4d415e1441 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/musicvideos.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/musicvideos.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/mypreferencesdisplay.html b/MediaBrowser.WebDashboard/dashboard-ui/mypreferencesdisplay.html index af5571b2c2..17c7f6eb1f 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/mypreferencesdisplay.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/mypreferencesdisplay.html @@ -2,7 +2,7 @@ - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/mypreferenceslanguages.html b/MediaBrowser.WebDashboard/dashboard-ui/mypreferenceslanguages.html index 74625a6f95..09d7ab64b2 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/mypreferenceslanguages.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/mypreferenceslanguages.html @@ -2,7 +2,7 @@ - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/mypreferenceswebclient.html b/MediaBrowser.WebDashboard/dashboard-ui/mypreferenceswebclient.html index be0a9ff1ef..a66521b184 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/mypreferenceswebclient.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/mypreferenceswebclient.html @@ -2,7 +2,7 @@ - ${TitleMediaBrowser} + Emby
    diff --git a/MediaBrowser.WebDashboard/dashboard-ui/myprofile.html b/MediaBrowser.WebDashboard/dashboard-ui/myprofile.html index 6283468199..91d1dc1bbf 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/myprofile.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/myprofile.html @@ -1,7 +1,7 @@  - ${TitleMediaBrowser} + Emby
    @@ -27,7 +27,7 @@