public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName)
        {
            _errorCount = 0;

            var sb = new StringBuilder();

            foreach (string s in lines)
            {
                sb.Append(s);
            }

            string allText        = sb.ToString();
            var    indexOfMainTag = allText.IndexOf("\"timestamp_begin\"", StringComparison.Ordinal);

            if (indexOfMainTag < 0)
            {
                return;
            }

            var indexOfSubtitles = allText.IndexOf("subtitles", StringComparison.Ordinal);

            if (indexOfSubtitles <= 0)
            {
                return;
            }

            var startText  = allText.Substring(0, indexOfSubtitles);
            var startIndex = startText.LastIndexOf('{');

            if (startIndex < 0)
            {
                return;
            }

            var json   = allText.Substring(startIndex);
            var parser = new SeJsonParser();
            var items  = parser.GetArrayElementsByName(json, "subtitles");

            foreach (var item in items)
            {
                var textLines = parser.GetArrayElementsByName(item, "text");
                var beginTime = parser.GetAllTagsByNameAsStrings(item, "timestamp_begin");
                var endTime   = parser.GetAllTagsByNameAsStrings(item, "timestamp_end");
                if (textLines.Count > 0 && beginTime.Count == 1 && endTime.Count == 1 &&
                    double.TryParse(beginTime[0], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var startSeconds) &&
                    double.TryParse(endTime[0], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var endSeconds))
                {
                    var text = new StringBuilder();
                    foreach (var line in textLines)
                    {
                        text.AppendLine(Json.DecodeJsonText(line));
                    }

                    var p = new Paragraph(text.ToString().Trim(), startSeconds * 1000.0, endSeconds * 1000.0);
                    subtitle.Paragraphs.Add(p);
                }
            }

            subtitle.RemoveEmptyLines();
            subtitle.Renumber();
        }
        public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName)
        {
            _errorCount = 0;

            var sb = new StringBuilder();

            foreach (string s in lines)
            {
                sb.Append(s);
            }

            if (!sb.ToString().Contains("\"words\":"))
            {
                return;
            }

            var temp = sb.ToString();

            while (temp.Contains("  "))
            {
                temp = temp.Replace("  ", " ");
            }

            temp = temp.Replace("}, {", "},{");
            temp = temp.Replace("} , {", "},{");
            temp = temp.Replace("} ,{", "},{");
            temp = temp.Substring(temp.IndexOf("\"words\":", StringComparison.Ordinal) + 10);
            Paragraph p = null;

            foreach (string line in temp.Replace("},{", Environment.NewLine).SplitToLines())
            {
                string s        = line.Trim() + "}";
                string start    = Json.ReadTag(s, "time");
                string duration = Json.ReadTag(s, "duration");
                string text     = Json.ReadTag(s, "name");
                if (start != null && duration != null && text != null)
                {
                    if (double.TryParse(start, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.InvariantCulture, out var startSeconds) &&
                        double.TryParse(duration, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.InvariantCulture, out var durationSeconds))
                    {
                        if ((text == "." || text == "!" || text == "?" || text == ":") && p != null)
                        {
                            p.EndTime.TotalMilliseconds += durationSeconds * TimeCode.BaseUnit;
                            p.Text += text;
                        }
                        else
                        {
                            p = new Paragraph(Json.DecodeJsonText(text), startSeconds * TimeCode.BaseUnit, (startSeconds + durationSeconds) * TimeCode.BaseUnit);
                            subtitle.Paragraphs.Add(p);
                        }
                    }
                    else
                    {
                        _errorCount++;
                    }
                }
                else
                {
                    _errorCount++;
                }
            }
            subtitle.Renumber();
        }