🏡 index : github.com/captn3m0/youtube-cue.git

author Nemo <me@captnemo.in> 2018-06-02 16:30:34.0 +05:30:00
committer Nemo <me@captnemo.in> 2018-06-02 16:30:34.0 +05:30:00
commit
b6b159117d9b71b217c1cb003d12f16cc2793cdd [patch]
tree
bc556586650b93111c42f38c5f5d442b900af193
parent
f413aec6eabb8cc0a27ee9e9bd1a1be1afb4eaf3
download
b6b159117d9b71b217c1cb003d12f16cc2793cdd.tar.gz

move



Diff

 parser.js           | 53 -----------------------------------------------------
 src/parser.js       | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 test/ffmpeg.js      | 11 +++++++++++
 test/parser_test.js |  2 +-
 4 files changed, 65 insertions(+), 54 deletions(-)

diff --git a/parser.js b/parser.js
deleted file mode 100644
index 657449a..0000000 100644
--- a/parser.js
+++ /dev/null
@@ -1,53 +1,0 @@
var colors = require('mocha/lib/reporters/base').colors;

colors['pass'] = '30;42';

/*jshint esversion: 6 */
const TS_REGEX = /((\d{1,2}:)?\d{1,2}:\d{1,2})/;
const getArtistTitle = require('get-artist-title');
var _options = {};

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

var parseArtist = function(obj) {
  let [artist, title] = getArtistTitle(obj.title, {
    defaultArtist: _options.artist,
  });
  return Object.assign({ artist: artist, title: title }, obj);
};

module.exports = {
  parse: function(text, options = { artist: 'Unknown' }) {
    _options = options;
    return text
      .split('\n')
      .filter(filterTimestamp)
      .map(parseTimeStamp)
      .map(parseTitle)
      .map(parseArtist);
  },
};
diff --git a/src/parser.js b/src/parser.js
new file mode 100644
index 0000000..657449a 100644
--- /dev/null
+++ a/src/parser.js
@@ -1,0 +1,53 @@
var colors = require('mocha/lib/reporters/base').colors;

colors['pass'] = '30;42';

/*jshint esversion: 6 */
const TS_REGEX = /((\d{1,2}:)?\d{1,2}:\d{1,2})/;
const getArtistTitle = require('get-artist-title');
var _options = {};

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

var parseArtist = function(obj) {
  let [artist, title] = getArtistTitle(obj.title, {
    defaultArtist: _options.artist,
  });
  return Object.assign({ artist: artist, title: title }, obj);
};

module.exports = {
  parse: function(text, options = { artist: 'Unknown' }) {
    _options = options;
    return text
      .split('\n')
      .filter(filterTimestamp)
      .map(parseTimeStamp)
      .map(parseTitle)
      .map(parseArtist);
  },
};
diff --git a/test/ffmpeg.js b/test/ffmpeg.js
new file mode 100644
index 0000000..5e80373 100644
--- /dev/null
+++ a/test/ffmpeg.js
@@ -1,0 +1,11 @@
/*jshint esversion: 6 */
var assert = require('assert');
var ffmpeg = require('../src/ffmpeg');

describe('ffmpeg', function() {
  describe('setup', function() {
    it('should figure out if ffmpeg is installed', function() {
      assert.equal(parser.parse(TEXT).length, 3);
    });
  });
});
diff --git a/test/parser_test.js b/test/parser_test.js
index bc7e75f..f75bae9 100644
--- a/test/parser_test.js
+++ a/test/parser_test.js
@@ -1,6 +1,6 @@
/*jshint esversion: 6 */
var assert = require('assert');
var parser = require('../parser');
var parser = require('../src/parser');

const TEXT = `
00:40 The Coders - Hello World