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

author Nemo <me@captnemo.in> 2017-06-11 1:53:12.0 +05:30:00
committer Nemo <me@captnemo.in> 2017-06-11 1:53:12.0 +05:30:00
commit
78fc7ccbe67f778495f98e06b0bf0c2576e77354 [patch]
tree
977ae4dfe7a94235c6b9b41bf9004f9de9610d00
parent
52f9594b03718fd5c3eb339a25b276d5d2f28e4a
download
78fc7ccbe67f778495f98e06b0bf0c2576e77354.tar.gz

Adds Artist guessing tests



Diff

 package-lock.json   | 302 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 package.json        |   6 ++++--
 parser.js           |  19 +++++++++++++++++--
 test/parser_test.js |   2 +-
 4 files changed, 322 insertions(+), 7 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index ed44cf9..b310f81 100644
--- a/package-lock.json
+++ a/package-lock.json
@@ -1,8 +1,28 @@
{
  "name": "youtube-ripper",
  "version": "1.0.0",
  "lockfileVersion": 1,
  "dependencies": {
    "ansi-regex": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
    },

    "ansi-styles": {
      "version": "2.2.1",
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
    },

    "array-find-index": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
    },

    "audio-extensions": {
      "version": "0.0.0",
      "resolved": "https://registry.npmjs.org/audio-extensions/-/audio-extensions-0.0.0.tgz",
      "integrity": "sha1-0O7+B3+562JYmO7ZmFiQVIzx+NI="
    },

    "balanced-match": {
      "version": "0.4.2",
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
@@ -20,6 +40,43 @@
      "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
      "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
      "dev": true
    },

    "builtin-modules": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
    },

    "camelcase": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
    },

    "camelcase-keys": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc="
    },

    "chalk": {
      "version": "1.1.3",
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
      "dependencies": {
        "supports-color": {
          "version": "2.0.0",
          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
        }

      }

    },

    "cli-cursor": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU="
    },

    "cli-spinners": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz",
      "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo="
    },

    "commander": {
      "version": "2.9.0",
@@ -38,11 +95,21 @@
      "resolved": "https://registry.npmjs.org/console-log-level/-/console-log-level-1.4.0.tgz",
      "integrity": "sha1-QDWBi+6jflhQoMA8jUUMpfLNEhc="
    },

    "currently-unhandled": {
      "version": "0.4.1",
      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o="
    },

    "debug": {
      "version": "2.6.0",
      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz",
      "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=",
      "dev": true
    },

    "decamelize": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
    },

    "diff": {
      "version": "3.2.0",
@@ -50,17 +117,36 @@
      "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=",
      "dev": true
    },

    "error-ex": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
      "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw="
    },

    "escape-string-regexp": {
      "version": "1.0.5",
      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
      "dev": true
      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
    },

    "find-up": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8="
    },

    "fs.realpath": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
      "dev": true
    },

    "get-artist-title": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/get-artist-title/-/get-artist-title-1.0.0.tgz",
      "integrity": "sha1-Du/eUAw0QncXMgY6kvOlDcbFDiw="
    },

    "get-stdin": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
    },

    "glob": {
      "version": "7.1.1",
@@ -68,6 +154,11 @@
      "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
      "dev": true
    },

    "graceful-fs": {
      "version": "4.1.11",
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
    },

    "graceful-readlink": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
