コード例 #1
0
        public Subtitle AutoGuessImport(List <string> lines)
        {
            var subtitle = ImportTimeCodesOnSameSeperateLine(lines);

            if (subtitle.Paragraphs.Count < 2)
            {
                subtitle = ImportTimeCodesAndTextOnSameLineOnlySpaceAsSeparator(lines);
            }

            var subTcAndTextOnSameLine = ImportTimeCodesAndTextOnSameLine(lines);

            if (subTcAndTextOnSameLine.Paragraphs.Count > subtitle.Paragraphs.Count)
            {
                subtitle = subTcAndTextOnSameLine;
            }

            var subTcOnAloneLines = ImportTimeCodesOnAloneLines(lines);

            if (subTcOnAloneLines.Paragraphs.Count > subtitle.Paragraphs.Count)
            {
                subtitle = subTcOnAloneLines;
            }

            if (subtitle.Paragraphs.Count < 2)
            {
                subtitle = ImportTimeCodesInFramesOnSameSeperateLine(lines);
                if (subtitle.Paragraphs.Count < 2)
                {
                    subtitle = ImportTimeCodesInFramesAndTextOnSameLine(lines);
                }
            }

            if (subtitle.Paragraphs.Count > 1)
            {
                CleanUp(subtitle);
            }

            if (subtitle.Paragraphs.Count < 2)
            {
                var jsonSubtitle = new UknownFormatImporterJson().AutoGuessImport(lines);
                if (jsonSubtitle != null && jsonSubtitle.Paragraphs.Count > 2)
                {
                    subtitle = jsonSubtitle;
                }
            }

            if (subtitle.Paragraphs.Count == 0 && lines.Count == 1 && lines[0].Contains(" --> "))
            {
                subtitle = ImportSubtitleWithNoLineBreaks(lines[0]);
            }

            return(subtitle);
        }
コード例 #2
0
        public Subtitle AutoGuessImport(string[] lines)
        {
            var subtitle = ImportTimeCodesOnSameSeperateLine(lines);

            if (subtitle.Paragraphs.Count < 2)
            {
                subtitle = ImportTimeCodesAndTextOnSameLineOnlySpaceAsSeparator(lines);
            }

            var subTcAndTextOnSameLine = ImportTimeCodesAndTextOnSameLine(lines);

            if (subTcAndTextOnSameLine.Paragraphs.Count > subtitle.Paragraphs.Count)
            {
                subtitle = subTcAndTextOnSameLine;
            }

            var subTcOnAloneLines = ImportTimeCodesOnAloneLines(lines);

            if (subTcOnAloneLines.Paragraphs.Count > subtitle.Paragraphs.Count)
            {
                subtitle = subTcOnAloneLines;
            }

            if (subtitle.Paragraphs.Count < 2)
            {
                subtitle = ImportTimeCodesInFramesOnSameSeperateLine(lines);
                if (subtitle.Paragraphs.Count < 2)
                {
                    subtitle = ImportTimeCodesInFramesAndTextOnSameLine(lines);
                }
            }

            if (subtitle.Paragraphs.Count > 1)
            {
                CleanUp(subtitle);
            }

            if (subtitle.Paragraphs.Count < 2)
            {
                var jsonSubtitle = new UknownFormatImporterJson().AutoGuessImport(lines);
                if (jsonSubtitle != null && jsonSubtitle.Paragraphs.Count > 2)
                {
                    subtitle = jsonSubtitle;
                }
            }

            return(subtitle);
        }
コード例 #3
0
        public Subtitle AutoGuessImport(List <string> lines)
        {
            var subtitle = ImportTimeCodesOnSameSeperateLine(lines);

            if (subtitle.Paragraphs.Count < 2)
            {
                subtitle = ImportTimeCodesAndTextOnSameLineOnlySpaceAsSeparator(lines);
            }

            var subTcAndTextOnSameLine = ImportTimeCodesAndTextOnSameLine(lines);

            if (subTcAndTextOnSameLine.Paragraphs.Count > subtitle.Paragraphs.Count)
            {
                subtitle = subTcAndTextOnSameLine;
            }

            var subTcOnAloneLines = ImportTimeCodesOnAloneLines(lines);

            if (subTcOnAloneLines.Paragraphs.Count > subtitle.Paragraphs.Count)
            {
                subtitle = subTcOnAloneLines;
            }

            if (subtitle.Paragraphs.Count < 2)
            {
                subtitle = ImportTimeCodesInFramesOnSameSeperateLine(lines);
                if (subtitle.Paragraphs.Count < 2)
                {
                    var sameLineSub = ImportTimeCodesInFramesAndTextOnSameLine(lines);
                    if (sameLineSub.Paragraphs.Count < 10 &&
                        (sameLineSub.Paragraphs.Count(p => p.Duration.TotalMilliseconds < 0) > 2 ||
                         sameLineSub.Paragraphs.Count(p => p.Text.Length > 100) > 1))
                    {
                        // probably not a subtitle
                    }
                    else if (sameLineSub.Paragraphs.Count < 20 &&
                             (sameLineSub.Paragraphs.Count(p => p.Duration.TotalMilliseconds < 0) > 8 ||
                              sameLineSub.Paragraphs.Count(p => p.Text.Length > 100) > 5))
                    {
                        // probably not a subtitle
                    }
                    else
                    {
                        subtitle = sameLineSub;
                    }
                }
            }

            if (subtitle.Paragraphs.Count > 1)
            {
                CleanUp(subtitle);
            }

            if (subtitle.Paragraphs.Count < 2)
            {
                var jsonSubtitle = new UknownFormatImporterJson().AutoGuessImport(lines);
                if (jsonSubtitle != null && jsonSubtitle.Paragraphs.Count > 2)
                {
                    subtitle = jsonSubtitle;
                }
            }

            if (subtitle.Paragraphs.Count == 0 && lines.Count == 1 && lines[0].Contains(" --> "))
            {
                subtitle = ImportSubtitleWithNoLineBreaks(lines[0]);
            }

            if (subtitle.Paragraphs.Count > 0 && lines.Count > 0 && lines.Count / subtitle.Paragraphs.Count > 25)
            { // no more than 25 raw lines per subtitle lines
                return(new Subtitle());
            }

            return(subtitle);
        }