Bläddra i källkod

Merge pull request #1812 from MediaBrowser/dev

Dev
Luke 9 år sedan
förälder
incheckning
ef0c89d43b

+ 19 - 7
MediaBrowser.Api/Subtitles/SubtitleService.cs

@@ -101,6 +101,7 @@ namespace MediaBrowser.Api.Subtitles
 
         [ApiMember(Name = "CopyTimestamps", Description = "CopyTimestamps", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
         public bool CopyTimestamps { get; set; }
+        public bool AddVttTimeMap { get; set; }
     }
 
     [Route("/Videos/{Id}/{MediaSourceId}/Subtitles/{Index}/subtitles.m3u8", "GET", Summary = "Gets an HLS subtitle playlist.")]
@@ -178,7 +179,7 @@ namespace MediaBrowser.Api.Subtitles
 
                 var endPositionTicks = Math.Min(runtime, positionTicks + segmentLengthTicks);
 
-                var url = string.Format("stream.vtt?CopyTimestamps=true,StartPositionTicks={0}&EndPositionTicks={1}&api_key={2}",
+                var url = string.Format("stream.vtt?CopyTimestamps=true&AddVttTimeMap=true&StartPositionTicks={0}&EndPositionTicks={1}&api_key={2}",
                     positionTicks.ToString(CultureInfo.InvariantCulture),
                     endPositionTicks.ToString(CultureInfo.InvariantCulture),
                     accessToken);
@@ -193,7 +194,7 @@ namespace MediaBrowser.Api.Subtitles
             return ResultFactory.GetResult(builder.ToString(), MimeTypes.GetMimeType("playlist.m3u8"), new Dictionary<string, string>());
         }
 
-        public object Get(GetSubtitle request)
+        public async Task<object> Get(GetSubtitle request)
         {
             if (string.Equals(request.Format, "js", StringComparison.OrdinalIgnoreCase))
             {
@@ -212,21 +213,32 @@ namespace MediaBrowser.Api.Subtitles
                 return ToStaticFileResult(subtitleStream.Path);
             }
 
-            var stream = GetSubtitles(request).Result;
+            using (var stream = await GetSubtitles(request).ConfigureAwait(false))
+            {
+                using (var reader = new StreamReader(stream))
+                {
+                    var text = reader.ReadToEnd();
+
+                    if (string.Equals(request.Format, "vtt", StringComparison.OrdinalIgnoreCase) && request.AddVttTimeMap)
+                    {
+                        text = text.Replace("WEBVTT", "WEBVTT\nX-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000");
+                    }
 
-            return ResultFactory.GetResult(stream, MimeTypes.GetMimeType("file." + request.Format));
+                    return ResultFactory.GetResult(text, MimeTypes.GetMimeType("file." + request.Format));
+                }
+            }
         }
 
-        private async Task<Stream> GetSubtitles(GetSubtitle request)
+        private  Task<Stream> GetSubtitles(GetSubtitle request)
         {
-            return await _subtitleEncoder.GetSubtitles(request.Id,
+            return  _subtitleEncoder.GetSubtitles(request.Id,
                 request.MediaSourceId,
                 request.Index,
                 request.Format,
                 request.StartPositionTicks,
                 request.EndPositionTicks,
                 request.CopyTimestamps,
-                CancellationToken.None).ConfigureAwait(false);
+                CancellationToken.None);
         }
 
         public object Get(SearchRemoteSubtitles request)

+ 1 - 1
MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs

@@ -25,7 +25,7 @@ namespace MediaBrowser.Providers.Music
         private readonly IApplicationHost _appHost;
         private readonly ILogger _logger;
 
-        public static string MusicBrainzBaseUrl = "http://musicbrainz.fercasas.com:5000";
+        public static string MusicBrainzBaseUrl = "https://www.musicbrainz.org";
 
         public MusicBrainzAlbumProvider(IHttpClient httpClient, IApplicationHost appHost, ILogger logger)
         {

+ 1 - 1
MediaBrowser.Providers/TV/TvExternalIds.cs

@@ -88,7 +88,7 @@ namespace MediaBrowser.Providers.TV
 
         public string UrlFormatString
         {
-            get { return null; }
+            get { return "https://thetvdb.com/index.php?tab=episode&id={0}"; }
         }
 
         public bool Supports(IHasProviderIds item)

+ 0 - 1
MediaBrowser.Server.Implementations/Persistence/IDbConnector.cs

@@ -6,6 +6,5 @@ namespace MediaBrowser.Server.Implementations.Persistence
     public interface IDbConnector
     {
         Task<IDbConnection> Connect(string dbPath);
-        void BindSimilarityScoreFunction(IDbConnection connection);
     }
 }

+ 0 - 102
MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs

@@ -48,13 +48,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
             return connection;
         }
 
-        public static void BindGetSimilarityScore(IDbConnection connection, ILogger logger)
-        {
-            var sqlConnection = (SQLiteConnection)connection;
-            SimiliarToFunction.Logger = logger;
-            sqlConnection.BindFunction(new SimiliarToFunction());
-        }
-
         public static void BindFunction(this SQLiteConnection connection, SQLiteFunction function)
         {
             var attributes = function.GetType().GetCustomAttributes(typeof(SQLiteFunctionAttribute), true).Cast<SQLiteFunctionAttribute>().ToArray();
@@ -65,99 +58,4 @@ namespace MediaBrowser.Server.Implementations.Persistence
             connection.BindFunction(attributes[0], function);
         }
     }
