mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-11-15 18:08:53 -07:00
added UniversalDetector.dll
This commit is contained in:
parent
e978482896
commit
5ff5df9867
@ -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 },
|
||||
|
@ -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();
|
||||
|
@ -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 },
|
||||
|
@ -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 }
|
||||
};
|
||||
|
||||
|
@ -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 + "\"";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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">
|
||||
|
@ -17,6 +17,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using UniversalDetector;
|
||||
|
||||
namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
{
|
||||
@ -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
|
||||
|
@ -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[]
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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() },
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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")]
|
||||
|
Loading…
Reference in New Issue
Block a user