private List<Caption> parseCaptionFile(String videoId, MultipartFile file) {
List<Caption> captionList = new ArrayList<Caption>();
String language = getLanguage(file);
try (Reader inputStreamReader = new InputStreamReader(file.getInputStream(), "UTF-8");
BufferedReader reader = new BufferedReader(inputStreamReader);) {
String line;
Integer pos = 0;
Caption caption = null;
while ((line = reader.readLine()) != null) {
if (pos == 0) {
caption = new Caption(videoId, language);
}
pos++;
String lineContent = line.toString().trim();
if (StringUtils.isEmpty(lineContent)) {
pos = 0;
if (!Objects.isNull(caption)) {
captionList.add(caption);
}
continue;
}
if (pos == 1) {
log.info("line content is {}", lineContent);
caption.setIndex(lineContent);
continue;
}
if (pos == 2) {
log.info("line content is {}", lineContent);
convertTime(lineContent, caption);
continue;
}
if (pos >= 3) {
log.info("line content is {}", lineContent);
if (pos == 3) {
caption.setText(lineContent);
} else {
caption.setText(caption.getText() + "\n" + lineContent);
}
}
}
} catch (UnsupportedEncodingException e) {
log.error("caption info insert fail {}", e.getMessage());
} catch (IOException e) {
log.error("caption info insert fail {}", e.getMessage());
}
return captionList;
}