mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-03-20 09:06:38 +00:00
Make MediaBrowser.MediaEncoding warnings free
This commit is contained in:
@@ -240,11 +240,11 @@ namespace MediaBrowser.MediaEncoding.Attachments
|
||||
if (protocol == MediaProtocol.File)
|
||||
{
|
||||
var date = _fileSystem.GetLastWriteTimeUtc(mediaPath);
|
||||
filename = (mediaPath + attachmentStreamIndex.ToString(CultureInfo.InvariantCulture) + "_" + date.Ticks.ToString(CultureInfo.InvariantCulture)).GetMD5().ToString("D");
|
||||
filename = (mediaPath + attachmentStreamIndex.ToString(CultureInfo.InvariantCulture) + "_" + date.Ticks.ToString(CultureInfo.InvariantCulture)).GetMD5().ToString("D", CultureInfo.InvariantCulture);
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = (mediaPath + attachmentStreamIndex.ToString(CultureInfo.InvariantCulture)).GetMD5().ToString("D");
|
||||
filename = (mediaPath + attachmentStreamIndex.ToString(CultureInfo.InvariantCulture)).GetMD5().ToString("D", CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
var prefix = filename.Substring(0, 1);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma warning disable CS1591
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
@@ -48,7 +49,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||
/// <returns>System.String.</returns>
|
||||
private static string GetFileInputArgument(string path)
|
||||
{
|
||||
if (path.IndexOf("://") != -1)
|
||||
if (path.IndexOf("://", StringComparison.Ordinal) != -1)
|
||||
{
|
||||
return string.Format(CultureInfo.InvariantCulture, "\"{0}\"", path);
|
||||
}
|
||||
@@ -67,7 +68,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||
private static string NormalizePath(string path)
|
||||
{
|
||||
// Quotes are valid path characters in linux and they need to be escaped here with a leading \
|
||||
return path.Replace("\"", "\\\"");
|
||||
return path.Replace("\"", "\\\"", StringComparison.Ordinal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,7 +377,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||
var args = extractChapters
|
||||
? "{0} -i {1} -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format"
|
||||
: "{0} -i {1} -threads 0 -v warning -print_format json -show_streams -show_format";
|
||||
args = string.Format(args, probeSizeArgument, inputPath).Trim();
|
||||
args = string.Format(CultureInfo.InvariantCulture, args, probeSizeArgument, inputPath).Trim();
|
||||
|
||||
var process = new Process
|
||||
{
|
||||
@@ -856,7 +856,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||
// https://ffmpeg.org/ffmpeg-filters.html#Notes-on-filtergraph-escaping
|
||||
// We need to double escape
|
||||
|
||||
return path.Replace('\\', '/').Replace(":", "\\:").Replace("'", "'\\\\\\''");
|
||||
return path.Replace('\\', '/').Replace(":", "\\:", StringComparison.Ordinal).Replace("'", "'\\\\\\''", StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
<!-- Code Analyzers-->
|
||||
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<!-- <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.8" PrivateAssets="All" /> -->
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.8" PrivateAssets="All" />
|
||||
<PackageReference Include="SerilogAnalyzer" Version="0.15.0" PrivateAssets="All" />
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
|
||||
<PackageReference Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31" PrivateAssets="All" />
|
||||
|
||||
@@ -42,7 +42,8 @@ namespace MediaBrowser.MediaEncoding.Probing
|
||||
var info = new MediaInfo
|
||||
{
|
||||
Path = path,
|
||||
Protocol = protocol
|
||||
Protocol = protocol,
|
||||
VideoType = videoType
|
||||
};
|
||||
|
||||
FFProbeHelpers.NormalizeFFProbeResult(data);
|
||||
@@ -1133,7 +1134,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
||||
{
|
||||
// Only use the comma as a delimeter if there are no slashes or pipes.
|
||||
// We want to be careful not to split names that have commas in them
|
||||
var delimeter = !allowCommaDelimiter || _nameDelimiters.Any(i => val.IndexOf(i) != -1) ?
|
||||
var delimeter = !allowCommaDelimiter || _nameDelimiters.Any(i => val.IndexOf(i, StringComparison.Ordinal) != -1) ?
|
||||
_nameDelimiters :
|
||||
new[] { ',' };
|
||||
|
||||
@@ -1377,8 +1378,8 @@ namespace MediaBrowser.MediaEncoding.Probing
|
||||
if (subtitle.Contains('/', StringComparison.Ordinal)) // It contains a episode number and season number
|
||||
{
|
||||
string[] numbers = subtitle.Split(' ');
|
||||
video.IndexNumber = int.Parse(numbers[0].Replace(".", string.Empty, StringComparison.Ordinal).Split('/')[0]);
|
||||
int totalEpisodesInSeason = int.Parse(numbers[0].Replace(".", string.Empty, StringComparison.Ordinal).Split('/')[1]);
|
||||
video.IndexNumber = int.Parse(numbers[0].Replace(".", string.Empty, StringComparison.Ordinal).Split('/')[0], CultureInfo.InvariantCulture);
|
||||
int totalEpisodesInSeason = int.Parse(numbers[0].Replace(".", string.Empty, StringComparison.Ordinal).Split('/')[1], CultureInfo.InvariantCulture);
|
||||
|
||||
description = string.Join(" ", numbers, 1, numbers.Length - 1).Trim(); // Skip the first, concatenate the rest, clean up spaces and save it
|
||||
}
|
||||
|
||||
@@ -86,9 +86,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
private void RemoteNativeFormatting(SubtitleTrackEvent p)
|
||||
{
|
||||
int indexOfBegin = p.Text.IndexOf('{');
|
||||
int indexOfBegin = p.Text.IndexOf('{', StringComparison.Ordinal);
|
||||
string pre = string.Empty;
|
||||
while (indexOfBegin >= 0 && p.Text.IndexOf('}') > indexOfBegin)
|
||||
while (indexOfBegin >= 0 && p.Text.IndexOf('}', StringComparison.Ordinal) > indexOfBegin)
|
||||
{
|
||||
string s = p.Text.Substring(indexOfBegin);
|
||||
if (s.StartsWith("{\\an1}", StringComparison.Ordinal) ||
|
||||
@@ -116,10 +116,10 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
pre = s.Substring(0, 5) + "}";
|
||||
}
|
||||
|
||||
int indexOfEnd = p.Text.IndexOf('}');
|
||||
int indexOfEnd = p.Text.IndexOf('}', StringComparison.Ordinal);
|
||||
p.Text = p.Text.Remove(indexOfBegin, (indexOfEnd - indexOfBegin) + 1);
|
||||
|
||||
indexOfBegin = p.Text.IndexOf('{');
|
||||
indexOfBegin = p.Text.IndexOf('{', StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
p.Text = pre + p.Text;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
@@ -50,14 +51,14 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
{
|
||||
eventsStarted = true;
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(line) && line.Trim().StartsWith(";"))
|
||||
else if (!string.IsNullOrEmpty(line) && line.Trim().StartsWith(";", StringComparison.Ordinal))
|
||||
{
|
||||
// skip comment lines
|
||||
}
|
||||
else if (eventsStarted && line.Trim().Length > 0)
|
||||
{
|
||||
string s = line.Trim().ToLowerInvariant();
|
||||
if (s.StartsWith("format:"))
|
||||
if (s.StartsWith("format:", StringComparison.Ordinal))
|
||||
{
|
||||
if (line.Length > 10)
|
||||
{
|
||||
@@ -103,7 +104,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
string[] splittedLine;
|
||||
|
||||
if (s.StartsWith("dialogue:"))
|
||||
if (s.StartsWith("dialogue:", StringComparison.Ordinal))
|
||||
{
|
||||
splittedLine = line.Substring(10).Split(',');
|
||||
}
|
||||
@@ -181,10 +182,10 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
string[] timeCode = time.Split(':', '.');
|
||||
return new TimeSpan(
|
||||
0,
|
||||
int.Parse(timeCode[0]),
|
||||
int.Parse(timeCode[1]),
|
||||
int.Parse(timeCode[2]),
|
||||
int.Parse(timeCode[3]) * 10).Ticks;
|
||||
int.Parse(timeCode[0], CultureInfo.InvariantCulture),
|
||||
int.Parse(timeCode[1], CultureInfo.InvariantCulture),
|
||||
int.Parse(timeCode[2], CultureInfo.InvariantCulture),
|
||||
int.Parse(timeCode[3], CultureInfo.InvariantCulture) * 10).Ticks;
|
||||
}
|
||||
|
||||
private static string GetFormattedText(string text)
|
||||
@@ -193,11 +194,11 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
for (int i = 0; i < 10; i++) // just look ten times...
|
||||
{
|
||||
if (text.Contains(@"{\fn"))
|
||||
if (text.Contains(@"{\fn", StringComparison.Ordinal))
|
||||
{
|
||||
int start = text.IndexOf(@"{\fn");
|
||||
int start = text.IndexOf(@"{\fn", StringComparison.Ordinal);
|
||||
int end = text.IndexOf('}', start);
|
||||
if (end > 0 && !text.Substring(start).StartsWith("{\\fn}"))
|
||||
if (end > 0 && !text.Substring(start).StartsWith("{\\fn}", StringComparison.Ordinal))
|
||||
{
|
||||
string fontName = text.Substring(start + 4, end - (start + 4));
|
||||
string extraTags = string.Empty;
|
||||
@@ -212,7 +213,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
text = text.Insert(start, "<font face=\"" + fontName + "\"" + extraTags + ">");
|
||||
}
|
||||
|
||||
int indexOfEndTag = text.IndexOf("{\\fn}", start);
|
||||
int indexOfEndTag = text.IndexOf("{\\fn}", start, StringComparison.Ordinal);
|
||||
if (indexOfEndTag > 0)
|
||||
{
|
||||
text = text.Remove(indexOfEndTag, "{\\fn}".Length).Insert(indexOfEndTag, "</font>");
|
||||
@@ -224,11 +225,11 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
}
|
||||
}
|
||||
|
||||
if (text.Contains(@"{\fs"))
|
||||
if (text.Contains(@"{\fs", StringComparison.Ordinal))
|
||||
{
|
||||
int start = text.IndexOf(@"{\fs");
|
||||
int start = text.IndexOf(@"{\fs", StringComparison.Ordinal);
|
||||
int end = text.IndexOf('}', start);
|
||||
if (end > 0 && !text.Substring(start).StartsWith("{\\fs}"))
|
||||
if (end > 0 && !text.Substring(start).StartsWith("{\\fs}", StringComparison.Ordinal))
|
||||
{
|
||||
string fontSize = text.Substring(start + 4, end - (start + 4));
|
||||
string extraTags = string.Empty;
|
||||
@@ -245,7 +246,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
text = text.Insert(start, "<font size=\"" + fontSize + "\"" + extraTags + ">");
|
||||
}
|
||||
|
||||
int indexOfEndTag = text.IndexOf("{\\fs}", start);
|
||||
int indexOfEndTag = text.IndexOf("{\\fs}", start, StringComparison.Ordinal);
|
||||
if (indexOfEndTag > 0)
|
||||
{
|
||||
text = text.Remove(indexOfEndTag, "{\\fs}".Length).Insert(indexOfEndTag, "</font>");
|
||||
@@ -258,17 +259,17 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
}
|
||||
}
|
||||
|
||||
if (text.Contains(@"{\c"))
|
||||
if (text.Contains(@"{\c", StringComparison.Ordinal))
|
||||
{
|
||||
int start = text.IndexOf(@"{\c");
|
||||
int start = text.IndexOf(@"{\c", StringComparison.Ordinal);
|
||||
int end = text.IndexOf('}', start);
|
||||
if (end > 0 && !text.Substring(start).StartsWith("{\\c}"))
|
||||
if (end > 0 && !text.Substring(start).StartsWith("{\\c}", StringComparison.Ordinal))
|
||||
{
|
||||
string color = text.Substring(start + 4, end - (start + 4));
|
||||
string extraTags = string.Empty;
|
||||
CheckAndAddSubTags(ref color, ref extraTags, out bool italic);
|
||||
|
||||
color = color.Replace("&", string.Empty).TrimStart('H');
|
||||
color = color.Replace("&", string.Empty, StringComparison.Ordinal).TrimStart('H');
|
||||
color = color.PadLeft(6, '0');
|
||||
|
||||
// switch to rrggbb from bbggrr
|
||||
@@ -285,7 +286,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
text = text.Insert(start, "<font color=\"" + color + "\"" + extraTags + ">");
|
||||
}
|
||||
|
||||
int indexOfEndTag = text.IndexOf("{\\c}", start);
|
||||
int indexOfEndTag = text.IndexOf("{\\c}", start, StringComparison.Ordinal);
|
||||
if (indexOfEndTag > 0)
|
||||
{
|
||||
text = text.Remove(indexOfEndTag, "{\\c}".Length).Insert(indexOfEndTag, "</font>");
|
||||
@@ -297,17 +298,17 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
}
|
||||
}
|
||||
|
||||
if (text.Contains(@"{\1c")) // "1" specifices primary color
|
||||
if (text.Contains(@"{\1c", StringComparison.Ordinal)) // "1" specifices primary color
|
||||
{
|
||||
int start = text.IndexOf(@"{\1c");
|
||||
int start = text.IndexOf(@"{\1c", StringComparison.Ordinal);
|
||||
int end = text.IndexOf('}', start);
|
||||
if (end > 0 && !text.Substring(start).StartsWith("{\\1c}"))
|
||||
if (end > 0 && !text.Substring(start).StartsWith("{\\1c}", StringComparison.Ordinal))
|
||||
{
|
||||
string color = text.Substring(start + 5, end - (start + 5));
|
||||
string extraTags = string.Empty;
|
||||
CheckAndAddSubTags(ref color, ref extraTags, out bool italic);
|
||||
|
||||
color = color.Replace("&", string.Empty).TrimStart('H');
|
||||
color = color.Replace("&", string.Empty, StringComparison.Ordinal).TrimStart('H');
|
||||
color = color.PadLeft(6, '0');
|
||||
|
||||
// switch to rrggbb from bbggrr
|
||||
@@ -329,25 +330,25 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
}
|
||||
}
|
||||
|
||||
text = text.Replace(@"{\i1}", "<i>");
|
||||
text = text.Replace(@"{\i0}", "</i>");
|
||||
text = text.Replace(@"{\i}", "</i>");
|
||||
text = text.Replace(@"{\i1}", "<i>", StringComparison.Ordinal);
|
||||
text = text.Replace(@"{\i0}", "</i>", StringComparison.Ordinal);
|
||||
text = text.Replace(@"{\i}", "</i>", StringComparison.Ordinal);
|
||||
if (CountTagInText(text, "<i>") > CountTagInText(text, "</i>"))
|
||||
{
|
||||
text += "</i>";
|
||||
}
|
||||
|
||||
text = text.Replace(@"{\u1}", "<u>");
|
||||
text = text.Replace(@"{\u0}", "</u>");
|
||||
text = text.Replace(@"{\u}", "</u>");
|
||||
text = text.Replace(@"{\u1}", "<u>", StringComparison.Ordinal);
|
||||
text = text.Replace(@"{\u0}", "</u>", StringComparison.Ordinal);
|
||||
text = text.Replace(@"{\u}", "</u>", StringComparison.Ordinal);
|
||||
if (CountTagInText(text, "<u>") > CountTagInText(text, "</u>"))
|
||||
{
|
||||
text += "</u>";
|
||||
}
|
||||
|
||||
text = text.Replace(@"{\b1}", "<b>");
|
||||
text = text.Replace(@"{\b0}", "</b>");
|
||||
text = text.Replace(@"{\b}", "</b>");
|
||||
text = text.Replace(@"{\b1}", "<b>", StringComparison.Ordinal);
|
||||
text = text.Replace(@"{\b0}", "</b>", StringComparison.Ordinal);
|
||||
text = text.Replace(@"{\b}", "</b>", StringComparison.Ordinal);
|
||||
if (CountTagInText(text, "<b>") > CountTagInText(text, "</b>"))
|
||||
{
|
||||
text += "</b>";
|
||||
@@ -362,7 +363,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
private static int CountTagInText(string text, string tag)
|
||||
{
|
||||
int count = 0;
|
||||
int index = text.IndexOf(tag);
|
||||
int index = text.IndexOf(tag, StringComparison.Ordinal);
|
||||
while (index >= 0)
|
||||
{
|
||||
count++;
|
||||
@@ -371,7 +372,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
return count;
|
||||
}
|
||||
|
||||
index = text.IndexOf(tag, index + 1);
|
||||
index = text.IndexOf(tag, index + 1, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
return count;
|
||||
@@ -380,7 +381,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
private static void CheckAndAddSubTags(ref string tagName, ref string extraTags, out bool italic)
|
||||
{
|
||||
italic = false;
|
||||
int indexOfSPlit = tagName.IndexOf(@"\");
|
||||
int indexOfSPlit = tagName.IndexOf('\\', StringComparison.Ordinal);
|
||||
if (indexOfSPlit > 0)
|
||||
{
|
||||
string rest = tagName.Substring(indexOfSPlit).TrimStart('\\');
|
||||
@@ -388,9 +389,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
if (rest.StartsWith("fs") && rest.Length > 2)
|
||||
if (rest.StartsWith("fs", StringComparison.Ordinal) && rest.Length > 2)
|
||||
{
|
||||
indexOfSPlit = rest.IndexOf(@"\");
|
||||
indexOfSPlit = rest.IndexOf('\\', StringComparison.Ordinal);
|
||||
string fontSize = rest;
|
||||
if (indexOfSPlit > 0)
|
||||
{
|
||||
@@ -404,9 +405,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
extraTags += " size=\"" + fontSize.Substring(2) + "\"";
|
||||
}
|
||||
else if (rest.StartsWith("fn") && rest.Length > 2)
|
||||
else if (rest.StartsWith("fn", StringComparison.Ordinal) && rest.Length > 2)
|
||||
{
|
||||
indexOfSPlit = rest.IndexOf(@"\");
|
||||
indexOfSPlit = rest.IndexOf('\\', StringComparison.Ordinal);
|
||||
string fontName = rest;
|
||||
if (indexOfSPlit > 0)
|
||||
{
|
||||
@@ -420,9 +421,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
extraTags += " face=\"" + fontName.Substring(2) + "\"";
|
||||
}
|
||||
else if (rest.StartsWith("c") && rest.Length > 2)
|
||||
else if (rest.StartsWith("c", StringComparison.Ordinal) && rest.Length > 2)
|
||||
{
|
||||
indexOfSPlit = rest.IndexOf(@"\");
|
||||
indexOfSPlit = rest.IndexOf('\\', StringComparison.Ordinal);
|
||||
string fontColor = rest;
|
||||
if (indexOfSPlit > 0)
|
||||
{
|
||||
@@ -435,7 +436,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
}
|
||||
|
||||
string color = fontColor.Substring(2);
|
||||
color = color.Replace("&", string.Empty).TrimStart('H');
|
||||
color = color.Replace("&", string.Empty, StringComparison.Ordinal).TrimStart('H');
|
||||
color = color.PadLeft(6, '0');
|
||||
// switch to rrggbb from bbggrr
|
||||
color = "#" + color.Remove(color.Length - 6) + color.Substring(color.Length - 2, 2) + color.Substring(color.Length - 4, 2) + color.Substring(color.Length - 6, 2);
|
||||
@@ -443,9 +444,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
extraTags += " color=\"" + color + "\"";
|
||||
}
|
||||
else if (rest.StartsWith("i1") && rest.Length > 1)
|
||||
else if (rest.StartsWith("i1", StringComparison.Ordinal) && rest.Length > 1)
|
||||
{
|
||||
indexOfSPlit = rest.IndexOf(@"\");
|
||||
indexOfSPlit = rest.IndexOf('\\', StringComparison.Ordinal);
|
||||
italic = true;
|
||||
if (indexOfSPlit > 0)
|
||||
{
|
||||
@@ -456,9 +457,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
rest = string.Empty;
|
||||
}
|
||||
}
|
||||
else if (rest.Length > 0 && rest.Contains("\\"))
|
||||
else if (rest.Length > 0 && rest.Contains('\\', StringComparison.Ordinal))
|
||||
{
|
||||
indexOfSPlit = rest.IndexOf(@"\");
|
||||
indexOfSPlit = rest.IndexOf('\\', StringComparison.Ordinal);
|
||||
rest = rest.Substring(indexOfSPlit).TrimStart('\\');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -415,7 +415,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
// FFmpeg automatically convert character encoding when it is UTF-16
|
||||
// If we specify character encoding, it rejects with "do not specify a character encoding" and "Unable to recode subtitle event"
|
||||
if ((inputPath.EndsWith(".smi") || inputPath.EndsWith(".sami")) &&
|
||||
if ((inputPath.EndsWith(".smi", StringComparison.Ordinal) || inputPath.EndsWith(".sami", StringComparison.Ordinal)) &&
|
||||
(encodingParam.Equals("UTF-16BE", StringComparison.OrdinalIgnoreCase) ||
|
||||
encodingParam.Equals("UTF-16LE", StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
@@ -506,7 +506,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
string.Format(CultureInfo.InvariantCulture, "ffmpeg subtitle conversion failed for {0}", inputPath));
|
||||
}
|
||||
|
||||
await SetAssFont(outputPath).ConfigureAwait(false);
|
||||
await SetAssFont(outputPath, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
_logger.LogInformation("ffmpeg subtitle conversion succeeded for {Path}", inputPath);
|
||||
}
|
||||
@@ -668,7 +668,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
|
||||
if (string.Equals(outputCodec, "ass", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
await SetAssFont(outputPath).ConfigureAwait(false);
|
||||
await SetAssFont(outputPath, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -676,8 +676,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
/// Sets the ass font.
|
||||
/// </summary>
|
||||
/// <param name="file">The file.</param>
|
||||
/// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <c>System.Threading.CancellationToken.None</c>.</param>
|
||||
/// <returns>Task.</returns>
|
||||
private async Task SetAssFont(string file)
|
||||
private async Task SetAssFont(string file, CancellationToken cancellationToken = default)
|
||||
{
|
||||
_logger.LogInformation("Setting ass font within {File}", file);
|
||||
|
||||
@@ -692,14 +693,14 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
text = await reader.ReadToEndAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
var newText = text.Replace(",Arial,", ",Arial Unicode MS,");
|
||||
var newText = text.Replace(",Arial,", ",Arial Unicode MS,", StringComparison.Ordinal);
|
||||
|
||||
if (!string.Equals(text, newText))
|
||||
if (!string.Equals(text, newText, StringComparison.Ordinal))
|
||||
{
|
||||
using (var fileStream = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.Read))
|
||||
using (var writer = new StreamWriter(fileStream, encoding))
|
||||
{
|
||||
writer.Write(newText);
|
||||
await writer.WriteAsync(newText.AsMemory(), cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -736,7 +737,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
var charset = CharsetDetector.DetectFromStream(stream).Detected?.EncodingName;
|
||||
|
||||
// UTF16 is automatically converted to UTF8 by FFmpeg, do not specify a character encoding
|
||||
if ((path.EndsWith(".ass") || path.EndsWith(".ssa") || path.EndsWith(".srt"))
|
||||
if ((path.EndsWith(".ass", StringComparison.Ordinal) || path.EndsWith(".ssa", StringComparison.Ordinal) || path.EndsWith(".srt", StringComparison.Ordinal))
|
||||
&& (string.Equals(charset, "utf-16le", StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(charset, "utf-16be", StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user