Refactor subtitle formats part 1

This commit is contained in:
Ivandro Ismael 2015-08-09 08:14:48 +01:00
parent 9c05056775
commit 36efd10e64
9 changed files with 45 additions and 50 deletions

View File

@ -133,6 +133,7 @@ namespace Nikse.SubtitleEdit.Forms
sb.AppendLine(p.Text);
string text = HtmlUtil.RemoveHtmlTags(sb.ToString());
string textToLower = text.ToLower();
listViewNames.BeginUpdate();
foreach (string name in namesEtcList)
{
int startIndex = textToLower.IndexOf(name.ToLower(), StringComparison.Ordinal);
@ -167,6 +168,7 @@ namespace Nikse.SubtitleEdit.Forms
}
}
}
listViewNames.EndUpdate();
groupBoxNames.Text = string.Format(Configuration.Settings.Language.ChangeCasingNames.NamesFoundInSubtitleX, listViewNames.Items.Count);
}

View File

@ -56,12 +56,13 @@ BEWARE : No more than 40 characters ON A LINE
ATTENTION : Pas plus de 40 caractères PAR LIGNE
");
const string writeFormant = "* {0} :\t{1}\t{2}\t{3}{4}{5}";
int index = 0;
foreach (Paragraph p in subtitle.Paragraphs)
{
index++;
string text = HtmlUtil.RemoveHtmlTags(p.Text);
sb.AppendLine(string.Format("* {0} :\t{1}\t{2}\t{3}{4}{5}", index, EncodeTimeCode(p.StartTime), EncodeTimeCode(p.EndTime), GetMaxCharsForDuration(p.Duration.TotalSeconds) + "c", Environment.NewLine, text));
var text = HtmlUtil.RemoveHtmlTags(p.Text, true);
sb.AppendLine(string.Format(writeFormant, index, EncodeTimeCode(p.StartTime), EncodeTimeCode(p.EndTime), GetMaxCharsForDuration(p.Duration.TotalSeconds) + "c", Environment.NewLine, text));
sb.AppendLine();
if (!text.Contains(Environment.NewLine))
sb.AppendLine();
@ -72,7 +73,7 @@ ATTENTION : Pas plus de 40 caractères PAR LIGNE
private static string EncodeTimeCode(TimeCode time)
{
//00:03:15:22 (last is frame)
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFramesMaxFrameRate(time.Milliseconds));
return time.ToHHMMSSFF();
}
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
@ -129,15 +130,15 @@ ATTENTION : Pas plus de 40 caractères PAR LIGNE
private TimeCode DecodeTimeCode(string[] parts)
{
//00:00:07:12
string hour = parts[0];
string minutes = parts[1];
string seconds = parts[2];
int frames = int.Parse(parts[3]);
var hour = int.Parse(parts[0]);
var minutes = int.Parse(parts[1]);
var seconds = int.Parse(parts[2]);
var frames = int.Parse(parts[3]);
if (frames > _maxMsDiv10)
_maxMsDiv10 = frames;
return new TimeCode(int.Parse(hour), int.Parse(minutes), int.Parse(seconds), FramesToMillisecondsMax999(frames));
return new TimeCode(hour, minutes, seconds, FramesToMillisecondsMax999(frames));
}
}

View File

@ -8,7 +8,6 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
{
public class TmpegEncAW5 : TmpegEncXml
{
public override string Name
{
get { return "TMPGEnc AW5"; }
@ -26,7 +25,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
{
XmlNode paragraph = xml.CreateElement("SubtitleItem");
string text = HtmlUtil.RemoveHtmlTags(p.Text);
var text = HtmlUtil.RemoveHtmlTags(p.Text, true);
paragraph.InnerText = text;
paragraph.InnerXml = "<Text><![CDATA[" + paragraph.InnerXml.Replace(Environment.NewLine, "\\n") + "\\n]]></Text>";

View File

@ -24,7 +24,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
public override bool IsMine(List<string> lines, string fileName)
{
Subtitle subtitle = new Subtitle();
var subtitle = new Subtitle();
this.LoadSubtitle(subtitle, lines, fileName);
return subtitle.Paragraphs.Count > 0;
}
@ -147,4 +147,4 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
}
}
}
}

View File

