diff options
Diffstat (limited to 'MediaBrowser.MediaEncoding')
3 files changed, 22 insertions, 17 deletions
diff --git a/MediaBrowser.MediaEncoding/BdInfo/BdInfoExaminer.cs b/MediaBrowser.MediaEncoding/BdInfo/BdInfoExaminer.cs index ac0dd36ee..3b6b91684 100644 --- a/MediaBrowser.MediaEncoding/BdInfo/BdInfoExaminer.cs +++ b/MediaBrowser.MediaEncoding/BdInfo/BdInfoExaminer.cs @@ -1,11 +1,10 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using BDInfo; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.MediaInfo; -using MediaBrowser.Model.Text; namespace MediaBrowser.MediaEncoding.BdInfo { @@ -15,12 +14,10 @@ namespace MediaBrowser.MediaEncoding.BdInfo public class BdInfoExaminer : IBlurayExaminer { private readonly IFileSystem _fileSystem; - private readonly ITextEncoding _textEncoding; - public BdInfoExaminer(IFileSystem fileSystem, ITextEncoding textEncoding) + public BdInfoExaminer(IFileSystem fileSystem) { _fileSystem = fileSystem; - _textEncoding = textEncoding; } /// <summary> @@ -35,7 +32,7 @@ namespace MediaBrowser.MediaEncoding.BdInfo throw new ArgumentNullException(nameof(path)); } - var bdrom = new BDROM(path, _fileSystem, _textEncoding); + var bdrom = new BDROM(path, _fileSystem); bdrom.Scan(); diff --git a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj index c5ed65734..d276ada06 100644 --- a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj +++ b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj @@ -17,4 +17,14 @@ <ProjectReference Include="..\OpenSubtitlesHandler\OpenSubtitlesHandler.csproj" /> </ItemGroup> + <ItemGroup> + <PackageReference Include="UTF.Unknown" Version="1.0.0-beta1" /> + </ItemGroup> + + <ItemGroup> + <Reference Include="System.Text.Encoding.CodePages, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <HintPath>..\..\..\.nuget\packages\system.text.encoding.codepages\4.5.0\ref\netstandard2.0\System.Text.Encoding.CodePages.dll</HintPath> + </Reference> + </ItemGroup> + </Project> diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index 4f424d39b..ad9b0b1e9 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -18,8 +18,8 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Serialization; -using MediaBrowser.Model.Text; using Microsoft.Extensions.Logging; +using UtfUnknown; namespace MediaBrowser.MediaEncoding.Subtitles { @@ -34,10 +34,8 @@ namespace MediaBrowser.MediaEncoding.Subtitles private readonly IHttpClient _httpClient; private readonly IMediaSourceManager _mediaSourceManager; private readonly IProcessFactory _processFactory; - private readonly ITextEncoding _textEncoding; - public SubtitleEncoder( - ILibraryManager libraryManager, + public SubtitleEncoder(ILibraryManager libraryManager, ILogger logger, IApplicationPaths appPaths, IFileSystem fileSystem, @@ -45,8 +43,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles IJsonSerializer json, IHttpClient httpClient, IMediaSourceManager mediaSourceManager, - IProcessFactory processFactory, - ITextEncoding textEncoding) + IProcessFactory processFactory) { _libraryManager = libraryManager; _logger = logger; @@ -57,7 +54,6 @@ namespace MediaBrowser.MediaEncoding.Subtitles _httpClient = httpClient; _mediaSourceManager = mediaSourceManager; _processFactory = processFactory; - _textEncoding = textEncoding; } private string SubtitleCachePath => Path.Combine(_appPaths.DataPath, "subtitles"); @@ -196,13 +192,15 @@ namespace MediaBrowser.MediaEncoding.Subtitles { var bytes = await GetBytes(path, protocol, cancellationToken).ConfigureAwait(false); - var charset = _textEncoding.GetDetectedEncodingName(bytes, bytes.Length, language, true); - _logger.LogDebug("charset {0} detected for {1}", charset ?? "null", path); + var charset = CharsetDetector.DetectFromBytes(bytes).Detected?.EncodingName; + _logger.LogDebug("charset {CharSet} detected for {Path}", charset ?? "null", path); if (!string.IsNullOrEmpty(charset)) { + // Make sure we have all the code pages we can get + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); using (var inputStream = new MemoryStream(bytes)) - using (var reader = new StreamReader(inputStream, _textEncoding.GetEncodingFromCharset(charset))) + using (var reader = new StreamReader(inputStream, Encoding.GetEncoding(charset))) { var text = await reader.ReadToEndAsync().ConfigureAwait(false); @@ -723,7 +721,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles { var bytes = await GetBytes(path, protocol, cancellationToken).ConfigureAwait(false); - var charset = _textEncoding.GetDetectedEncodingName(bytes, bytes.Length, language, true); + var charset = CharsetDetector.DetectFromBytes(bytes).Detected?.EncodingName; _logger.LogDebug("charset {0} detected for {Path}", charset ?? "null", path); |