@@ -80,12 +171,27 @@
      "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
      "dev": true
    },

    "has-ansi": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE="
    },

    "has-flag": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
      "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
      "dev": true
    },

    "hosted-git-info": {
      "version": "2.4.2",
      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz",
      "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc="
    },

    "indent-string": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA="
    },

    "inflight": {
      "version": "1.0.6",
      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -97,6 +203,26 @@
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
      "dev": true
    },

    "is-arrayish": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
    },

    "is-builtin-module": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74="
    },

    "is-finite": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko="
    },

    "is-utf8": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
    },

    "json3": {
      "version": "3.3.2",
@@ -104,6 +230,11 @@
      "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
      "dev": true
    },

    "load-json-file": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA="
    },

    "lodash._baseassign": {
      "version": "3.2.0",
      "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
@@ -157,6 +288,38 @@
      "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
      "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
      "dev": true
    },

    "log-symbols": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
      "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg="
    },

    "loud-rejection": {
      "version": "1.6.0",
      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8="
    },

    "map-obj": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
    },

    "meow": {
      "version": "3.7.0",
      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
      "dependencies": {
        "minimist": {
          "version": "1.2.0",
          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
        }

      }

    },

    "mimic-fn": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
      "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg="
    },

    "minimatch": {
      "version": "3.0.4",
@@ -188,23 +351,158 @@
      "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
      "dev": true
    },

    "normalize-package-data": {
      "version": "2.3.8",
      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz",
      "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs="
    },

    "number-is-nan": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
    },

    "object-assign": {
      "version": "4.1.1",
      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
    },

    "once": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
      "dev": true
    },

    "onetime": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ="
    },

    "ora": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/ora/-/ora-1.2.0.tgz",
      "integrity": "sha1-Mvsxg1AO/oP16okQF4Xw7mBg/sk="
    },

    "parse-json": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck="
    },

    "path-exists": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s="
    },

    "path-is-absolute": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
      "dev": true
    },

    "path-type": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE="
    },

    "pify": {
      "version": "2.3.0",
      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
    },

    "pinkie": {
      "version": "2.0.4",
      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
    },

    "pinkie-promise": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o="
    },

    "read-pkg": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg="
    },

    "read-pkg-up": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI="
    },

    "redent": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94="
    },

    "repeating": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo="
    },

    "restore-cursor": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368="
    },

    "semver": {
      "version": "5.3.0",
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
      "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
    },

    "signal-exit": {
      "version": "3.0.2",
      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
    },

    "spdx-correct": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
      "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A="
    },

    "spdx-expression-parse": {
      "version": "1.0.4",
      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
      "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw="
    },

    "spdx-license-ids": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
      "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc="
    },

    "strip-ansi": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8="
    },

    "strip-bom": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4="
    },

    "strip-indent": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI="
    },

    "supports-color": {
      "version": "3.1.2",
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz",
      "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=",
      "dev": true
    },

    "trim-newlines": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
    },

    "validate-npm-package-license": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
      "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w="
    },

    "video-extensions": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/video-extensions/-/video-extensions-1.1.0.tgz",
      "integrity": "sha1-6qhrRfKahTwrhz6djiO1E3Epl9Y="
    },

    "wrappy": {
      "version": "1.0.2",
diff --git a/package.json b/package.json
index a42eb2e..085990a 100644
--- a/package.json
+++ a/package.json
@@ -12,7 +12,10 @@
    "mocha": "^3.4.2"
  },

  "dependencies": {
    "console-log-level": "^1.4.0"
    "console-log-level": "^1.4.0",
    "get-artist-title": "^1.0.0",
    "meow": "^3.7.0",
    "ora": "^1.2.0"
  },

  "repository": {
    "type": "git",
@@ -30,7 +33,6 @@
    "cue",
    "ripper"
  ],

  "license": "MIT",
  "bugs": {
    "url": "https://github.com/captn3m0/youtube-ripper/issues"
  },

diff --git a/parser.js b/parser.js
index b35d048..657449a 100644
--- a/parser.js
+++ a/parser.js
@@ -1,5 +1,11 @@
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);
@@ -25,14 +31,23 @@
  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) {
  parse: function(text, options = { artist: 'Unknown' }) {
    _options = options;
    return text
      .split('\n')
      .filter(filterTimestamp)
      .map(parseTimeStamp)
      .map(parseTitle);
      .map(parseTitle)
      .map(parseArtist);
  },
};
diff --git a/test/parser_test.js b/test/parser_test.js
index a57cffb..bc7e75f 100644
--- a/test/parser_test.js
+++ a/test/parser_test.js
@@ -1,9 +1,9 @@
/*jshint esversion: 6 */
var assert = require('assert');
var parser = require('../parser');

const TEXT = `
00:40 Hello World
00:40 The Coders - Hello World
12:23 This is not the end
Something else in the middle
1:23:11 Not the last song