mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-22 03:02:35 +01:00
Minor work on progress helper
This commit is contained in:
parent
0833371735
commit
207c4a8175
@ -980,9 +980,11 @@ We leverage the intrinsic rhythm of the image.</CreateSimpleChainingToolTip>
|
|||||||
<InfoAssaOn>Note: Advanced SubStation Alpha styling will be used :)</InfoAssaOn>
|
<InfoAssaOn>Note: Advanced SubStation Alpha styling will be used :)</InfoAssaOn>
|
||||||
<XGeneratedWithBurnedInSubsInX>"{0}" generated with burned-in subtitle in {1}.</XGeneratedWithBurnedInSubsInX>
|
<XGeneratedWithBurnedInSubsInX>"{0}" generated with burned-in subtitle in {1}.</XGeneratedWithBurnedInSubsInX>
|
||||||
<TimeRemainingMinutes>Time remaining: {0} minutes</TimeRemainingMinutes>
|
<TimeRemainingMinutes>Time remaining: {0} minutes</TimeRemainingMinutes>
|
||||||
|
<TimeRemainingOneMinute>Time remaining: One minute</TimeRemainingOneMinute>
|
||||||
<TimeRemainingSeconds>Time remaining: {0} seconds</TimeRemainingSeconds>
|
<TimeRemainingSeconds>Time remaining: {0} seconds</TimeRemainingSeconds>
|
||||||
<TimeRemainingAFewSeconds>Time remaining: A few seconds</TimeRemainingAFewSeconds>
|
<TimeRemainingAFewSeconds>Time remaining: A few seconds</TimeRemainingAFewSeconds>
|
||||||
<TimeRemainingMinutesAndSeconds>Time remaining: {0} minutes and {1} seconds</TimeRemainingMinutesAndSeconds>
|
<TimeRemainingMinutesAndSeconds>Time remaining: {0} minutes and {1} seconds</TimeRemainingMinutesAndSeconds>
|
||||||
|
<TimeRemainingOneMinuteAndSeconds>Time remaining: One minute and {0} seconds</TimeRemainingOneMinuteAndSeconds>
|
||||||
<TargetFileName>Target file name: {0}</TargetFileName>
|
<TargetFileName>Target file name: {0}</TargetFileName>
|
||||||
<TargetFileSize>Target file size (requires 2 pass encoding)</TargetFileSize>
|
<TargetFileSize>Target file size (requires 2 pass encoding)</TargetFileSize>
|
||||||
<FileSizeMb>File size in MB</FileSizeMb>
|
<FileSizeMb>File size in MB</FileSizeMb>
|
||||||
|
38
src/Test/Logic/ProgressHelperTest.cs
Normal file
38
src/Test/Logic/ProgressHelperTest.cs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using Nikse.SubtitleEdit.Core.Common;
|
||||||
|
using Nikse.SubtitleEdit.Logic;
|
||||||
|
|
||||||
|
namespace Test.Logic
|
||||||
|
{
|
||||||
|
[TestClass]
|
||||||
|
public class ProgressHelperTest
|
||||||
|
{
|
||||||
|
[TestMethod]
|
||||||
|
public void TestOneMinute()
|
||||||
|
{
|
||||||
|
var result = ProgressHelper.ToProgressTime(new TimeCode(0, 1, 0, 0).TotalMilliseconds);
|
||||||
|
Assert.AreEqual("Time remaining: One minute", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void TestOneMinuteAndTwoSeconds()
|
||||||
|
{
|
||||||
|
var result = ProgressHelper.ToProgressTime(new TimeCode(0, 1, 2, 0).TotalMilliseconds);
|
||||||
|
Assert.AreEqual("Time remaining: One minute and 2 seconds", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void TestTwoMinuteAndTwoSeconds()
|
||||||
|
{
|
||||||
|
var result = ProgressHelper.ToProgressTime(new TimeCode(0, 2, 2, 0).TotalMilliseconds);
|
||||||
|
Assert.AreEqual("Time remaining: 2 minutes and 2 seconds", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void TestOneSecond()
|
||||||
|
{
|
||||||
|
var result = ProgressHelper.ToProgressTime(new TimeCode(0, 0, 1, 0).TotalMilliseconds);
|
||||||
|
Assert.AreEqual("Time remaining: A few seconds", result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -105,6 +105,7 @@
|
|||||||
<Compile Include="Logic\SubtitleFormats\Cea708Test.cs" />
|
<Compile Include="Logic\SubtitleFormats\Cea708Test.cs" />
|
||||||
<Compile Include="Logic\SubtitleFormats\SubtitleFormatFunctionsTest.cs" />
|
<Compile Include="Logic\SubtitleFormats\SubtitleFormatFunctionsTest.cs" />
|
||||||
<Compile Include="Logic\TarFileTest.cs" />
|
<Compile Include="Logic\TarFileTest.cs" />
|
||||||
|
<Compile Include="Logic\ProgressHelperTest.cs" />
|
||||||
<Compile Include="Logic\TransportStream\TransportStreamTest.cs" />
|
<Compile Include="Logic\TransportStream\TransportStreamTest.cs" />
|
||||||
<Compile Include="Logic\ParagraphTest.cs" />
|
<Compile Include="Logic\ParagraphTest.cs" />
|
||||||
<Compile Include="Logic\StrippableTextTest.cs" />
|
<Compile Include="Logic\StrippableTextTest.cs" />
|
||||||
|
@ -253,6 +253,7 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText
|
|||||||
|
|
||||||
private void ButtonGenerate_Click(object sender, EventArgs e)
|
private void ButtonGenerate_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
_cancel = false;
|
||||||
if (comboBoxModels.Items.Count == 0)
|
if (comboBoxModels.Items.Count == 0)
|
||||||
{
|
{
|
||||||
buttonDownload_Click(null, null);
|
buttonDownload_Click(null, null);
|
||||||
@ -1761,17 +1762,31 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText
|
|||||||
|
|
||||||
private void contextMenuStripWhisperAdvanced_Opening(object sender, System.ComponentModel.CancelEventArgs e)
|
private void contextMenuStripWhisperAdvanced_Opening(object sender, System.ComponentModel.CancelEventArgs e)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(Configuration.Settings.Tools.WhisperCppModelLocation) &&
|
runOnlyPostProcessingToolStripMenuItem.Visible = buttonGenerate.Enabled;
|
||||||
Directory.Exists(Configuration.Settings.Tools.WhisperCppModelLocation))
|
toolStripSeparatorRunOnlyPostprocessing.Visible = buttonGenerate.Enabled;
|
||||||
|
|
||||||
|
if (Configuration.Settings.Tools.WhisperChoice == WhisperChoice.Cpp ||
|
||||||
|
Configuration.Settings.Tools.WhisperChoice == WhisperChoice.ConstMe)
|
||||||
{
|
{
|
||||||
setCPPConstmeModelsFolderToolStripMenuItem.Text = $"{LanguageSettings.Current.AudioToText.SetCppConstMeFolder} [{Configuration.Settings.Tools.WhisperCppModelLocation}]";
|
if (!string.IsNullOrEmpty(Configuration.Settings.Tools.WhisperCppModelLocation) &&
|
||||||
|
Directory.Exists(Configuration.Settings.Tools.WhisperCppModelLocation))
|
||||||
|
{
|
||||||
|
setCPPConstmeModelsFolderToolStripMenuItem.Text = $"{LanguageSettings.Current.AudioToText.SetCppConstMeFolder} [{Configuration.Settings.Tools.WhisperCppModelLocation}]";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setCPPConstmeModelsFolderToolStripMenuItem.Text = LanguageSettings.Current.AudioToText.SetCppConstMeFolder;
|
||||||
|
}
|
||||||
|
setCPPConstmeModelsFolderToolStripMenuItem.Visible = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setCPPConstmeModelsFolderToolStripMenuItem.Text = LanguageSettings.Current.AudioToText.SetCppConstMeFolder;
|
setCPPConstmeModelsFolderToolStripMenuItem.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadCUDAForPerfviewsWhisperFasterToolStripMenuItem.Visible = Configuration.Settings.Tools.WhisperChoice == WhisperChoice.PurfviewFasterWhisper;
|
downloadCUDAForPerfviewsWhisperFasterToolStripMenuItem.Visible =
|
||||||
|
buttonGenerate.Enabled &&
|
||||||
|
Configuration.Settings.Tools.WhisperChoice == WhisperChoice.PurfviewFasterWhisper;
|
||||||
|
|
||||||
var whisperLogFile = SeLogger.GetWhisperLogFilePath();
|
var whisperLogFile = SeLogger.GetWhisperLogFilePath();
|
||||||
if (File.Exists(whisperLogFile))
|
if (File.Exists(whisperLogFile))
|
||||||
@ -1789,6 +1804,8 @@ namespace Nikse.SubtitleEdit.Forms.AudioToText
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
labelProgress.Text = LanguageSettings.Current.AudioToText.PostProcessing;
|
||||||
|
|
||||||
_languageCode = LanguageAutoDetect.AutoDetectGoogleLanguage(_subtitle);
|
_languageCode = LanguageAutoDetect.AutoDetectGoogleLanguage(_subtitle);
|
||||||
var postProcessor = new AudioToTextPostProcessor(_languageCode)
|
var postProcessor = new AudioToTextPostProcessor(_languageCode)
|
||||||
{
|
{
|
||||||
|
@ -1231,9 +1231,11 @@ namespace Nikse.SubtitleEdit.Logic
|
|||||||
InfoAssaOn = "Note: Advanced SubStation Alpha styling will be used :)",
|
InfoAssaOn = "Note: Advanced SubStation Alpha styling will be used :)",
|
||||||
XGeneratedWithBurnedInSubsInX = "\"{0}\" generated with burned-in subtitle in {1}.",
|
XGeneratedWithBurnedInSubsInX = "\"{0}\" generated with burned-in subtitle in {1}.",
|
||||||
TimeRemainingMinutes = "Time remaining: {0} minutes",
|
TimeRemainingMinutes = "Time remaining: {0} minutes",
|
||||||
|
TimeRemainingOneMinute = "Time remaining: One minute",
|
||||||
TimeRemainingSeconds = "Time remaining: {0} seconds",
|
TimeRemainingSeconds = "Time remaining: {0} seconds",
|
||||||
TimeRemainingAFewSeconds = "Time remaining: A few seconds",
|
TimeRemainingAFewSeconds = "Time remaining: A few seconds",
|
||||||
TimeRemainingMinutesAndSeconds = "Time remaining: {0} minutes and {1} seconds",
|
TimeRemainingMinutesAndSeconds = "Time remaining: {0} minutes and {1} seconds",
|
||||||
|
TimeRemainingOneMinuteAndSeconds = "Time remaining: One minute and {0} seconds",
|
||||||
TargetFileName = "Target file name: {0}",
|
TargetFileName = "Target file name: {0}",
|
||||||
TargetFileSize = "Target file size (requires 2 pass encoding)",
|
TargetFileSize = "Target file size (requires 2 pass encoding)",
|
||||||
FileSizeMb = "File size in MB",
|
FileSizeMb = "File size in MB",
|
||||||
|
@ -2581,6 +2581,9 @@ namespace Nikse.SubtitleEdit.Logic
|
|||||||
case "GenerateVideoWithBurnedInSubs/TimeRemainingMinutes":
|
case "GenerateVideoWithBurnedInSubs/TimeRemainingMinutes":
|
||||||
language.GenerateVideoWithBurnedInSubs.TimeRemainingMinutes = reader.Value;
|
language.GenerateVideoWithBurnedInSubs.TimeRemainingMinutes = reader.Value;
|
||||||
break;
|
break;
|
||||||
|
case "GenerateVideoWithBurnedInSubs/TimeRemainingOneMinute":
|
||||||
|
language.GenerateVideoWithBurnedInSubs.TimeRemainingOneMinute = reader.Value;
|
||||||
|
break;
|
||||||
case "GenerateVideoWithBurnedInSubs/TimeRemainingSeconds":
|
case "GenerateVideoWithBurnedInSubs/TimeRemainingSeconds":
|
||||||
language.GenerateVideoWithBurnedInSubs.TimeRemainingSeconds = reader.Value;
|
language.GenerateVideoWithBurnedInSubs.TimeRemainingSeconds = reader.Value;
|
||||||
break;
|
break;
|
||||||
@ -2590,6 +2593,9 @@ namespace Nikse.SubtitleEdit.Logic
|
|||||||
case "GenerateVideoWithBurnedInSubs/TimeRemainingMinutesAndSeconds":
|
case "GenerateVideoWithBurnedInSubs/TimeRemainingMinutesAndSeconds":
|
||||||
language.GenerateVideoWithBurnedInSubs.TimeRemainingMinutesAndSeconds = reader.Value;
|
language.GenerateVideoWithBurnedInSubs.TimeRemainingMinutesAndSeconds = reader.Value;
|
||||||
break;
|
break;
|
||||||
|
case "GenerateVideoWithBurnedInSubs/TimeRemainingOneMinuteAndSeconds":
|
||||||
|
language.GenerateVideoWithBurnedInSubs.TimeRemainingOneMinuteAndSeconds = reader.Value;
|
||||||
|
break;
|
||||||
case "GenerateVideoWithBurnedInSubs/TargetFileName":
|
case "GenerateVideoWithBurnedInSubs/TargetFileName":
|
||||||
language.GenerateVideoWithBurnedInSubs.TargetFileName = reader.Value;
|
language.GenerateVideoWithBurnedInSubs.TargetFileName = reader.Value;
|
||||||
break;
|
break;
|
||||||
|
@ -1055,9 +1055,11 @@
|
|||||||
public string InfoAssaOn { get; set; }
|
public string InfoAssaOn { get; set; }
|
||||||
public string XGeneratedWithBurnedInSubsInX { get; set; }
|
public string XGeneratedWithBurnedInSubsInX { get; set; }
|
||||||
public string TimeRemainingMinutes { get; set; }
|
public string TimeRemainingMinutes { get; set; }
|
||||||
|
public string TimeRemainingOneMinute { get; set; }
|
||||||
public string TimeRemainingSeconds { get; set; }
|
public string TimeRemainingSeconds { get; set; }
|
||||||
public string TimeRemainingAFewSeconds { get; set; }
|
public string TimeRemainingAFewSeconds { get; set; }
|
||||||
public string TimeRemainingMinutesAndSeconds { get; set; }
|
public string TimeRemainingMinutesAndSeconds { get; set; }
|
||||||
|
public string TimeRemainingOneMinuteAndSeconds { get; set; }
|
||||||
public string TargetFileName { get; set; }
|
public string TargetFileName { get; set; }
|
||||||
public string TargetFileSize { get; set; }
|
public string TargetFileSize { get; set; }
|
||||||
public string FileSizeMb { get; set; }
|
public string FileSizeMb { get; set; }
|
||||||
|
@ -7,20 +7,38 @@ namespace Nikse.SubtitleEdit.Logic
|
|||||||
{
|
{
|
||||||
public static string ToProgressTime(double estimatedTotalMs)
|
public static string ToProgressTime(double estimatedTotalMs)
|
||||||
{
|
{
|
||||||
var totalSeconds = (int)Math.Round(estimatedTotalMs / 1000.0);
|
var totalSeconds = (int)Math.Round(estimatedTotalMs / 1000.0, MidpointRounding.AwayFromZero);
|
||||||
if (totalSeconds < 60)
|
if (totalSeconds < 60)
|
||||||
{
|
{
|
||||||
return totalSeconds < 3
|
if (totalSeconds < 3)
|
||||||
? string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingAFewSeconds)
|
{
|
||||||
: string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingSeconds, totalSeconds);
|
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingAFewSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingSeconds, totalSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (totalSeconds / 60 > 5)
|
if (totalSeconds / 60 > 5)
|
||||||
{
|
{
|
||||||
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingMinutes, (int)Math.Round(totalSeconds / 60.0));
|
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingMinutes, (int)Math.Round(totalSeconds / 60.0, MidpointRounding.AwayFromZero));
|
||||||
}
|
}
|
||||||
|
|
||||||
var timeCode = new TimeCode(estimatedTotalMs);
|
var timeCode = new TimeCode(estimatedTotalMs);
|
||||||
|
if (timeCode.Seconds == 0 && timeCode.Minutes > 0)
|
||||||
|
{
|
||||||
|
if (timeCode.Minutes == 1)
|
||||||
|
{
|
||||||
|
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingOneMinute);
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingMinutes, timeCode.Minutes);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timeCode.Hours == 0 && timeCode.Minutes == 1)
|
||||||
|
{
|
||||||
|
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingOneMinuteAndSeconds, timeCode.Seconds);
|
||||||
|
}
|
||||||
|
|
||||||
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingMinutesAndSeconds, timeCode.Minutes + timeCode.Hours * 60, timeCode.Seconds);
|
return string.Format(LanguageSettings.Current.GenerateVideoWithBurnedInSubs.TimeRemainingMinutesAndSeconds, timeCode.Minutes + timeCode.Hours * 60, timeCode.Seconds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user