aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/PackageReviewService.cs11
-rw-r--r--MediaBrowser.Common.Implementations/BaseApplicationHost.cs4
-rw-r--r--MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs7
-rw-r--r--MediaBrowser.Common.Implementations/Updates/InstallationManager.cs6
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs2
-rw-r--r--MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj3
-rw-r--r--MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs43
-rw-r--r--MediaBrowser.Model/Configuration/ServerConfiguration.cs7
-rw-r--r--MediaBrowser.Server.Implementations/EntryPoints/UsageEntryPoint.cs8
-rw-r--r--MediaBrowser.Server.Implementations/EntryPoints/UsageReporter.cs8
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs9
-rw-r--r--MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs3
-rw-r--r--SharedVersion.cs4
14 files changed, 82 insertions, 35 deletions
diff --git a/MediaBrowser.Api/PackageReviewService.cs b/MediaBrowser.Api/PackageReviewService.cs
index c4cf1eac3..b4656b83e 100644
--- a/MediaBrowser.Api/PackageReviewService.cs
+++ b/MediaBrowser.Api/PackageReviewService.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.Net;
+using MediaBrowser.Controller;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Serialization;
@@ -100,15 +101,15 @@ namespace MediaBrowser.Api
public class PackageReviewService : BaseApiService
{
private readonly IHttpClient _httpClient;
- private readonly INetworkManager _netManager;
private readonly IJsonSerializer _serializer;
private const string MbAdminUrl = "http://www.mb3admin.com/admin/";
+ private readonly IServerApplicationHost _appHost;
- public PackageReviewService(IHttpClient client, INetworkManager net, IJsonSerializer serializer)
+ public PackageReviewService(IHttpClient httpClient, IJsonSerializer serializer, IServerApplicationHost appHost)
{
- _httpClient = client;
- _netManager = net;
+ _httpClient = httpClient;
_serializer = serializer;
+ _appHost = appHost;
}
public object Get(ReviewRequest request)
@@ -146,7 +147,7 @@ namespace MediaBrowser.Api
var review = new Dictionary<string, string>
{ { "id", request.Id.ToString(CultureInfo.InvariantCulture) },
- { "mac", _netManager.GetMacAddress() },
+ { "mac", _appHost.SystemId },
{ "rating", request.Rating.ToString(CultureInfo.InvariantCulture) },
{ "recommend", request.Recommend.ToString() },
{ "title", title },
diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
index 3e25bb626..c98a6bd6c 100644
--- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
+++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs
@@ -472,10 +472,10 @@ namespace MediaBrowser.Common.Implementations
NetworkManager = CreateNetworkManager(LogManager.GetLogger("NetworkManager"));
RegisterSingleInstance(NetworkManager);
- SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths, NetworkManager, LogManager);
+ SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths, LogManager);
RegisterSingleInstance(SecurityManager);
- InstallationManager = new InstallationManager(Logger, this, ApplicationPaths, HttpClient, JsonSerializer, SecurityManager, NetworkManager, ConfigurationManager);
+ InstallationManager = new InstallationManager(Logger, this, ApplicationPaths, HttpClient, JsonSerializer, SecurityManager, ConfigurationManager);
RegisterSingleInstance(InstallationManager);
ZipClient = new ZipClient();
diff --git a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
index 3e81e839f..39dd41356 100644
--- a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
+++ b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
@@ -55,7 +55,6 @@ namespace MediaBrowser.Common.Implementations.Security
private readonly IJsonSerializer _jsonSerializer;
private readonly IApplicationHost _appHost;
private readonly ILogger _logger;
- private readonly INetworkManager _networkManager;
private readonly IApplicationPaths _appPaths;
private IEnumerable<IRequiresRegistration> _registeredEntities;
@@ -71,7 +70,7 @@ namespace MediaBrowser.Common.Implementations.Security
/// Initializes a new instance of the <see cref="PluginSecurityManager" /> class.
/// </summary>
public PluginSecurityManager(IApplicationHost appHost, IHttpClient httpClient, IJsonSerializer jsonSerializer,
- IApplicationPaths appPaths, INetworkManager networkManager, ILogManager logManager)
+ IApplicationPaths appPaths, ILogManager logManager)
{
if (httpClient == null)
{
@@ -81,7 +80,6 @@ namespace MediaBrowser.Common.Implementations.Security
_appHost = appHost;
_httpClient = httpClient;
_jsonSerializer = jsonSerializer;
- _networkManager = networkManager;
_appPaths = appPaths;
_logger = logManager.GetLogger("SecurityManager");
}
@@ -199,12 +197,11 @@ namespace MediaBrowser.Common.Implementations.Security
if (!(lastChecked > DateTime.UtcNow.AddDays(-1)))
{
- var mac = _networkManager.GetMacAddress();
var data = new Dictionary<string, string>
{
{ "feature", feature },
{ "key", SupporterKey },
- { "mac", mac },
+ { "mac", _appHost.SystemId },
{ "systemid", _appHost.SystemId },
{ "mb2equiv", mb2Equivalent },
{ "ver", version },
diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
index f3a985968..47215aacf 100644
--- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
+++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
@@ -105,7 +105,6 @@ namespace MediaBrowser.Common.Implementations.Updates
private readonly IHttpClient _httpClient;
private readonly IJsonSerializer _jsonSerializer;
private readonly ISecurityManager _securityManager;
- private readonly INetworkManager _networkManager;
private readonly IConfigurationManager _config;
/// <summary>
@@ -114,7 +113,7 @@ namespace MediaBrowser.Common.Implementations.Updates
/// <value>The application host.</value>
private readonly IApplicationHost _applicationHost;
- public InstallationManager(ILogger logger, IApplicationHost appHost, IApplicationPaths appPaths, IHttpClient httpClient, IJsonSerializer jsonSerializer, ISecurityManager securityManager, INetworkManager networkManager, IConfigurationManager config)
+ public InstallationManager(ILogger logger, IApplicationHost appHost, IApplicationPaths appPaths, IHttpClient httpClient, IJsonSerializer jsonSerializer, ISecurityManager securityManager, IConfigurationManager config)
{
if (logger == null)
{
@@ -129,7 +128,6 @@ namespace MediaBrowser.Common.Implementations.Updates
_httpClient = httpClient;
_jsonSerializer = jsonSerializer;
_securityManager = securityManager;
- _networkManager = networkManager;
_config = config;
_logger = logger;
}
@@ -158,7 +156,7 @@ namespace MediaBrowser.Common.Implementations.Updates
var data = new Dictionary<string, string>
{
{ "key", _securityManager.SupporterKey },
- { "mac", _networkManager.GetMacAddress() },
+ { "mac", _applicationHost.SystemId },
{ "systemid", _applicationHost.SystemId }
};
diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
index 3c30d7cd8..efe2a89e3 100644
--- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
@@ -467,7 +467,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
{
if (job.SubtitleStream.IsExternal && !job.SubtitleStream.IsTextSubtitleStream)
{
- arg += " -i " + job.SubtitleStream.Path;
+ arg += " -i \"" + job.SubtitleStream.Path + "\"";
}
}
diff --git a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
index 38d8fa138..72dc0feac 100644
--- a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
+++ b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
@@ -50,6 +50,9 @@
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
+ <Reference Include="UniversalDetector">
+ <HintPath>..\ThirdParty\UniversalDetector\UniversalDetector.dll</HintPath>
+ </Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\SharedVersion.cs">
diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
index 67c9123f5..3b8663b61 100644
--- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
@@ -17,6 +17,7 @@ using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using UniversalDetector;
namespace MediaBrowser.MediaEncoding.Subtitles
{
@@ -611,7 +612,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
}
catch (FileNotFoundException)
{
-
+
}
catch (DirectoryNotFoundException)
{
@@ -699,6 +700,18 @@ namespace MediaBrowser.MediaEncoding.Subtitles
/// <returns>System.String.</returns>
public string GetSubtitleFileCharacterSet(string path, string language)
{
+ var charset = DetectCharset(path);
+
+ if (!string.IsNullOrWhiteSpace(charset))
+ {
+ if (string.Equals(charset, "utf-8", StringComparison.OrdinalIgnoreCase))
+ {
+ //return null;
+ }
+
+ //return charset;
+ }
+
if (GetFileEncoding(path).Equals(Encoding.UTF8))
{
return string.Empty;
@@ -743,6 +756,34 @@ namespace MediaBrowser.MediaEncoding.Subtitles
}
}
+ private string DetectCharset(string path)
+ {
+ try
+ {
+ using (var file = new FileStream(path, FileMode.Open))
+ {
+ var detector = new CharsetDetector();
+ detector.Feed(file);
+ detector.DataEnd();
+
+ var charset = detector.Charset;
+
+ if (!string.IsNullOrWhiteSpace(charset))
+ {
+ _logger.Info("UniversalDetector detected charset {0} for {1}", charset, path);
+ }
+
+ return charset;
+ }
+ }
+ catch (IOException ex)
+ {
+ _logger.ErrorException("Error attempting to determine subtitle charset from {0}", ex, path);
+ }
+
+ return null;
+ }
+
private static Encoding GetFileEncoding(string srcFile)
{
// *** Detect byte order mark if any - otherwise assume default
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index 241ff6195..681442ff5 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -168,7 +168,7 @@ namespace MediaBrowser.Model.Configuration
public PeopleMetadataOptions PeopleMetadataOptions { get; set; }
public bool FindInternetTrailers { get; set; }
- public string[] InsecureApps7 { get; set; }
+ public string[] InsecureApps8 { get; set; }
public bool SaveMetadataHidden { get; set; }
public bool EnableWin8HttpListener { get; set; }
@@ -223,7 +223,7 @@ namespace MediaBrowser.Model.Configuration
PeopleMetadataOptions = new PeopleMetadataOptions();
- InsecureApps7 = new[]
+ InsecureApps8 = new[]
{
"Chromecast",
"iOS",
@@ -232,7 +232,8 @@ namespace MediaBrowser.Model.Configuration
"Media Portal",
"iPad",
"iPhone",
- "Roku"
+ "Roku",
+ "Windows Phone"
};
MetadataOptions = new[]
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/UsageEntryPoint.cs b/MediaBrowser.Server.Implementations/EntryPoints/UsageEntryPoint.cs
index dac0b0d15..f9a141da3 100644
--- a/MediaBrowser.Server.Implementations/EntryPoints/UsageEntryPoint.cs
+++ b/MediaBrowser.Server.Implementations/EntryPoints/UsageEntryPoint.cs
@@ -18,7 +18,6 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
public class UsageEntryPoint : IServerEntryPoint
{
private readonly IApplicationHost _applicationHost;
- private readonly INetworkManager _networkManager;
private readonly IHttpClient _httpClient;
private readonly ILogger _logger;
private readonly ISessionManager _sessionManager;
@@ -29,11 +28,10 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
private readonly ConcurrentDictionary<Guid, ClientInfo> _apps = new ConcurrentDictionary<Guid, ClientInfo>();
- public UsageEntryPoint(ILogger logger, IApplicationHost applicationHost, INetworkManager networkManager, IHttpClient httpClient, ISessionManager sessionManager, IUserManager userManager)
+ public UsageEntryPoint(ILogger logger, IApplicationHost applicationHost, IHttpClient httpClient, ISessionManager sessionManager, IUserManager userManager)
{
_logger = logger;
_applicationHost = applicationHost;
- _networkManager = networkManager;
_httpClient = httpClient;
_sessionManager = sessionManager;
_userManager = userManager;
@@ -68,7 +66,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
{
try
{
- await new UsageReporter(_applicationHost, _networkManager, _httpClient, _userManager)
+ await new UsageReporter(_applicationHost, _httpClient, _userManager)
.ReportAppUsage(client, CancellationToken.None)
.ConfigureAwait(false);
}
@@ -110,7 +108,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
{
try
{
- await new UsageReporter(_applicationHost, _networkManager, _httpClient, _userManager)
+ await new UsageReporter(_applicationHost, _httpClient, _userManager)
.ReportServerUsage(CancellationToken.None)
.ConfigureAwait(false);
}
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/UsageReporter.cs b/MediaBrowser.Server.Implementations/EntryPoints/UsageReporter.cs
index 5be267313..315493e0d 100644
--- a/MediaBrowser.Server.Implementations/EntryPoints/UsageReporter.cs
+++ b/MediaBrowser.Server.Implementations/EntryPoints/UsageReporter.cs
@@ -14,15 +14,13 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
public class UsageReporter
{
private readonly IApplicationHost _applicationHost;
- private readonly INetworkManager _networkManager;
private readonly IHttpClient _httpClient;
private readonly IUserManager _userManager;
private const string MbAdminUrl = "http://www.mb3admin.com/admin/";
- public UsageReporter(IApplicationHost applicationHost, INetworkManager networkManager, IHttpClient httpClient, IUserManager userManager)
+ public UsageReporter(IApplicationHost applicationHost, IHttpClient httpClient, IUserManager userManager)
{
_applicationHost = applicationHost;
- _networkManager = networkManager;
_httpClient = httpClient;
_userManager = userManager;
}
@@ -31,12 +29,10 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
{
cancellationToken.ThrowIfCancellationRequested();
- var mac = _networkManager.GetMacAddress();
-
var data = new Dictionary<string, string>
{
{ "feature", _applicationHost.Name },
- { "mac", mac },
+ { "mac", _applicationHost.SystemId },
{ "serverid", _applicationHost.SystemId },
{ "deviceid", _applicationHost.SystemId },
{ "ver", _applicationHost.ApplicationVersion.ToString() },
diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs
index 1d17c641d..c374a31b3 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs
@@ -138,7 +138,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security
return true;
}
- return _config.Configuration.InsecureApps7.Contains(auth.Client ?? string.Empty,
+ return _config.Configuration.InsecureApps8.Contains(auth.Client ?? string.Empty,
StringComparer.OrdinalIgnoreCase);
}
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
index e68f005be..d538c1dc0 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Linq;
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
@@ -143,6 +144,14 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
var namingOptions = ((LibraryManager)libraryManager).GetNamingOptions();
+ // In mixed folders we need to be conservative and avoid expressions that may result in false positives (e.g. movies with numbers in the title)
+ if (!isTvContentType)
+ {
+ namingOptions.EpisodeExpressions = namingOptions.EpisodeExpressions
+ .Where(i => i.IsNamed)
+ .ToList();
+ }
+
var episodeResolver = new Naming.TV.EpisodeResolver(namingOptions, new Naming.Logging.NullLogger());
var episodeInfo = episodeResolver.Resolve(fullName, FileInfoType.File, false);
if (episodeInfo != null && episodeInfo.EpisodeNumber.HasValue)
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
index e81784840..7b2dbdeb4 100644
--- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
+++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
@@ -576,6 +577,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers
{
if (!string.IsNullOrWhiteSpace(val))
{
+ val = val.Replace("plugin://plugin.video.youtube/?action=play_video&videoid=", "http://www.youtube.com/watch?v=", StringComparison.OrdinalIgnoreCase);
+
hasTrailer.AddTrailerUrl(val, false);
}
}
diff --git a/SharedVersion.cs b/SharedVersion.cs
index d681f2ca9..9d645aa02 100644
--- a/SharedVersion.cs
+++ b/SharedVersion.cs
@@ -1,4 +1,4 @@
using System.Reflection;
-//[assembly: AssemblyVersion("3.0.*")]
-[assembly: AssemblyVersion("3.0.5482.4")]
+[assembly: AssemblyVersion("3.0.*")]
+//[assembly: AssemblyVersion("3.0.5482.4")]