From b3d1380622c0e1b4e3a27494d33ef6a0061f58c2 Mon Sep 17 00:00:00 2001 From: niksedk Date: Sat, 17 Sep 2011 13:18:45 +0000 Subject: [PATCH] Fixing some stuff in DC Subtitleformat - thx Francisco :) git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@644 99eadd0c-20b8-1223-b5c4-2a2b2df33de2 --- src/Logic/SubtitleFormats/DCSubtitle.cs | 94 ++++++++++--------------- 1 file changed, 39 insertions(+), 55 deletions(-) diff --git a/src/Logic/SubtitleFormats/DCSubtitle.cs b/src/Logic/SubtitleFormats/DCSubtitle.cs index 5cf6b3ca2..d5f2f6868 100644 --- a/src/Logic/SubtitleFormats/DCSubtitle.cs +++ b/src/Logic/SubtitleFormats/DCSubtitle.cs @@ -8,26 +8,19 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats { // http://code.google.com/p/subtitleedit/issues/detail?id=18 +// // -// -// -//urn:uuid:0b8a1af2-2073-493c-aea1-fa6b5601101a -//Im Himmel unter der Erde -//de - Im Himmel unter der Erde -//de - Im Himmel unter der Erde -//2011-03-25T14:07:00 -//00:00:00:000 -//1 -//de -//24 1 -//24 -// -// -// -// -//Meine Mutter und meine Schwester, -// - +// 4EB245B8-4D3A-4158-9516-95DD20E8322E +// Unknown +// 1 +// Swedish +// +// +// DETTA HAR HÄNT... +// +// +// + class DCSubtitle : SubtitleFormat { public override string Extension @@ -55,7 +48,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats StringBuilder sb = new StringBuilder(); lines.ForEach(line => sb.AppendLine(line)); string xmlAsString = sb.ToString().Trim(); - if (xmlAsString.Contains("" + -@" urn:uuid:0b8a1af2-2073-493c-aea1-fa6b5601101a - [TITLE] - [TITLE] - [TITLE] - [DATE] - 00:00:00:000 - 1 - de - 24 1 - 24 - " + Environment.NewLine + -" " + Environment.NewLine + -" " + Environment.NewLine + -" " + Environment.NewLine + -" " + Environment.NewLine + -""; - XmlNode t = new XmlDocument().CreateElement("title"); - t.InnerText = title; - xmlStructure = xmlStructure.Replace("[TITLE]", t.InnerXml); - xmlStructure = xmlStructure.Replace("[DATE]", string.Format("{0:0000}:{1:00}:{2:00}T{3:HH:mm:ss}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now)); //2011-03-25T14:07:00 + string date = string.Format("{0:0000}:{1:00}:{2:00}T{3:HH:mm:ss}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now); //2011-03-25T14:07:00 + string xmlStructure = "" + Environment.NewLine + + " 4EB245B8-4D3A-4158-9516-95DD20E8322E" + Environment.NewLine + + " " + Environment.NewLine + + " 1" + Environment.NewLine + + " " + date + "" + Environment.NewLine + + " " + Utilities.AutoDetectGoogleLanguage(subtitle) + "" + Environment.NewLine + + " " + Environment.NewLine + + " " + Environment.NewLine + + " " + Environment.NewLine + + " " + Environment.NewLine + + ""; XmlDocument xml = new XmlDocument(); xml.LoadXml(xmlStructure); + xml.DocumentElement.SelectSingleNode("MovieTitle").InnerText = title; XmlNode mainListFont = xml.DocumentElement.SelectSingleNode("//SubtitleList/Font"); int no = 0; foreach (Paragraph p in subtitle.Paragraphs) { -// -//Meine Mutter und meine Schwester, -// XmlNode subNode = xml.CreateElement("Subtitle"); XmlAttribute id = xml.CreateAttribute("SpotNumber"); @@ -140,7 +117,6 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats end.InnerText = ConvertToTimeString(p.EndTime); subNode.Attributes.Append(end); -// Er hat uns allen geholfen: string[] lines = p.Text.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); int vPos = 1 + lines.Length * 7; bool isItalic = false; @@ -240,7 +216,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats XmlTextWriter writer = new XmlTextWriter(ms, Encoding.UTF8); writer.Formatting = Formatting.Indented; xml.Save(writer); - return Encoding.UTF8.GetString(ms.ToArray()).Trim(); + return Encoding.UTF8.GetString(ms.ToArray()).Trim().Replace("encoding=\"utf-8\"", "encoding=\"UTF-8\""); } public override void LoadSubtitle(Subtitle subtitle, List lines, string fileName) @@ -262,9 +238,6 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats { switch (innerNode.Name.ToString()) { - //case "br": - // pText.AppendLine(); - // break; case "Text": if (innerNode.Attributes["VPosition"] != null) { @@ -318,9 +291,20 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats private static TimeCode GetTimeCode(string s) { string[] parts = s.Split(new char[] { ':', '.', ',' }); - TimeSpan ts = new TimeSpan(0, int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2]), int.Parse(parts[3])); + + int milliseconds = (int)(int.Parse(parts[3]) / 249.0 * 1000); // 000 to 249 + if (milliseconds > 999) + milliseconds = 999; + + TimeSpan ts = new TimeSpan(0, int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2]), milliseconds); return new TimeCode(ts); } + + private static string ConvertToTimeString(TimeCode time) + { + return string.Format("{0:00}:{1:00}:{2:00}.{3:000}", time.Hours, time.Minutes, time.Seconds, time.Milliseconds / 4); + } + } }