mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 22:42:38 +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 DlDd(), new Ted20(), new Captionate(), new TimeLineAscii(), new TimeLineFootageAscii(), new TimedTextImage(),
|
||||||
new FinalCutProImage(), new SpuImage(), new Dost(), new SeImageHtmlIndex(), new BdnXml(), new Wsb(),
|
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