mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 14:32:35 +01:00
Add new subtitle format - thx Holmgeir :)
This commit is contained in:
parent
4a835ae955
commit
8671f56aa8
@ -574,7 +574,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
{
|
||||
new DlDd(), new Ted20(), new Captionate(), new TimeLineAscii(), new TimeLineFootageAscii(), new TimedTextImage(),
|
||||
new FinalCutProImage(), new SpuImage(), new Dost(), new SeImageHtmlIndex(), new BdnXml(), new Wsb(),
|
||||
new JsonTypeOnlyLoad1(), new TranscriptiveJson(), new KaraokeCdgCreatorText()
|
||||
new JsonTypeOnlyLoad1(), new TranscriptiveJson(), new KaraokeCdgCreatorText(), new VidIcelandic(),
|
||||
};
|
||||
}
|
||||
|
||||
|
72
libse/SubtitleFormats/VidIcelandic.cs
Normal file
72
libse/SubtitleFormats/VidIcelandic.cs
Normal file
@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
{
|
||||
public class VidIcelandic : SubtitleFormat
|
||||
{
|
||||
private static readonly Regex RegexTimeCodes = new Regex(@"^#S\d{14}$", RegexOptions.Compiled);
|
||||
|
||||
public override string Extension => ".vid";
|
||||
|
||||
public override string Name => "Vid Icelandic";
|
||||
|
||||
public override string ToText(Subtitle subtitle, string title)
|
||||
{
|
||||
return "Not implemented!";
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
{
|
||||
Paragraph p = null;
|
||||
subtitle.Paragraphs.Clear();
|
||||
_errorCount = 0;
|
||||
|
||||
if (!string.IsNullOrEmpty(fileName) && fileName.EndsWith(Extension, StringComparison.OrdinalIgnoreCase) && File.Exists(fileName))
|
||||
{
|
||||
lines = FileUtil.ReadAllLinesShared(fileName, Encoding.GetEncoding(861)); // icelandic dos encoding
|
||||
}
|
||||
|
||||
foreach (string line in lines)
|
||||
{
|
||||
if (line.StartsWith('#') && RegexTimeCodes.IsMatch(line))
|
||||
{
|
||||
var startTime = DecodeTimeCode(line);
|
||||
var endTime = DecodeDuration(startTime, line);
|
||||
p = new Paragraph(startTime, endTime, string.Empty);
|
||||
subtitle.Paragraphs.Add(p);
|
||||
}
|
||||
else if (line.Length > 11 && p != null && line.StartsWith('B'))
|
||||
{
|
||||
p.Text = (p.Text.TrimEnd() + Environment.NewLine + line.Remove(0, 11).Trim()).Trim();
|
||||
}
|
||||
else
|
||||
{
|
||||
_errorCount++;
|
||||
}
|
||||
}
|
||||
|
||||
subtitle.RemoveEmptyLines();
|
||||
subtitle.Renumber();
|
||||
}
|
||||
|
||||
private TimeCode DecodeTimeCode(string line)
|
||||
{
|
||||
var hour = line.Substring(2, 1);
|
||||
var minutes = line.Substring(3, 2);
|
||||
var seconds = line.Substring(5, 2);
|
||||
var frames = line.Substring(7, 2);
|
||||
return new TimeCode(int.Parse(hour), int.Parse(minutes), int.Parse(seconds), FramesToMillisecondsMax999(int.Parse(frames)));
|
||||
}
|
||||
|
||||
private TimeCode DecodeDuration(TimeCode startTime, string line)
|
||||
{
|
||||
var seconds = line.Substring(10, 2);
|
||||
var frames = line.Substring(12, 2);
|
||||
return new TimeCode(startTime.Hours, startTime.Minutes, startTime.Seconds + int.Parse(seconds), startTime.Milliseconds + FramesToMillisecondsMax999(int.Parse(frames)));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user