diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations')
7 files changed, 30 insertions, 57 deletions
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index 69a681ead..553c683fd 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -453,6 +453,7 @@ namespace MediaBrowser.Server.Implementations.Channels MaxPageSize = features.MaxPageSize, MediaTypes = features.MediaTypes, SupportsSortOrderToggle = features.SupportsSortOrderToggle, + SupportsLatestMedia = provider is ISupportsLatestMedia, Name = channel.Name, Id = channel.Id.ToString("N"), CanDownloadAllMedia = isIndexable diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index db0cf33c4..e19a6c7d6 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -133,8 +133,10 @@ namespace MediaBrowser.Server.Implementations.Dto ? null : source.MediaStreams.Where(i => i.Type == MediaStreamType.Audio && i.Index == defaultAudioIndex).Select(i => i.Language).FirstOrDefault(); - source.DefaultSubtitleStreamIndex = MediaStreamSelector.GetDefaultSubtitleStreamIndex(source.MediaStreams, preferredSubs, - user.Configuration.SubtitleMode, audioLangage); + source.DefaultSubtitleStreamIndex = MediaStreamSelector.GetDefaultSubtitleStreamIndex(source.MediaStreams, + preferredSubs, + user.Configuration.SubtitleMode, + audioLangage); } } diff --git a/MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs b/MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs index 10c78b300..12e70598f 100644 --- a/MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs +++ b/MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs @@ -38,7 +38,7 @@ namespace MediaBrowser.Server.Implementations.Dto SubtitlePlaybackMode mode, string audioTrackLanguage) { - var languages = preferredLanguages as List<string> ?? preferredLanguages.ToList(); + var languages = preferredLanguages.ToList(); streams = GetSortedStreams(streams, MediaStreamType.Subtitle, languages).ToList(); var full = streams.Where(s => !s.IsForced); @@ -87,7 +87,12 @@ namespace MediaBrowser.Server.Implementations.Dto .Where(i => i.Type == type); // Give some preferance to external text subs for better performance - return orderStreams.OrderBy(i => languagePreferences.FindIndex(l => string.Equals(i.Language, l, StringComparison.OrdinalIgnoreCase))) + return orderStreams.OrderBy(i => + { + var index = languagePreferences.FindIndex(l => string.Equals(i.Language, l, StringComparison.OrdinalIgnoreCase)); + + return index == -1 ? 100 : index; + }) .ThenBy(i => i.IsDefault) .ThenBy(i => !i.IsGraphicalSubtitleStream) .ThenBy(i => i.IsExternal) diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index b9a96bfc9..fc4b9eb4c 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -88,29 +88,19 @@ namespace MediaBrowser.Server.Implementations.Library if (query.IncludeExternalContent) { - var channelsTask = Task.Run(() => _channelManager.GetChannels(new ChannelQuery + var channelResult = await _channelManager.GetChannels(new ChannelQuery { Limit = 0, UserId = query.UserId - }, cancellationToken), cancellationToken); - - // Avoid implicitly captured closure. - var token = cancellationToken; - var liveTvTask = Task.Run(() => _liveTvManager.GetLiveTvInfo(token), cancellationToken); - - await Task.WhenAll(channelsTask, liveTvTask).ConfigureAwait(false); - - var channelResult = channelsTask.Result; + }, cancellationToken).ConfigureAwait(false); if (channelResult.TotalRecordCount > 0) { list.Add(await _channelManager.GetInternalChannelFolder(query.UserId, cancellationToken).ConfigureAwait(false)); } - var liveTvInfo = liveTvTask.Result; - - if (liveTvInfo.EnabledUsers.Contains(query.UserId)) + if (_liveTvManager.GetEnabledUsers().Select(i => i.Id.ToString("N")).Contains(query.UserId)) { list.Add(await _liveTvManager.GetInternalLiveTvFolder(query.UserId, cancellationToken).ConfigureAwait(false)); } diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 625dd7e82..a555e1f9c 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1734,6 +1734,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv return info; } + public IEnumerable<User> GetEnabledUsers() + { + var service = ActiveService; + + return _userManager.Users + .Where(i => i.Configuration.EnableLiveTvAccess && service != null); + } + /// <summary> /// Resets the tuner. /// </summary> diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 74ac9aeeb..2eec7432c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -733,7 +733,7 @@ "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.", "HeaderDownloadSubtitlesFor": "Download subtitles for:", - "MessageNoChapterProviders": "Install a chapter provider plugin such as ChapterDb or tagChimp to enable additional chapter metadata options.", + "MessageNoChapterProviders": "Install a chapter provider plugin such as ChapterDb or tagChimp to enable additional chapter options.", "LabelSkipIfGraphicalSubsPresent": "Skip if the video already contains graphical subtitles", "LabelSkipIfGraphicalSubsPresentHelp": "Keeping text versions of subtitles will result in more efficient delivery to mobile clients.", "TabSubtitles": "Subtitles", diff --git a/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs b/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs index ee3e15475..f4b867169 100644 --- a/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs +++ b/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs @@ -1,11 +1,10 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Chapters; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.MediaEncoding; -using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; @@ -24,48 +23,16 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder private readonly CultureInfo _usCulture = new CultureInfo("en-US"); private readonly IFileSystem _fileSystem; private readonly ILogger _logger; - private readonly IItemRepository _itemRepo; private readonly IMediaEncoder _encoder; + private readonly IChapterManager _chapterManager; - public EncodingManager(IServerConfigurationManager config, IFileSystem fileSystem, ILogger logger, IItemRepository itemRepo, IMediaEncoder encoder) + public EncodingManager(IServerConfigurationManager config, IFileSystem fileSystem, ILogger logger, IMediaEncoder encoder, IChapterManager chapterManager) { _config = config; _fileSystem = fileSystem; _logger = logger; - _itemRepo = itemRepo; _encoder = encoder; - } - - private string SubtitleCachePath - { - get - { - return Path.Combine(_config.ApplicationPaths.CachePath, "subtitles"); - } - } - - public string GetSubtitleCachePath(string originalSubtitlePath, string outputSubtitleExtension) - { - var ticksParam = _fileSystem.GetLastWriteTimeUtc(originalSubtitlePath).Ticks; - - var filename = (originalSubtitlePath + ticksParam).GetMD5() + outputSubtitleExtension; - - var prefix = filename.Substring(0, 1); - - return Path.Combine(SubtitleCachePath, prefix, filename); - } - - public string GetSubtitleCachePath(string mediaPath, int subtitleStreamIndex, string outputSubtitleExtension) - { - var ticksParam = string.Empty; - - var date = _fileSystem.GetLastWriteTimeUtc(mediaPath); - - var filename = (mediaPath + "_" + subtitleStreamIndex.ToString(_usCulture) + "_" + date.Ticks.ToString(_usCulture) + ticksParam).GetMD5() + outputSubtitleExtension; - - var prefix = filename.Substring(0, 1); - - return Path.Combine(SubtitleCachePath, prefix, filename); + _chapterManager = chapterManager; } /// <summary> @@ -202,7 +169,7 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder if (saveChapters && changesMade) { - await _itemRepo.SaveChapters(video.Id, chapters, cancellationToken).ConfigureAwait(false); + await _chapterManager.SaveChapters(video.Id.ToString(), chapters, cancellationToken).ConfigureAwait(false); } DeleteDeadImages(currentImages, chapters); |
