youtube-cue/parser.js

38 lines
828 B
JavaScript

const TS_REGEX = /((\d{1,2}:)?\d{1,2}:\d{1,2})/;
var filterTimestamp = function(line) {
return TS_REGEX.test(line);
};
var parseTimeStamp = function(line) {
let matches = line.match(TS_REGEX);
return {
timestamp: matches[0],
text: matches.input,
};
};
var parseTitle = function(obj) {
let i = obj.text.indexOf(obj.timestamp);
// See to the left of i and right of i
let left = obj.text.substr(0, i);
let right = obj.text.substr(i + obj.timestamp.length);
// Ties break in favor of right, right?
let title = left.length > right.length ? left : right;
title = title.trim();
return Object.assign({ title: title }, obj);
};
module.exports = {
parse: function(text) {
return text
.split('\n')
.filter(filterTimestamp)
.map(parseTimeStamp)
.map(parseTitle);
},
};