-
-    [SQLiteFunction(Name = "GetSimilarityScore", Arguments = 6, FuncType = FunctionType.Scalar)]
-    public class SimiliarToFunction : SQLiteFunction
-    {
-        internal static ILogger Logger;
-
-        private readonly Dictionary<string, int> _personTypeScores = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase)
-        {
-            { PersonType.Actor, 3},
-            { PersonType.Director, 5},
-            { PersonType.Composer, 2},
-            { PersonType.GuestStar, 3},
-            { PersonType.Writer, 2},
-            { PersonType.Conductor, 2},
-            { PersonType.Producer, 2},
-            { PersonType.Lyricist, 2}
-        };
-
-        public override object Invoke(object[] args)
-        {
-            var score = 0;
-
-            // Official rating equals
-            if ((long)args[0] == 1)
-            {
-                score += 10;
-            }
-
-            // Year difference
-            long? yearDifference = args[1] == null ? (long?)null : (long)args[1];
-            if (yearDifference.HasValue)
-            {
-                var diff = Math.Abs(yearDifference.Value);
-
-                // Add if they came out within the same decade
-                if (diff < 10)
-                {
-                    score += 2;
-                }
-
-                // And more if within five years
-                if (diff < 5)
-                {
-                    score += 2;
-                }
-            }
-
-            // genres
-            score += Convert.ToInt32((long)args[2]) * 10;
-
-            // tags
-            score += Convert.ToInt32((long)args[3]) * 10;
-
-            // # of common keywords
-            score += Convert.ToInt32((long)args[4]) *10;
-
-            // # of common studios
-            score += Convert.ToInt32((long)args[5]) * 3;
-
-            // studios
-            //score += GetListScore(args, 7, 8, 3);
-
-            //var rowPeopleNamesText = (args[12] as string) ?? string.Empty;
-            //var rowPeopleNames = rowPeopleNamesText.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
-
-            //foreach (var name in rowPeopleNames)
-            //{
-            //    // TODO: Send along person types
-            //    score += 3;
-            //}
-
-            //Logger.Debug("Returning score {0}", score);
-            return score;
-        }
-
-        private int GetListScore(object[] args, int index1, int index2, int value = 10)
-        {
-            var score = 0;
-
-            var inputGenres = args[index1] as string;
-            var rowGenres = args[index2] as string;
-            var inputGenreList = string.IsNullOrWhiteSpace(inputGenres) ? new string[] { } : inputGenres.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
-            var rowGenresList = string.IsNullOrWhiteSpace(rowGenres) ? new string[] { } : rowGenres.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
-
-            foreach (var genre in inputGenreList)
-            {
-                if (rowGenresList.Contains(genre, StringComparer.OrdinalIgnoreCase))
-                {
-                    score += value;
-                }
-            }
-
-            return score;
-        }
-    }
 }

+ 1 - 3
MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs

@@ -272,8 +272,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
             new MediaStreamColumns(_connection, Logger).AddColumns();
 
             DataExtensions.Attach(_connection, Path.Combine(_config.ApplicationPaths.DataPath, "userdata_v2.db"), "UserDataDb");
-
-            dbConnector.BindSimilarityScoreFunction(_connection);
         }
 
         private readonly string[] _retriveItemColumns =
@@ -977,7 +975,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
 
             if (type == null)
             {
-                Logger.Debug("Unknown type {0}", typeString);
+                //Logger.Debug("Unknown type {0}", typeString);
 
                 return null;
             }

+ 0 - 5
MediaBrowser.Server.Mono/Native/DbConnector.cs

@@ -16,11 +16,6 @@ namespace MediaBrowser.Server.Mono.Native
             _logger = logger;
         }
 
-        public void BindSimilarityScoreFunction(IDbConnection connection)
-        {
-            SqliteExtensions.BindGetSimilarityScore(connection, _logger);
-        }
-
         public Task<IDbConnection> Connect(string dbPath)
         {
             return SqliteExtensions.ConnectToDb(dbPath, _logger);

+ 4 - 1
MediaBrowser.Server.Startup.Common/Migrations/FolderViewSettingMigration.cs

@@ -24,7 +24,10 @@ namespace MediaBrowser.Server.Startup.Common.Migrations
             {
                 if (_config.Configuration.IsStartupWizardCompleted)
                 {
-                    _config.Configuration.EnableFolderView = _userManager.Users.Any(i => i.Configuration.DisplayFoldersView);
+                    if (_userManager.Users.Any(i => i.Configuration.DisplayFoldersView))
+                    {
+                        _config.Configuration.EnableFolderView = true;
+                    }
                 }
 
                 migrationKeyList.Add(migrationKey);

+ 0 - 5
MediaBrowser.ServerApplication/Native/DbConnector.cs

@@ -16,11 +16,6 @@ namespace MediaBrowser.ServerApplication.Native
             _logger = logger;
         }
 
-        public void BindSimilarityScoreFunction(IDbConnection connection)
-        {
-            SqliteExtensions.BindGetSimilarityScore(connection, _logger);
-        }
-
         public async Task<IDbConnection> Connect(string dbPath)
         {
             try