@ -7,7 +7,6 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
{
public class TurboTitler : SubtitleFormat
{
private static Regex regexTimeCodes = new Regex(@"^\d:\d\d:\d\d\.\d\d,\d:\d\d:\d\d\.\d\d,NTP ", RegexOptions.Compiled);
public override string Extension
@ -27,7 +26,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
public override bool IsMine(List<string> lines, string fileName)
{
Subtitle subtitle = new Subtitle();
var subtitle = new Subtitle();
LoadSubtitle(subtitle, lines, fileName);
return subtitle.Paragraphs.Count > _errorCount;
}
@ -40,10 +39,10 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
const string paragraphWriteFormat = "{0},{1},NTP {2}";
StringBuilder sb = new StringBuilder();
var sb = new StringBuilder();
foreach (Paragraph p in subtitle.Paragraphs)
{
string text = p.Text.Replace(Environment.NewLine, "|");
var text = p.Text.Replace(Environment.NewLine, "|");
sb.AppendLine(string.Format(paragraphWriteFormat, EncodeTimeCode(p.StartTime), EncodeTimeCode(p.EndTime), text));
}
return sb.ToString().Trim();
@ -96,11 +95,11 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
private static TimeCode DecodeTimeCode(string[] parts)
{
string hour = parts[0];
string minutes = parts[1];
string seconds = parts[2];
string ms = parts[3];
return new TimeCode(int.Parse(hour), int.Parse(minutes), int.Parse(seconds), int.Parse(ms) * 10);
var hour = int.Parse(parts[0]);
var minutes = int.Parse(parts[1]);
var seconds = int.Parse(parts[2]);
var ms = int.Parse(parts[3]);
return new TimeCode(hour, minutes, seconds, ms * 10);
}
}

View File

@ -10,7 +10,6 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
/// </summary>
public class UnknownSubtitle7 : SubtitleFormat
{
private enum ExpectingLine
{
TimeStart,
@ -50,7 +49,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
const string paragraphWriteFormat = "{0} {2}{3}{1}\t";
StringBuilder sb = new StringBuilder();
var sb = new StringBuilder();
foreach (Paragraph p in subtitle.Paragraphs)
{
sb.AppendLine(string.Format(paragraphWriteFormat, EncodeTimeCode(p.StartTime), EncodeTimeCode(p.EndTime), p.Text, Environment.NewLine));
@ -64,7 +63,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
var regexTimeCodeEnd = new Regex(@"^\d\d:\d\d:\d\d:\d\d\t$", RegexOptions.Compiled);
var paragraph = new Paragraph();
ExpectingLine expecting = ExpectingLine.TimeStart;
var expecting = ExpectingLine.TimeStart;
_errorCount = 0;
subtitle.Paragraphs.Clear();
@ -139,18 +138,16 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
private static string EncodeTimeCode(TimeCode time)
{
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFramesMaxFrameRate(time.Milliseconds));
return time.ToHHMMSSFF();
}
private static TimeCode DecodeTimeCode(string[] parts)
{
string hour = parts[0];
string minutes = parts[1];
string seconds = parts[2];
string frames = parts[3];
TimeCode tc = new TimeCode(int.Parse(hour), int.Parse(minutes), int.Parse(seconds), FramesToMillisecondsMax999(int.Parse(frames)));
return tc;
var hour = int.Parse(parts[0]);
var minutes = int.Parse(parts[1]);
var seconds = int.Parse(parts[2]);
var frames = int.Parse(parts[3]);
return new TimeCode(hour, minutes, seconds, FramesToMillisecondsMax999(frames));
}
}

View File

@ -8,7 +8,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
{
public class UnknownSubtitle70 : SubtitleFormat
{
private static Regex _regexMicroDvdLine = new Regex(@"^\[-?\d+\]\[-?\d+\].*$", RegexOptions.Compiled);
private static readonly Regex _regexMicroDvdLine = new Regex(@"^\[-?\d+\]\[-?\d+\].*$", RegexOptions.Compiled);
public string Errors { get; private set; }
private StringBuilder _errors;
private int _lineNumber;
@ -563,4 +563,4 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
return i;
}
}
}
}

View File

@ -201,18 +201,17 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
private static string EncodeTimeCode(TimeCode time)
{
string s = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFramesMaxFrameRate(time.Milliseconds));
var s = time.ToHHMMSSFF();
return AddSpaces(s);
}
private static TimeCode DecodeTimeCode(string[] parts)
{
string hour = parts[0];
string minutes = parts[1];
string seconds = parts[2];
string frames = parts[3];
return new TimeCode(int.Parse(hour), int.Parse(minutes), int.Parse(seconds), FramesToMillisecondsMax999(int.Parse(frames)));
var hour = int.Parse(parts[0]);
var minutes = int.Parse(parts[1]);
var seconds = int.Parse(parts[2]);
var frames = int.Parse(parts[3]);
return new TimeCode(hour, minutes, seconds, FramesToMillisecondsMax999(frames));
}
}

View File

@ -9,7 +9,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
public class UnknownSubtitle73 : SubtitleFormat
{
//59:00:22:09:14 00:22:12:04 02:15
private static Regex regexTimeCodes = new Regex(@"^\d+:\d\d:\d\d:\d\d:\d\d \d\d:\d\d:\d\d:\d\d \d\d:\d\d$", RegexOptions.Compiled);
private static readonly Regex regexTimeCodes = new Regex(@"^\d+:\d\d:\d\d:\d\d:\d\d \d\d:\d\d:\d\d:\d\d \d\d:\d\d$", RegexOptions.Compiled);
public override string Extension
{
@ -123,14 +123,12 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
private static TimeCode DecodeTimeCode(string[] parts)
{
//00:00:07:12
string hour = parts[0];
string minutes = parts[1];
string seconds = parts[2];
string frames = parts[3];
TimeCode tc = new TimeCode(int.Parse(hour), int.Parse(minutes), int.Parse(seconds), FramesToMillisecondsMax999(int.Parse(frames)));
return tc;
var hour = int.Parse(parts[0]);
var minutes = int.Parse(parts[1]);
var seconds = int.Parse(parts[2]);
var frames = int.Parse(parts[3]);
return new TimeCode(hour, minutes, seconds, FramesToMillisecondsMax999(frames));
}
}
}
}