Beispiel #1
0
// Parse SubRip file, retrieve subtitles infos.
// Subtitles read are saved in "Subtitles" container
QList<Subtitles> SubRipParser::open(FileReader file) {

    QStringList lines = file.lines();

    QRegExp time_regexp("^(\\d+):(\\d+):(\\d+),(\\d+)\\s-->\\s(\\d+):(\\d+):(\\d+),(\\d+)");

    QList<Subtitles> subtitles_list;

    for ( qint32 i = 0; i < lines.count(); i++ ) {

        // Read the subtitle time "start --> end"
        if ( time_regexp.exactMatch(lines[i]) ) {

            QString times = lines[i];
            times = times.remove(" ");

            QStringList times_list;
            times_list = times.split(QRegExp("-->"));
            times_list = times_list.replaceInStrings(",", ".");

            Subtitles new_subtitle;

            new_subtitle.setStartTime(times_list.first());
            new_subtitle.setEndTime(times_list.last());

            // If text line 1 exist, retrieve it
            if ( !( lines[i + 1].isEmpty() ) ) {

                TextLine text_line;
                TextFont text_font;

                text_line.setLine( AttributesConverter::plainTextToHtml(lines[i + 1]) );

                new_subtitle.setText(text_line, text_font);

                // If text line 2 exist, retrieve it
                if ( !( lines[i + 2].isEmpty() ) ) {

                    text_line.setLine( AttributesConverter::plainTextToHtml(lines[i + 2]) );

                    new_subtitle.setText(text_line, text_font);
                }
            }

            subtitles_list.append(new_subtitle);
        }
    }
    return subtitles_list;
}
Beispiel #2
0
bool SubRipParser::readSample(FileReader file) {

    QStringList lines = file.lines();
    QRegExp time_regexp("^(\\d+):(\\d+):(\\d+),(\\d+)\\s-->\\s(\\d+):(\\d+):(\\d+),(\\d+)");

        for ( qint16 i = 0; i < lines.count(); i++ ) {

            if ( time_regexp.exactMatch(lines[i]) ) {

                if ( lines[i - 1]  == "1" ) {

                    return true;
                }
            }
        }

        return false;
}