From 1279c6d8b5179017efb3fb9503d6937dcd84bc97 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 17 Jul 2015 22:52:27 -0400 Subject: fix roku live tv stream closing --- MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs index b6441053d..9b46a8057 100644 --- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -230,7 +230,7 @@ namespace MediaBrowser.Server.Implementations.Library private void SetKeyProperties(IMediaSourceProvider provider, MediaSourceInfo mediaSource) { - var prefix = provider.GetType().FullName.GetMD5().ToString("N") + "|"; + var prefix = provider.GetType().FullName.GetMD5().ToString("N") + LiveStreamIdDelimeter; if (!string.IsNullOrWhiteSpace(mediaSource.OpenToken) && !mediaSource.OpenToken.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) { @@ -463,10 +463,13 @@ namespace MediaBrowser.Server.Implementations.Library _liveStreamSemaphore.Release(); } } + + // Do not use a pipe here because Roku http requests to the server will fail, without any explicit error message. + private const char LiveStreamIdDelimeter = '_'; private Tuple GetProvider(string key) { - var keys = key.Split(new[] { '|' }, 2); + var keys = key.Split(new[] { LiveStreamIdDelimeter }, 2); var provider = _providers.FirstOrDefault(i => string.Equals(i.GetType().FullName.GetMD5().ToString("N"), keys[0], StringComparison.OrdinalIgnoreCase)); -- cgit v1.2.3 From 42542e10bf3a780f7f03cd94415aab51b3aa05c0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 18 Jul 2015 15:32:59 -0400 Subject: add live tv to search --- .../Entities/InternalItemsQuery.cs | 1 + .../Library/SearchEngine.cs | 36 +++++++---- .../Persistence/SqliteItemRepository.cs | 72 ++++++++++++++++++---- 3 files changed, 87 insertions(+), 22 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index c5e60a73d..3702716f9 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -40,6 +40,7 @@ namespace MediaBrowser.Controller.Entities public string NameStartsWithOrGreater { get; set; } public string NameStartsWith { get; set; } public string NameLessThan { get; set; } + public string NameContains { get; set; } public string Person { get; set; } public string[] PersonIds { get; set; } diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index 05dde5b3e..db8a2d4fd 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -37,26 +37,22 @@ namespace MediaBrowser.Server.Implementations.Library Func filter = i => !(i is ICollectionFolder); + User user = null; + if (string.IsNullOrWhiteSpace(query.UserId)) { inputItems = _libraryManager.RootFolder.GetRecursiveChildren(filter); } else { - var user = _userManager.GetUserById(query.UserId); + user = _userManager.GetUserById(query.UserId); inputItems = user.RootFolder.GetRecursiveChildren(user, filter); } inputItems = _libraryManager.ReplaceVideosWithPrimaryVersions(inputItems); - var results = await GetSearchHints(inputItems, query).ConfigureAwait(false); - - // Include item types - if (query.IncludeItemTypes.Length > 0) - { - results = results.Where(f => query.IncludeItemTypes.Contains(f.Item.GetType().Name, StringComparer.OrdinalIgnoreCase)); - } + var results = await GetSearchHints(inputItems, query, user).ConfigureAwait(false); var searchResultArray = results.ToArray(); results = searchResultArray; @@ -86,9 +82,10 @@ namespace MediaBrowser.Server.Implementations.Library /// /// The input items. /// The query. + /// The user. /// IEnumerable{SearchHintResult}. /// searchTerm - private Task> GetSearchHints(IEnumerable inputItems, SearchQuery query) + private Task> GetSearchHints(IEnumerable inputItems, SearchQuery query, User user) { var searchTerm = query.SearchTerm; @@ -98,7 +95,7 @@ namespace MediaBrowser.Server.Implementations.Library } searchTerm = searchTerm.RemoveDiacritics(); - + var terms = GetWords(searchTerm); var hints = new List>(); @@ -107,8 +104,25 @@ namespace MediaBrowser.Server.Implementations.Library if (query.IncludeMedia) { + var mediaItems = _libraryManager.GetItems(new InternalItemsQuery + { + NameContains = searchTerm, + ExcludeItemTypes = new[] + { + typeof (Person).Name, + typeof (Genre).Name, + typeof (MusicArtist).Name, + typeof (GameGenre).Name, + typeof (MusicGenre).Name, + typeof (Year).Name, + typeof (Studio).Name + }, + IncludeItemTypes = query.IncludeItemTypes + + }).Items; + // Add search hints based on item name - hints.AddRange(items.Where(i => !string.IsNullOrWhiteSpace(i.Name) && IncludeInSearch(i)).Select(item => + hints.AddRange(mediaItems.Where(i => (user == null || i.IsVisibleStandalone(user)) && !(i is CollectionFolder)).Select(item => { var index = GetIndex(item.Name, searchTerm, terms); diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 852fbd76c..788d12cbb 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -1,5 +1,7 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Persistence; @@ -867,7 +869,7 @@ namespace MediaBrowser.Server.Implementations.Persistence whereClauses.Add("type=@type"); cmd.Parameters.Add(cmd, "@type", DbType.String).Value = includeTypes[0]; } - if (includeTypes.Length > 1) + else if (includeTypes.Length > 1) { var inClause = string.Join(",", includeTypes.Select(i => "'" + i + "'").ToArray()); whereClauses.Add(string.Format("type in ({0})", inClause)); @@ -930,6 +932,12 @@ namespace MediaBrowser.Server.Implementations.Persistence cmd.Parameters.Add(cmd, "@PersonName", DbType.String).Value = query.Person; } + if (!string.IsNullOrWhiteSpace(query.NameContains)) + { + whereClauses.Add("Name like @NameContains"); + cmd.Parameters.Add(cmd, "@NameContains", DbType.String).Value = "%" + query.NameContains + "%"; + } + if (addPaging) { if (query.StartIndex.HasValue && query.StartIndex.Value > 0) @@ -947,16 +955,58 @@ namespace MediaBrowser.Server.Implementations.Persistence return whereClauses; } + private static readonly Type[] KnownTypes = + { + typeof(LiveTvProgram), + typeof(LiveTvChannel), + typeof(LiveTvVideoRecording), + typeof(LiveTvAudioRecording), + typeof(Series), + typeof(LiveTvAudioRecording), + typeof(LiveTvVideoRecording), + typeof(Audio), + typeof(MusicAlbum), + typeof(MusicArtist), + typeof(MusicGenre), + typeof(MusicVideo), + typeof(Movie), + typeof(BoxSet), + typeof(Episode), + typeof(Season), + typeof(Series), + typeof(Book), + typeof(CollectionFolder), + typeof(Folder), + typeof(Game), + typeof(GameGenre), + typeof(GameSystem), + typeof(Genre), + typeof(Person), + typeof(Photo), + typeof(PhotoAlbum), + typeof(Studio), + typeof(UserRootFolder), + typeof(UserView), + typeof(Video), + typeof(Year) + }; + + private static Dictionary GetTypeMapDictionary() + { + var dict = new Dictionary(); + + foreach (var t in KnownTypes) + { + dict[t.Name] = new[] { t.FullName }; + } + + dict["Recording"] = new[] { typeof(LiveTvAudioRecording).FullName, typeof(LiveTvVideoRecording).FullName }; + + return dict; + } + // Not crazy about having this all the way down here, but at least it's in one place - readonly Dictionary _types = new Dictionary(StringComparer.OrdinalIgnoreCase) - { - {typeof(LiveTvProgram).Name, new []{typeof(LiveTvProgram).FullName}}, - {typeof(LiveTvChannel).Name, new []{typeof(LiveTvChannel).FullName}}, - {typeof(LiveTvVideoRecording).Name, new []{typeof(LiveTvVideoRecording).FullName}}, - {typeof(LiveTvAudioRecording).Name, new []{typeof(LiveTvAudioRecording).FullName}}, - {typeof(Series).Name, new []{typeof(Series).FullName}}, - {"Recording", new []{typeof(LiveTvAudioRecording).FullName, typeof(LiveTvVideoRecording).FullName}} - }; + readonly Dictionary _types = GetTypeMapDictionary(); private IEnumerable MapIncludeItemTypes(string value) { @@ -1260,7 +1310,7 @@ namespace MediaBrowser.Server.Implementations.Persistence if (!string.IsNullOrWhiteSpace(query.NameContains)) { whereClauses.Add("Name like @NameContains"); - cmd.Parameters.Add(cmd, "@NameContains", DbType.String).Value = "%"+query.NameContains+"%"; + cmd.Parameters.Add(cmd, "@NameContains", DbType.String).Value = "%" + query.NameContains + "%"; } return whereClauses; -- cgit v1.2.3 From 3178896004540c4a5884b9235a67ffbe3f58af0b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 19 Jul 2015 23:43:13 -0400 Subject: update subtitle methods --- MediaBrowser.Api/Playback/BaseStreamingService.cs | 4 ++-- MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs | 4 ++-- .../MediaBrowser.MediaEncoding.csproj | 1 - MediaBrowser.MediaEncoding/Subtitles/AssParser.cs | 1 + .../Subtitles/ISubtitleParser.cs | 1 + .../Subtitles/ISubtitleWriter.cs | 1 + MediaBrowser.MediaEncoding/Subtitles/JsonWriter.cs | 3 ++- MediaBrowser.MediaEncoding/Subtitles/SrtParser.cs | 1 + MediaBrowser.MediaEncoding/Subtitles/SrtWriter.cs | 1 + MediaBrowser.MediaEncoding/Subtitles/SsaParser.cs | 1 + .../Subtitles/SubtitleTrackInfo.cs | 22 ---------------------- MediaBrowser.MediaEncoding/Subtitles/TtmlWriter.cs | 1 + MediaBrowser.MediaEncoding/Subtitles/VttWriter.cs | 1 + .../MediaBrowser.Model.Portable.csproj | 6 ++++++ .../MediaBrowser.Model.net35.csproj | 6 ++++++ MediaBrowser.Model/MediaBrowser.Model.csproj | 2 ++ MediaBrowser.Model/MediaInfo/SubtitleTrackEvent.cs | 11 +++++++++++ MediaBrowser.Model/MediaInfo/SubtitleTrackInfo.cs | 14 ++++++++++++++ .../Library/SearchEngine.cs | 2 +- .../Persistence/SqliteItemRepository.cs | 2 ++ .../MediaEncoding/Subtitles/AssParserTests.cs | 1 + .../MediaEncoding/Subtitles/SrtParserTests.cs | 1 + .../MediaEncoding/Subtitles/VttWriterTest.cs | 1 + MediaBrowser.WebDashboard/Api/PackageCreator.cs | 12 ++++++------ 24 files changed, 65 insertions(+), 35 deletions(-) delete mode 100644 MediaBrowser.MediaEncoding/Subtitles/SubtitleTrackInfo.cs create mode 100644 MediaBrowser.Model/MediaInfo/SubtitleTrackEvent.cs create mode 100644 MediaBrowser.Model/MediaInfo/SubtitleTrackInfo.cs (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index dc5858e86..e7885a3f8 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -689,7 +689,7 @@ namespace MediaBrowser.Api.Playback // TODO: Perhaps also use original_size=1920x800 ?? return string.Format("subtitles=filename='{0}'{1},setpts=PTS -{2}/TB", - subtitlePath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"), + subtitlePath.Replace('\\', '/').Replace(":/", "\\:/"), charsetParam, seconds.ToString(UsCulture)); } @@ -697,7 +697,7 @@ namespace MediaBrowser.Api.Playback var mediaPath = state.MediaPath ?? string.Empty; return string.Format("subtitles='{0}:si={1}',setpts=PTS -{2}/TB", - mediaPath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"), + mediaPath.Replace('\\', '/').Replace(":/", "\\:/"), state.InternalSubtitleStreamOffset.ToString(UsCulture), seconds.ToString(UsCulture)); } diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs index 97c5aecd0..fbfe79272 100644 --- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs @@ -902,13 +902,13 @@ namespace MediaBrowser.MediaEncoding.Encoder // TODO: Perhaps also use original_size=1920x800 ?? return string.Format("subtitles=filename='{0}'{1},setpts=PTS -{2}/TB", - subtitlePath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"), + subtitlePath.Replace('\\', '/').Replace(":/", "\\:/"), charsetParam, seconds.ToString(UsCulture)); } return string.Format("subtitles='{0}:si={1}',setpts=PTS -{2}/TB", - state.MediaPath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"), + state.MediaPath.Replace('\\', '/').Replace(":/", "\\:/"), state.InternalSubtitleStreamOffset.ToString(UsCulture), seconds.ToString(UsCulture)); } diff --git a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj index ad561c484..de05d9ffd 100644 --- a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj +++ b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj @@ -81,7 +81,6 @@ - diff --git a/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs b/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs index e711c02b6..6d723a087 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs @@ -6,6 +6,7 @@ using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Threading; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.MediaEncoding.Subtitles { diff --git a/MediaBrowser.MediaEncoding/Subtitles/ISubtitleParser.cs b/MediaBrowser.MediaEncoding/Subtitles/ISubtitleParser.cs index 5b072a450..75de81f46 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/ISubtitleParser.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/ISubtitleParser.cs @@ -1,5 +1,6 @@ using System.IO; using System.Threading; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.MediaEncoding.Subtitles { diff --git a/MediaBrowser.MediaEncoding/Subtitles/ISubtitleWriter.cs b/MediaBrowser.MediaEncoding/Subtitles/ISubtitleWriter.cs index eb29e6c17..e28da9185 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/ISubtitleWriter.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/ISubtitleWriter.cs @@ -1,5 +1,6 @@ using System.IO; using System.Threading; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.MediaEncoding.Subtitles { diff --git a/MediaBrowser.MediaEncoding/Subtitles/JsonWriter.cs b/MediaBrowser.MediaEncoding/Subtitles/JsonWriter.cs index a4fc5d795..474f712f9 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/JsonWriter.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/JsonWriter.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Serialization; +using MediaBrowser.Model.MediaInfo; +using MediaBrowser.Model.Serialization; using System.IO; using System.Text; using System.Threading; diff --git a/MediaBrowser.MediaEncoding/Subtitles/SrtParser.cs b/MediaBrowser.MediaEncoding/Subtitles/SrtParser.cs index 9751176cb..d40d4afa7 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SrtParser.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SrtParser.cs @@ -6,6 +6,7 @@ using System.Globalization; using System.IO; using System.Text.RegularExpressions; using System.Threading; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.MediaEncoding.Subtitles { diff --git a/MediaBrowser.MediaEncoding/Subtitles/SrtWriter.cs b/MediaBrowser.MediaEncoding/Subtitles/SrtWriter.cs index 3e574f931..c05929fde 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SrtWriter.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SrtWriter.cs @@ -4,6 +4,7 @@ using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Threading; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.MediaEncoding.Subtitles { diff --git a/MediaBrowser.MediaEncoding/Subtitles/SsaParser.cs b/MediaBrowser.MediaEncoding/Subtitles/SsaParser.cs index bfc6c60fc..6c760658d 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SsaParser.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SsaParser.cs @@ -3,6 +3,7 @@ using System; using System.IO; using System.Text; using System.Threading; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.MediaEncoding.Subtitles { diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleTrackInfo.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleTrackInfo.cs deleted file mode 100644 index 67d70ed6e..000000000 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleTrackInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections.Generic; - -namespace MediaBrowser.MediaEncoding.Subtitles -{ - public class SubtitleTrackInfo - { - public List TrackEvents { get; set; } - - public SubtitleTrackInfo() - { - TrackEvents = new List(); - } - } - - public class SubtitleTrackEvent - { - public string Id { get; set; } - public string Text { get; set; } - public long StartPositionTicks { get; set; } - public long EndPositionTicks { get; set; } - } -} diff --git a/MediaBrowser.MediaEncoding/Subtitles/TtmlWriter.cs b/MediaBrowser.MediaEncoding/Subtitles/TtmlWriter.cs index 955b36ecd..c32005f89 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/TtmlWriter.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/TtmlWriter.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Threading; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.MediaEncoding.Subtitles { diff --git a/MediaBrowser.MediaEncoding/Subtitles/VttWriter.cs b/MediaBrowser.MediaEncoding/Subtitles/VttWriter.cs index fa53e4d13..092add992 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/VttWriter.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/VttWriter.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Threading; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.MediaEncoding.Subtitles { diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index a1b7ce396..90a185a97 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -821,6 +821,12 @@ MediaInfo\SubtitleFormat.cs + + MediaInfo\SubtitleTrackEvent.cs + + + MediaInfo\SubtitleTrackInfo.cs + MediaInfo\TransportStreamTimestamp.cs diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index d4a373733..e7878fb1b 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -777,6 +777,12 @@ MediaInfo\SubtitleFormat.cs + + MediaInfo\SubtitleTrackEvent.cs + + + MediaInfo\SubtitleTrackInfo.cs + MediaInfo\TransportStreamTimestamp.cs diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index b36fa2362..5c7caf407 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -169,6 +169,8 @@ + + diff --git a/MediaBrowser.Model/MediaInfo/SubtitleTrackEvent.cs b/MediaBrowser.Model/MediaInfo/SubtitleTrackEvent.cs new file mode 100644 index 000000000..b4ab6ed97 --- /dev/null +++ b/MediaBrowser.Model/MediaInfo/SubtitleTrackEvent.cs @@ -0,0 +1,11 @@ + +namespace MediaBrowser.Model.MediaInfo +{ + public class SubtitleTrackEvent + { + public string Id { get; set; } + public string Text { get; set; } + public long StartPositionTicks { get; set; } + public long EndPositionTicks { get; set; } + } +} diff --git a/MediaBrowser.Model/MediaInfo/SubtitleTrackInfo.cs b/MediaBrowser.Model/MediaInfo/SubtitleTrackInfo.cs new file mode 100644 index 000000000..765cfe32f --- /dev/null +++ b/MediaBrowser.Model/MediaInfo/SubtitleTrackInfo.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace MediaBrowser.Model.MediaInfo +{ + public class SubtitleTrackInfo + { + public List TrackEvents { get; set; } + + public SubtitleTrackInfo() + { + TrackEvents = new List(); + } + } +} diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index db8a2d4fd..abebd26cc 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -122,7 +122,7 @@ namespace MediaBrowser.Server.Implementations.Library }).Items; // Add search hints based on item name - hints.AddRange(mediaItems.Where(i => (user == null || i.IsVisibleStandalone(user)) && !(i is CollectionFolder)).Select(item => + hints.AddRange(mediaItems.Where(i => IncludeInSearch(i) && (user == null || i.IsVisibleStandalone(user)) && !(i is CollectionFolder)).Select(item => { var index = GetIndex(item.Name, searchTerm, terms); diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 788d12cbb..9ce239eb9 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -1001,6 +1001,8 @@ namespace MediaBrowser.Server.Implementations.Persistence } dict["Recording"] = new[] { typeof(LiveTvAudioRecording).FullName, typeof(LiveTvVideoRecording).FullName }; + dict["Program"] = new[] { typeof(LiveTvProgram).FullName }; + dict["TvChannel"] = new[] { typeof(LiveTvChannel).FullName }; return dict; } diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/AssParserTests.cs b/MediaBrowser.Tests/MediaEncoding/Subtitles/AssParserTests.cs index 02fd66b20..d5a62802d 100644 --- a/MediaBrowser.Tests/MediaEncoding/Subtitles/AssParserTests.cs +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/AssParserTests.cs @@ -1,5 +1,6 @@ using System.Text; using MediaBrowser.MediaEncoding.Subtitles; +using MediaBrowser.Model.MediaInfo; using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Collections.Generic; using System.IO; diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs b/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs index 8ea4398e9..07717a328 100644 --- a/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs @@ -4,6 +4,7 @@ using System.IO; using System.Threading; using MediaBrowser.MediaEncoding.Subtitles; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.MediaInfo; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace MediaBrowser.Tests.MediaEncoding.Subtitles diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/VttWriterTest.cs b/MediaBrowser.Tests/MediaEncoding/Subtitles/VttWriterTest.cs index 7a4823ecf..924a1736f 100644 --- a/MediaBrowser.Tests/MediaEncoding/Subtitles/VttWriterTest.cs +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/VttWriterTest.cs @@ -2,6 +2,7 @@ using System.IO; using System.Threading; using MediaBrowser.MediaEncoding.Subtitles; +using MediaBrowser.Model.MediaInfo; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace MediaBrowser.Tests.MediaEncoding.Subtitles { diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index 7f7aa4a2d..3be24ddf1 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -304,11 +304,11 @@ namespace MediaBrowser.WebDashboard.Api } } - var version = GetType().Assembly.GetName().Version; + var versionString = !string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase) ? "?v=" + appVersion : string.Empty; var imports = new[] { - "vulcanize-out.html?v=" + appVersion + "vulcanize-out.html" + versionString }; var importsHtml = string.Join("", imports.Select(i => "").ToArray()); @@ -316,7 +316,7 @@ namespace MediaBrowser.WebDashboard.Api // In chrome it is causing the body to be hidden while loading, which leads to width-check methods to return 0 for everything //imports = ""; - html = html.Replace("", "" + GetMetaTags(mode) + GetCommonCss(mode, version) + GetInitialJavascript(mode, version) + importsHtml + GetCommonJavascript(mode, version)); + html = html.Replace("", "" + GetMetaTags(mode) + GetCommonCss(mode, appVersion) + GetInitialJavascript(mode, appVersion) + importsHtml + GetCommonJavascript(mode, appVersion)); var bytes = Encoding.UTF8.GetBytes(html); @@ -412,7 +412,7 @@ namespace MediaBrowser.WebDashboard.Api /// The mode. /// The version. /// System.String. - private string GetCommonCss(string mode, Version version) + private string GetCommonCss(string mode, string version) { var versionString = !string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase) ? "?v=" + version : string.Empty; @@ -433,7 +433,7 @@ namespace MediaBrowser.WebDashboard.Api /// The mode. /// The version. /// System.String. - private string GetInitialJavascript(string mode, Version version) + private string GetInitialJavascript(string mode, string version) { var builder = new StringBuilder(); @@ -457,7 +457,7 @@ namespace MediaBrowser.WebDashboard.Api /// The mode. /// The version. /// System.String. - private string GetCommonJavascript(string mode, Version version) + private string GetCommonJavascript(string mode, string version) { var builder = new StringBuilder(); -- cgit v1.2.3 From cf27ac47a8366ea1710908c4aa1093a6a85d7139 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 22 Jul 2015 11:52:13 -0400 Subject: fix unveil when tabbing away and back --- MediaBrowser.Server.Implementations/Library/SearchEngine.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index abebd26cc..21e92786d 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -130,7 +130,7 @@ namespace MediaBrowser.Server.Implementations.Library })); } - if (query.IncludeArtists) + if (query.IncludeArtists && (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains("MusicArtist", StringComparer.OrdinalIgnoreCase))) { // Find artists var artists = items.OfType