aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Subtitles/SubtitleService.cs26
-rw-r--r--MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/TvExternalIds.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/IDbConnector.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs102
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs4
-rw-r--r--MediaBrowser.Server.Mono/Native/DbConnector.cs5
-rw-r--r--MediaBrowser.Server.Startup.Common/Migrations/FolderViewSettingMigration.cs5
-rw-r--r--MediaBrowser.ServerApplication/Native/DbConnector.cs5
9 files changed, 26 insertions, 126 deletions
diff --git a/MediaBrowser.Api/Subtitles/SubtitleService.cs b/MediaBrowser.Api/Subtitles/SubtitleService.cs
index 1382527e2..160fda065 100644
--- a/MediaBrowser.Api/Subtitles/SubtitleService.cs
+++ b/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)
diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
index d76c89dfb..6e57b4022 100644
--- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs
+++ b/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)
{
diff --git a/MediaBrowser.Providers/TV/TvExternalIds.cs b/MediaBrowser.Providers/TV/TvExternalIds.cs
index f5a26ba0a..2ba3b6ff6 100644
--- a/MediaBrowser.Providers/TV/TvExternalIds.cs
+++ b/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)
diff --git a/MediaBrowser.Server.Implementations/Persistence/IDbConnector.cs b/MediaBrowser.Server.Implementations/Persistence/IDbConnector.cs
index 985d79a0a..cac9fe983 100644
--- a/MediaBrowser.Server.Implementations/Persistence/IDbConnector.cs
+++ b/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);
}
}
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs
index 519731a5c..dd2f15cfd 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs
+++ b/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;
- }
- }
}
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index c790e829a..460a67ca7 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/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;
}
diff --git a/MediaBrowser.Server.Mono/Native/DbConnector.cs b/MediaBrowser.Server.Mono/Native/DbConnector.cs
index 536cd7322..3230f92f9 100644
--- a/MediaBrowser.Server.Mono/Native/DbConnector.cs
+++ b/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);
diff --git a/MediaBrowser.Server.Startup.Common/Migrations/FolderViewSettingMigration.cs b/MediaBrowser.Server.Startup.Common/Migrations/FolderViewSettingMigration.cs
index 4049d1754..12054864b 100644
--- a/MediaBrowser.Server.Startup.Common/Migrations/FolderViewSettingMigration.cs
+++ b/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);
diff --git a/MediaBrowser.ServerApplication/Native/DbConnector.cs b/MediaBrowser.ServerApplication/Native/DbConnector.cs
index f93cad62c..48ba7d0e7 100644
--- a/MediaBrowser.ServerApplication/Native/DbConnector.cs
+++ b/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