// 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; }
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; }