From 5b98c47c4c353be2360bef50420cc084dff99773 Mon Sep 17 00:00:00 2001 From: Andrew Prentice Date: Wed, 20 Jul 2016 12:04:08 -0400 Subject: [PATCH] fix(rhymebrain): rate-limiting and result output --- build/cmds/rhymebrain_cmds/rhyme.js | 49 ++++++++++++++++++++--------- src/cmds/rhymebrain_cmds/rhyme.js | 43 ++++++++++++++++++------- 2 files changed, 65 insertions(+), 27 deletions(-) diff --git a/build/cmds/rhymebrain_cmds/rhyme.js b/build/cmds/rhymebrain_cmds/rhyme.js index 6275d3a..8c913cd 100644 --- a/build/cmds/rhymebrain_cmds/rhyme.js +++ b/build/cmds/rhymebrain_cmds/rhyme.js @@ -42,7 +42,7 @@ exports.builder = { max: { alias: 'm', desc: 'Max results to return', - default: 50, + default: 5, type: 'number' } }; @@ -51,13 +51,14 @@ exports.handler = function (argv) { var config = noon.load(CFILE); var proceed = false; var stamp = new Date(config.rbrain.date.stamp); - var now = new Date(); - var diff = moment(now).diff(stamp, 'minutes'); - var reset = 60 - diff; + var now = moment(new Date()).diff(stamp, 'minutes'); + var diff = 60 - now; + var reset = false; if (diff < 60) { config.rbrain.date.remain = config.rbrain.date.remain - 1; noon.save(CFILE, config); } else if (diff >= 60) { + reset = true; config.rbrain.date.stamp = moment().format(); config.rbrain.date.remain = config.rbrain.date.limit; console.log(chalk.white('Reset API limit to ' + config.rbrain.date.limit + '/' + config.rbrain.date.interval + '.')); @@ -76,9 +77,11 @@ exports.handler = function (argv) { if (proceed) { (function () { var userConfig = { - rhyme: { - lang: argv.l, - max: argv.m + rbrain: { + rhyme: { + lang: argv.l, + max: argv.m + } } }; if (config.merge) config = _.merge({}, config, userConfig); @@ -102,22 +105,38 @@ exports.handler = function (argv) { var ctstyle = _.get(chalk, theme.content.style); needle.get(url, function (error, response) { if (!error && response.statusCode === 200) { + console.log(response.body); var list = response.body; - var rcont = []; + var lcont = []; for (var i = 0; i <= list.length - 1; i++) { var item = list[i]; - rcont.push(ctstyle('' + item.word)); - if (item.score >= 300) { - tofile[['hiscore' + i]] = item.word; + lcont.push(item.word); + } + lcont.sort(function (a, b) { + if (a < b) return -1; + if (a > b) return 1; + return 0; + }); + var rcont = []; + for (var j = 0; j <= lcont.length - 1; j++) { + var _item = lcont[j]; + rcont.push(ctstyle('' + _item.word)); + if (_item.score >= 300) { + tofile[['hiscore' + j]] = _item.word; } else { - tofile[['rhyme' + i]] = item.word; + tofile[['rhyme' + j]] = _item.word; } } - themes.labelRight('Rhymes', theme, rcont.join(',')); + rcont.sort(); + themes.labelRight('Rhymes', theme, rcont.join(', ')); if (argv.o) tools.outFile(argv.o, argv.f, tofile); if (argv.s && config.merge) noon.save(CFILE, config); if (argv.s && !config.merge) console.err(chalk.red('Set option merge to true!')); - console.log(config.rbrain.date.remain + '/' + config.rbrain.date.limit + ' requests remaining this hour, will reset in ' + reset + ' minutes.'); + if (reset) { + console.log(config.rbrain.date.remain + '/' + config.rbrain.date.limit + ' requests remaining this hour.'); + } else { + console.log(config.rbrain.date.remain + '/' + config.rbrain.date.limit + ' requests remaining this hour, will reset in ' + diff + ' minutes.'); + } } else { console.error(chalk.red.bold('HTTP ' + response.statusCode + ':') + ' ' + chalk.red(error)); } @@ -128,4 +147,4 @@ exports.handler = function (argv) { process.exit(1); } }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNtZHMvcmh5bWVicmFpbl9jbWRzL3JoeW1lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQSxJQUFNLFNBQVMsUUFBUSxjQUFSLENBQWY7QUFDQSxJQUFNLFFBQVEsUUFBUSxhQUFSLENBQWQ7O0FBRUEsSUFBTSxJQUFJLFFBQVEsUUFBUixDQUFWO0FBQ0EsSUFBTSxRQUFRLFFBQVEsT0FBUixDQUFkO0FBQ0EsSUFBTSxTQUFTLFFBQVEsUUFBUixDQUFmO0FBQ0EsSUFBTSxTQUFTLFFBQVEsUUFBUixDQUFmO0FBQ0EsSUFBTSxPQUFPLFFBQVEsTUFBUixDQUFiOztBQUVBLElBQU0sUUFBVyxRQUFRLEdBQVIsQ0FBWSxJQUF2QixxQkFBTjs7QUFFQSxRQUFRLE9BQVIsR0FBa0IsY0FBbEI7QUFDQSxRQUFRLElBQVIsR0FBZSxtQkFBZjtBQUNBLFFBQVEsT0FBUixHQUFrQjtBQUNoQixPQUFLO0FBQ0gsV0FBTyxHQURKO0FBRUgsVUFBTSwwQ0FGSDtBQUdILGFBQVMsRUFITjtBQUlILFVBQU07QUFKSCxHQURXO0FBT2hCLFNBQU87QUFDTCxXQUFPLEdBREY7QUFFTCxVQUFNLDJCQUZEO0FBR0wsYUFBUyxLQUhKO0FBSUwsVUFBTTtBQUpELEdBUFM7QUFhaEIsUUFBTTtBQUNKLFdBQU8sR0FESDtBQUVKLFVBQU0sMkJBRkY7QUFHSixhQUFTLEtBSEw7QUFJSixVQUFNO0FBSkYsR0FiVTtBQW1CaEIsUUFBTTtBQUNKLFdBQU8sR0FESDtBQUVKLFVBQU0seUJBRkY7QUFHSixhQUFTLElBSEw7QUFJSixVQUFNO0FBSkYsR0FuQlU7QUF5QmhCLE9BQUs7QUFDSCxXQUFPLEdBREo7QUFFSCxVQUFNLHVCQUZIO0FBR0gsYUFBUyxFQUhOO0FBSUgsVUFBTTtBQUpIO0FBekJXLENBQWxCO0FBZ0NBLFFBQVEsT0FBUixHQUFrQixVQUFDLElBQUQsRUFBVTtBQUMxQixRQUFNLFdBQU4sQ0FBa0IsS0FBbEI7QUFDQSxNQUFJLFNBQVMsS0FBSyxJQUFM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LHFEQUFvSCxLQUFwSDtBQUNELFNBakJELE1BaUJPO0FBQ0wsa0JBQVEsS0FBUixDQUFpQixNQUFNLEdBQU4sQ0FBVSxJQUFWLFdBQXVCLFNBQVMsVUFBaEMsT0FBakIsU0FBbUUsTUFBTSxHQUFOLENBQVUsS0FBVixDQUFuRTtBQUNEO0FBQ0YsT0FyQkQ7QUExQlc7QUFnRFosR0FoREQsTUFnRE87QUFDTCxZQUFRLEtBQVIsQ0FBYyxNQUFNLEdBQU4sMENBQWdELE9BQU8sTUFBUCxDQUFjLElBQWQsQ0FBbUIsS0FBbkUsT0FBZDtBQUNBLFlBQVEsSUFBUixDQUFhLENBQWI7QUFDRDtBQUNGLENBL0VEIiwiZmlsZSI6ImNtZHMvcmh5bWVicmFpbl9jbWRzL3JoeW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG1heC1sZW46MCAqL1xuY29uc3QgdGhlbWVzID0gcmVxdWlyZSgnLi4vLi4vdGhlbWVzJylcbmNvbnN0IHRvb2xzID0gcmVxdWlyZSgnLi4vLi4vdG9vbHMnKVxuXG5jb25zdCBfID0gcmVxdWlyZSgnbG9kYXNoJylcbmNvbnN0IGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKVxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50JylcbmNvbnN0IG5lZWRsZSA9IHJlcXVpcmUoJ25lZWRsZScpXG5jb25zdCBub29uID0gcmVxdWlyZSgnbm9vbicpXG5cbmNvbnN0IENGSUxFID0gYCR7cHJvY2Vzcy5lbnYuSE9NRX0vLmxleGltYXZlbi5ub29uYFxuXG5leHBvcnRzLmNvbW1hbmQgPSAncmh5bWUgPHdvcmQ+J1xuZXhwb3J0cy5kZXNjID0gJ1JoeW1lYnJhaW4gcmh5bWVzJ1xuZXhwb3J0cy5idWlsZGVyID0ge1xuICBvdXQ6IHtcbiAgICBhbGlhczogJ28nLFxuICAgIGRlc2M6ICdXcml0ZSBjc29uLCBqc29uLCBub29uLCBwbGlzdCwgeWFtbCwgeG1sJyxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgfSxcbiAgZm9yY2U6IHtcbiAgICBhbGlhczogJ2YnLFxuICAgIGRlc2M6ICdGb3JjZSBvdmVyd3JpdGluZyBvdXRmaWxlJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gIH0sXG4gIHNhdmU6IHtcbiAgICBhbGlhczogJ3MnLFxuICAgIGRlc2M6ICdTYXZlIGZsYWdzIHRvIGNvbmZpZyBmaWxlJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gIH0sXG4gIGxhbmc6IHtcbiAgICBhbGlhczogJ2wnLFxuICAgIGRlc2M6ICdJU08gNjM5LTEgbGFuZ3VhZ2UgY29kZScsXG4gICAgZGVmYXVsdDogJ2VuJyxcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgfSxcbiAgbWF4OiB7XG4gICAgYWxpYXM6ICdtJyxcbiAgICBkZXNjOiAnTWF4IHJlc3VsdHMgdG8gcmV0dXJuJyxcbiAgICBkZWZhdWx0OiA1MCxcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgfSxcbn1cbmV4cG9ydHMuaGFuZGxlciA9IChhcmd2KSA9PiB7XG4gIHRvb2xzLmNoZWNrQ29uZmlnKENGSUxFKVxuICBsZXQgY29uZmlnID0gbm9vbi5sb2FkKENGSUxFKVxuICBsZXQgcHJvY2VlZCA9IGZhbHNlXG4gIGNvbnN0IHN0YW1wID0gbmV3IERhdGUoY29uZmlnLnJicmFpbi5kYXRlLnN0YW1wKVxuICBjb25zdCBub3cgPSBuZXcgRGF0ZVxuICBjb25zdCBkaWZmID0gbW9tZW50KG5vdykuZGlmZihzdGFtcCwgJ21pbnV0ZXMnKVxuICBjb25zdCByZXNldCA9IDYwIC0gZGlmZlxuICBpZiAoZGlmZiA8IDYwKSB7XG4gICAgY29uZmlnLnJicmFpbi5kYXRlLnJlbWFpbiA9IGNvbmZpZy5yYnJhaW4uZGF0ZS5yZW1haW4gLSAxXG4gICAgbm9vbi5zYXZlKENGSUxFLCBjb25maWcpXG4gIH0gZWxzZSBpZiAoZGlmZiA+PSA2MCkge1xuICAgIGNvbmZpZy5yYnJhaW4uZGF0ZS5zdGFtcCA9IG1vbWVudCgpLmZvcm1hdCgpXG4gICAgY29uZmlnLnJicmFpbi5kYXRlLnJlbWFpbiA9IGNvbmZpZy5yYnJhaW4uZGF0ZS5saW1pdFxuICAgIGNvbnNvbGUubG9nKGNoYWxrLndoaXRlKGBSZXNldCBBUEkgbGltaXQgdG8gJHtjb25maWcucmJyYWluLmRhdGUubGltaXR9LyR7Y29uZmlnLnJicmFpbi5kYXRlLmludGVydmFsfS5gKSlcbiAgICBjb25maWcucmJyYWluLmRhdGUucmVtYWluID0gY29uZmlnLnJicmFpbi5kYXRlLnJlbWFpbiAtIDFcbiAgICBub29uLnNhdmUoQ0ZJTEUsIGNvbmZpZylcbiAgfVxuICBpZiAoY29uZmlnLnJicmFpbi5kYXRlLnJlbWFpbiA9PT0gMCkge1xuICAgIHByb2NlZWQgPSBmYWxzZVxuICB9IGVsc2UgaWYgKGNvbmZpZy5yYnJhaW4uZGF0ZS5yZW1haW4gPCAwKSB7XG4gICAgcHJvY2VlZCA9IGZhbHNlXG4gICAgY29uZmlnLnJicmFpbi5kYXRlLnJlbWFpbiA9IDBcbiAgICBub29uLnNhdmUoQ0ZJTEUsIGNvbmZpZylcbiAgfSBlbHNlIHtcbiAgICBwcm9jZWVkID0gdHJ1ZVxuICB9XG4gIGlmIChwcm9jZWVkKSB7XG4gICAgY29uc3QgdXNlckNvbmZpZyA9IHtcbiAgICAgIHJoeW1lOiB7XG4gICAgICAgIGxhbmc6IGFyZ3YubCxcbiAgICAgICAgbWF4OiBhcmd2Lm0sXG4gICAgICB9LFxuICAgIH1cbiAgICBpZiAoY29uZmlnLm1lcmdlKSBjb25maWcgPSBfLm1lcmdlKHt9LCBjb25maWcsIHVzZXJDb25maWcpXG4gICAgY29uc3QgdGhlbWUgPSB0aGVtZXMubG9hZFRoZW1lKGNvbmZpZy50aGVtZSlcbiAgICBpZiAoY29uZmlnLnZlcmJvc2UpIHRoZW1lcy5sYWJlbERvd24oJ1JoeW1lYnJhaW4nLCB0aGVtZSwgbnVsbClcbiAgICBjb25zdCB3b3JkID0gYXJndi53b3JkXG4gICAgY29uc3QgdGFzayA9ICdSaHltZXMnXG4gICAgY29uc3QgcHJlZml4ID0gJ2h0dHA6Ly9yaHltZWJyYWluLmNvbS90YWxrP2Z1bmN0aW9uPWdldCdcbiAgICBjb25zdCB1cmkgPSBgJHtwcmVmaXh9JHt0YXNrfSZ3b3JkPSR7d29yZH0mYFxuICAgIGNvbnN0IHBjb250ID0gW11cbiAgICBwY29udC5wdXNoKGBsYW5nPSR7Y29uZmlnLnJicmFpbi5yaHltZS5sYW5nfSZgKVxuICAgIHBjb250LnB1c2goYG1heFJlc3VsdHM9JHtjb25maWcucmJyYWluLnJoeW1lLm1heH0mYClcbiAgICBjb25zdCByZXN0ID0gcGNvbnQuam9pbignJylcbiAgICBsZXQgdXJsID0gYCR7dXJpfSR7cmVzdH1gXG4gICAgdXJsID0gZW5jb2RlVVJJKHVybClcbiAgICBjb25zdCB0b2ZpbGUgPSB7XG4gICAgICB0eXBlOiAncmh5bWUnLFxuICAgICAgc291cmNlOiAnaHR0cDovL3JoeW1lYnJhaW4uY29tJyxcbiAgICAgIHVybCxcbiAgICB9XG4gICAgY29uc3QgY3RzdHlsZSA9IF8uZ2V0KGNoYWxrLCB0aGVtZS5jb250ZW50LnN0eWxlKVxuICAgIG5lZWRsZS5nZXQodXJsLCAoZXJyb3IsIHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAoIWVycm9yICYmIHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgICBjb25zdCBsaXN0ID0gcmVzcG9uc2UuYm9keVxuICAgICAgICBjb25zdCByY29udCA9IFtdXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGxpc3QubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IGxpc3RbaV1cbiAgICAgICAgICByY29udC5wdXNoKGN0c3R5bGUoYCR7aXRlbS53b3JkfWApKVxuICAgICAgICAgIGlmIChpdGVtLnNjb3JlID49IDMwMCkge1xuICAgICAgICAgICAgdG9maWxlW1tgaGlzY29yZSR7aX1gXV0gPSBpdGVtLndvcmRcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9maWxlW1tgcmh5bWUke2l9YF1dID0gaXRlbS53b3JkXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoZW1lcy5sYWJlbFJpZ2h0KCdSaHltZXMnLCB0aGVtZSwgcmNvbnQuam9pbignLCcpKVxuICAgICAgICBpZiAoYXJndi5vKSB0b29scy5vdXRGaWxlKGFyZ3YubywgYXJndi5mLCB0b2ZpbGUpXG4gICAgICAgIGlmIChhcmd2LnMgJiYgY29uZmlnLm1lcmdlKSBub29uLnNhdmUoQ0ZJTEUsIGNvbmZpZylcbiAgICAgICAgaWYgKGFyZ3YucyAmJiAhY29uZmlnLm1lcmdlKSBjb25zb2xlLmVycihjaGFsay5yZWQoJ1NldCBvcHRpb24gbWVyZ2UgdG8gdHJ1ZSEnKSlcbiAgICAgICAgY29uc29sZS5sb2coYCR7Y29uZmlnLnJicmFpbi5kYXRlLnJlbWFpbn0vJHtjb25maWcucmJyYWluLmRhdGUubGltaXR9IHJlcXVlc3RzIHJlbWFpbmluZyB0aGlzIGhvdXIsIHdpbGwgcmVzZXQgaW4gJHtyZXNldH0gbWludXRlcy5gKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgJHtjaGFsay5yZWQuYm9sZChgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9OmApfSAke2NoYWxrLnJlZChlcnJvcil9YClcbiAgICAgIH1cbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGBSZWFjaGVkIHRoaXMgaG91cidzIHVzYWdlIGxpbWl0IG9mICR7Y29uZmlnLnJicmFpbi5kYXRlLmxpbWl0fS5gKSlcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxufVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNtZHMvcmh5bWVicmFpbl9jbWRzL3JoeW1lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQSxJQUFNLFNBQVMsUUFBUSxjQUFSLENBQWY7QUFDQSxJQUFNLFFBQVEsUUFBUSxhQUFSLENBQWQ7O0FBRUEsSUFBTSxJQUFJLFFBQVEsUUFBUixDQUFWO0FBQ0EsSUFBTSxRQUFRLFFBQVEsT0FBUixDQUFkO0FBQ0EsSUFBTSxTQUFTLFFBQVEsUUFBUixDQUFmO0FBQ0EsSUFBTSxTQUFTLFFBQVEsUUFBUixDQUFmO0FBQ0EsSUFBTSxPQUFPLFFBQVEsTUFBUixDQUFiOztBQUVBLElBQU0sUUFBVyxRQUFRLEdBQVIsQ0FBWSxJQUF2QixxQkFBTjs7QUFFQSxRQUFRLE9BQVIsR0FBa0IsY0FBbEI7QUFDQSxRQUFRLElBQVIsR0FBZSxtQkFBZjtBQUNBLFFBQVEsT0FBUixHQUFrQjtBQUNoQixPQUFLO0FBQ0gsV0FBTyxHQURKO0FBRUgsVUFBTSwwQ0FGSDtBQUdILGFBQVMsRUFITjtBQUlILFVBQU07QUFKSCxHQURXO0FBT2hCLFNBQU87QUFDTCxXQUFPLEdBREY7QUFFTCxVQUFNLDJCQUZEO0FBR0wsYUFBUyxLQUhKO0FBSUwsVUFBTTtBQUpELEdBUFM7QUFhaEIsUUFBTTtBQUNKLFdBQU8sR0FESDtBQUVKLFVBQU0sMkJBRkY7QUFHSixhQUFTLEtBSEw7QUFJSixVQUFNO0FBSkYsR0FiVTtBQW1CaEIsUUFBTTtBQUNKLFdBQU8sR0FESDtBQUVKLFVBQU0seUJBRkY7QUFHSixhQUFTLElBSEw7QUFJSixVQUFNO0FBSkYsR0FuQlU7QUF5QmhCLE9BQUs7QUFDSCxXQUFPLEdBREo7QUFFSCxVQUFNLHVCQUZIO0FBR0gsYUFBUyxDQUhOO0FBSUgsVUFBTTtBQUpIO0FBekJXLENBQWxCO0FBZ0NBLFFBQVEsT0FBUixHQUFrQixVQUFDLElBQUQsRUFBVTtBQUMxQixRQUFNLFdBQU4sQ0FBa0IsS0FBbEI7QUFDQSxNQUFJLFNBQVMsS0FBSyxJQUFM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TyxVQUFQLENBQWtCLFFBQWxCLEVBQTRCLEtBQTVCLEVBQW1DLE1BQU0sSUFBTixDQUFXLElBQVgsQ0FBbkM7QUFDQSxjQUFJLEtBQUssQ0FBVCxFQUFZLE1BQU0sT0FBTixDQUFjLEtBQUssQ0FBbkIsRUFBc0IsS0FBSyxDQUEzQixFQUE4QixNQUE5QjtBQUNaLGNBQUksS0FBSyxDQUFMLElBQVUsT0FBTyxLQUFyQixFQUE0QixLQUFLLElBQUwsQ0FBVSxLQUFWLEVBQWlCLE1BQWpCO0FBQzVCLGNBQUksS0FBSyxDQUFMLElBQVUsQ0FBQyxPQUFPLEtBQXRCLEVBQTZCLFFBQVEsR0FBUixDQUFZLE1BQU0sR0FBTixDQUFVLDJCQUFWLENBQVo7QUFDN0IsY0FBSSxLQUFKLEVBQVc7QUFDVCxvQkFBUSxHQUFSLENBQWUsT0FBTyxNQUFQLENBQWMsSUFBZCxDQUFtQixNQUFsQyxTQUE0QyxPQUFPLE1BQVAsQ0FBYyxJQUFkLENBQW1CLEtBQS9EO0FBQ0QsV0FGRCxNQUVPO0FBQ0wsb0JBQVEsR0FBUixDQUFlLE9BQU8sTUFBUCxDQUFjLElBQWQsQ0FBbUIsTUFBbEMsU0FBNEMsT0FBTyxNQUFQLENBQWMsSUFBZCxDQUFtQixLQUEvRCxxREFBb0gsSUFBcEg7QUFDRDtBQUNGLFNBakNELE1BaUNPO0FBQ0wsa0JBQVEsS0FBUixDQUFpQixNQUFNLEdBQU4sQ0FBVSxJQUFWLFdBQXVCLFNBQVMsVUFBaEMsT0FBakIsU0FBbUUsTUFBTSxHQUFOLENBQVUsS0FBVixDQUFuRTtBQUNEO0FBQ0YsT0FyQ0Q7QUE1Qlc7QUFrRVosR0FsRUQsTUFrRU87QUFDTCxZQUFRLEtBQVIsQ0FBYyxNQUFNLEdBQU4sMENBQWdELE9BQU8sTUFBUCxDQUFjLElBQWQsQ0FBbUIsS0FBbkUsT0FBZDtBQUNBLFlBQVEsSUFBUixDQUFhLENBQWI7QUFDRDtBQUNGLENBbEdEIiwiZmlsZSI6ImNtZHMvcmh5bWVicmFpbl9jbWRzL3JoeW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG1heC1sZW46MCAqL1xuY29uc3QgdGhlbWVzID0gcmVxdWlyZSgnLi4vLi4vdGhlbWVzJylcbmNvbnN0IHRvb2xzID0gcmVxdWlyZSgnLi4vLi4vdG9vbHMnKVxuXG5jb25zdCBfID0gcmVxdWlyZSgnbG9kYXNoJylcbmNvbnN0IGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKVxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50JylcbmNvbnN0IG5lZWRsZSA9IHJlcXVpcmUoJ25lZWRsZScpXG5jb25zdCBub29uID0gcmVxdWlyZSgnbm9vbicpXG5cbmNvbnN0IENGSUxFID0gYCR7cHJvY2Vzcy5lbnYuSE9NRX0vLmxleGltYXZlbi5ub29uYFxuXG5leHBvcnRzLmNvbW1hbmQgPSAncmh5bWUgPHdvcmQ+J1xuZXhwb3J0cy5kZXNjID0gJ1JoeW1lYnJhaW4gcmh5bWVzJ1xuZXhwb3J0cy5idWlsZGVyID0ge1xuICBvdXQ6IHtcbiAgICBhbGlhczogJ28nLFxuICAgIGRlc2M6ICdXcml0ZSBjc29uLCBqc29uLCBub29uLCBwbGlzdCwgeWFtbCwgeG1sJyxcbiAgICBkZWZhdWx0OiAnJyxcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgfSxcbiAgZm9yY2U6IHtcbiAgICBhbGlhczogJ2YnLFxuICAgIGRlc2M6ICdGb3JjZSBvdmVyd3JpdGluZyBvdXRmaWxlJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gIH0sXG4gIHNhdmU6IHtcbiAgICBhbGlhczogJ3MnLFxuICAgIGRlc2M6ICdTYXZlIGZsYWdzIHRvIGNvbmZpZyBmaWxlJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gIH0sXG4gIGxhbmc6IHtcbiAgICBhbGlhczogJ2wnLFxuICAgIGRlc2M6ICdJU08gNjM5LTEgbGFuZ3VhZ2UgY29kZScsXG4gICAgZGVmYXVsdDogJ2VuJyxcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgfSxcbiAgbWF4OiB7XG4gICAgYWxpYXM6ICdtJyxcbiAgICBkZXNjOiAnTWF4IHJlc3VsdHMgdG8gcmV0dXJuJyxcbiAgICBkZWZhdWx0OiA1LFxuICAgIHR5cGU6ICdudW1iZXInLFxuICB9LFxufVxuZXhwb3J0cy5oYW5kbGVyID0gKGFyZ3YpID0+IHtcbiAgdG9vbHMuY2hlY2tDb25maWcoQ0ZJTEUpXG4gIGxldCBjb25maWcgPSBub29uLmxvYWQoQ0ZJTEUpXG4gIGxldCBwcm9jZWVkID0gZmFsc2VcbiAgY29uc3Qgc3RhbXAgPSBuZXcgRGF0ZShjb25maWcucmJyYWluLmRhdGUuc3RhbXApXG4gIGNvbnN0IG5vdyA9IG1vbWVudChuZXcgRGF0ZSkuZGlmZihzdGFtcCwgJ21pbnV0ZXMnKVxuICBjb25zdCBkaWZmID0gNjAgLSBub3dcbiAgbGV0IHJlc2V0ID0gZmFsc2VcbiAgaWYgKGRpZmYgPCA2MCkge1xuICAgIGNvbmZpZy5yYnJhaW4uZGF0ZS5yZW1haW4gPSBjb25maWcucmJyYWluLmRhdGUucmVtYWluIC0gMVxuICAgIG5vb24uc2F2ZShDRklMRSwgY29uZmlnKVxuICB9IGVsc2UgaWYgKGRpZmYgPj0gNjApIHtcbiAgICByZXNldCA9IHRydWVcbiAgICBjb25maWcucmJyYWluLmRhdGUuc3RhbXAgPSBtb21lbnQoKS5mb3JtYXQoKVxuICAgIGNvbmZpZy5yYnJhaW4uZGF0ZS5yZW1haW4gPSBjb25maWcucmJyYWluLmRhdGUubGltaXRcbiAgICBjb25zb2xlLmxvZyhjaGFsay53aGl0ZShgUmVzZXQgQVBJIGxpbWl0IHRvICR7Y29uZmlnLnJicmFpbi5kYXRlLmxpbWl0fS8ke2NvbmZpZy5yYnJhaW4uZGF0ZS5pbnRlcnZhbH0uYCkpXG4gICAgY29uZmlnLnJicmFpbi5kYXRlLnJlbWFpbiA9IGNvbmZpZy5yYnJhaW4uZGF0ZS5yZW1haW4gLSAxXG4gICAgbm9vbi5zYXZlKENGSUxFLCBjb25maWcpXG4gIH1cbiAgaWYgKGNvbmZpZy5yYnJhaW4uZGF0ZS5yZW1haW4gPT09IDApIHtcbiAgICBwcm9jZWVkID0gZmFsc2VcbiAgfSBlbHNlIGlmIChjb25maWcucmJyYWluLmRhdGUucmVtYWluIDwgMCkge1xuICAgIHByb2NlZWQgPSBmYWxzZVxuICAgIGNvbmZpZy5yYnJhaW4uZGF0ZS5yZW1haW4gPSAwXG4gICAgbm9vbi5zYXZlKENGSUxFLCBjb25maWcpXG4gIH0gZWxzZSB7XG4gICAgcHJvY2VlZCA9IHRydWVcbiAgfVxuICBpZiAocHJvY2VlZCkge1xuICAgIGNvbnN0IHVzZXJDb25maWcgPSB7XG4gICAgICByYnJhaW46IHtcbiAgICAgICAgcmh5bWU6IHtcbiAgICAgICAgICBsYW5nOiBhcmd2LmwsXG4gICAgICAgICAgbWF4OiBhcmd2Lm0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgICBpZiAoY29uZmlnLm1lcmdlKSBjb25maWcgPSBfLm1lcmdlKHt9LCBjb25maWcsIHVzZXJDb25maWcpXG4gICAgY29uc3QgdGhlbWUgPSB0aGVtZXMubG9hZFRoZW1lKGNvbmZpZy50aGVtZSlcbiAgICBpZiAoY29uZmlnLnZlcmJvc2UpIHRoZW1lcy5sYWJlbERvd24oJ1JoeW1lYnJhaW4nLCB0aGVtZSwgbnVsbClcbiAgICBjb25zdCB3b3JkID0gYXJndi53b3JkXG4gICAgY29uc3QgdGFzayA9ICdSaHltZXMnXG4gICAgY29uc3QgcHJlZml4ID0gJ2h0dHA6Ly9yaHltZWJyYWluLmNvbS90YWxrP2Z1bmN0aW9uPWdldCdcbiAgICBjb25zdCB1cmkgPSBgJHtwcmVmaXh9JHt0YXNrfSZ3b3JkPSR7d29yZH0mYFxuICAgIGNvbnN0IHBjb250ID0gW11cbiAgICBwY29udC5wdXNoKGBsYW5nPSR7Y29uZmlnLnJicmFpbi5yaHltZS5sYW5nfSZgKVxuICAgIHBjb250LnB1c2goYG1heFJlc3VsdHM9JHtjb25maWcucmJyYWluLnJoeW1lLm1heH0mYClcbiAgICBjb25zdCByZXN0ID0gcGNvbnQuam9pbignJylcbiAgICBsZXQgdXJsID0gYCR7dXJpfSR7cmVzdH1gXG4gICAgdXJsID0gZW5jb2RlVVJJKHVybClcbiAgICBjb25zdCB0b2ZpbGUgPSB7XG4gICAgICB0eXBlOiAncmh5bWUnLFxuICAgICAgc291cmNlOiAnaHR0cDovL3JoeW1lYnJhaW4uY29tJyxcbiAgICAgIHVybCxcbiAgICB9XG4gICAgY29uc3QgY3RzdHlsZSA9IF8uZ2V0KGNoYWxrLCB0aGVtZS5jb250ZW50LnN0eWxlKVxuICAgIG5lZWRsZS5nZXQodXJsLCAoZXJyb3IsIHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAoIWVycm9yICYmIHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZS5ib2R5KVxuICAgICAgICBjb25zdCBsaXN0ID0gcmVzcG9uc2UuYm9keVxuICAgICAgICBjb25zdCBsY29udCA9IFtdXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGxpc3QubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IGxpc3RbaV1cbiAgICAgICAgICBsY29udC5wdXNoKGl0ZW0ud29yZClcbiAgICAgICAgfVxuICAgICAgICBsY29udC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTFcbiAgICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxXG4gICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmNvbnQgPSBbXVxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8PSBsY29udC5sZW5ndGggLSAxOyBqKyspIHtcbiAgICAgICAgICBjb25zdCBpdGVtID0gbGNvbnRbal1cbiAgICAgICAgICByY29udC5wdXNoKGN0c3R5bGUoYCR7aXRlbS53b3JkfWApKVxuICAgICAgICAgIGlmIChpdGVtLnNjb3JlID49IDMwMCkge1xuICAgICAgICAgICAgdG9maWxlW1tgaGlzY29yZSR7an1gXV0gPSBpdGVtLndvcmRcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9maWxlW1tgcmh5bWUke2p9YF1dID0gaXRlbS53b3JkXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJjb250LnNvcnQoKVxuICAgICAgICB0aGVtZXMubGFiZWxSaWdodCgnUmh5bWVzJywgdGhlbWUsIHJjb250LmpvaW4oJywgJykpXG4gICAgICAgIGlmIChhcmd2Lm8pIHRvb2xzLm91dEZpbGUoYXJndi5vLCBhcmd2LmYsIHRvZmlsZSlcbiAgICAgICAgaWYgKGFyZ3YucyAmJiBjb25maWcubWVyZ2UpIG5vb24uc2F2ZShDRklMRSwgY29uZmlnKVxuICAgICAgICBpZiAoYXJndi5zICYmICFjb25maWcubWVyZ2UpIGNvbnNvbGUuZXJyKGNoYWxrLnJlZCgnU2V0IG9wdGlvbiBtZXJnZSB0byB0cnVlIScpKVxuICAgICAgICBpZiAocmVzZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHtjb25maWcucmJyYWluLmRhdGUucmVtYWlufS8ke2NvbmZpZy5yYnJhaW4uZGF0ZS5saW1pdH0gcmVxdWVzdHMgcmVtYWluaW5nIHRoaXMgaG91ci5gKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAke2NvbmZpZy5yYnJhaW4uZGF0ZS5yZW1haW59LyR7Y29uZmlnLnJicmFpbi5kYXRlLmxpbWl0fSByZXF1ZXN0cyByZW1haW5pbmcgdGhpcyBob3VyLCB3aWxsIHJlc2V0IGluICR7ZGlmZn0gbWludXRlcy5gKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGAke2NoYWxrLnJlZC5ib2xkKGBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX06YCl9ICR7Y2hhbGsucmVkKGVycm9yKX1gKVxuICAgICAgfVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihjaGFsay5yZWQoYFJlYWNoZWQgdGhpcyBob3VyJ3MgdXNhZ2UgbGltaXQgb2YgJHtjb25maWcucmJyYWluLmRhdGUubGltaXR9LmApKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/src/cmds/rhymebrain_cmds/rhyme.js b/src/cmds/rhymebrain_cmds/rhyme.js index 434fe70..0ce0f63 100644 --- a/src/cmds/rhymebrain_cmds/rhyme.js +++ b/src/cmds/rhymebrain_cmds/rhyme.js @@ -40,7 +40,7 @@ exports.builder = { max: { alias: 'm', desc: 'Max results to return', - default: 50, + default: 5, type: 'number', }, } @@ -49,13 +49,14 @@ exports.handler = (argv) => { let config = noon.load(CFILE) let proceed = false const stamp = new Date(config.rbrain.date.stamp) - const now = new Date - const diff = moment(now).diff(stamp, 'minutes') - const reset = 60 - diff + const now = moment(new Date).diff(stamp, 'minutes') + const diff = 60 - now + let reset = false if (diff < 60) { config.rbrain.date.remain = config.rbrain.date.remain - 1 noon.save(CFILE, config) } else if (diff >= 60) { + reset = true config.rbrain.date.stamp = moment().format() config.rbrain.date.remain = config.rbrain.date.limit console.log(chalk.white(`Reset API limit to ${config.rbrain.date.limit}/${config.rbrain.date.interval}.`)) @@ -73,9 +74,11 @@ exports.handler = (argv) => { } if (proceed) { const userConfig = { - rhyme: { - lang: argv.l, - max: argv.m, + rbrain: { + rhyme: { + lang: argv.l, + max: argv.m, + }, }, } if (config.merge) config = _.merge({}, config, userConfig) @@ -99,22 +102,38 @@ exports.handler = (argv) => { const ctstyle = _.get(chalk, theme.content.style) needle.get(url, (error, response) => { if (!error && response.statusCode === 200) { + console.log(response.body) const list = response.body - const rcont = [] + const lcont = [] for (let i = 0; i <= list.length - 1; i++) { const item = list[i] + lcont.push(item.word) + } + lcont.sort((a, b) => { + if (a < b) return -1 + if (a > b) return 1 + return 0 + }) + const rcont = [] + for (let j = 0; j <= lcont.length - 1; j++) { + const item = lcont[j] rcont.push(ctstyle(`${item.word}`)) if (item.score >= 300) { - tofile[[`hiscore${i}`]] = item.word + tofile[[`hiscore${j}`]] = item.word } else { - tofile[[`rhyme${i}`]] = item.word + tofile[[`rhyme${j}`]] = item.word } } - themes.labelRight('Rhymes', theme, rcont.join(',')) + rcont.sort() + themes.labelRight('Rhymes', theme, rcont.join(', ')) if (argv.o) tools.outFile(argv.o, argv.f, tofile) if (argv.s && config.merge) noon.save(CFILE, config) if (argv.s && !config.merge) console.err(chalk.red('Set option merge to true!')) - console.log(`${config.rbrain.date.remain}/${config.rbrain.date.limit} requests remaining this hour, will reset in ${reset} minutes.`) + if (reset) { + console.log(`${config.rbrain.date.remain}/${config.rbrain.date.limit} requests remaining this hour.`) + } else { + console.log(`${config.rbrain.date.remain}/${config.rbrain.date.limit} requests remaining this hour, will reset in ${diff} minutes.`) + } } else { console.error(`${chalk.red.bold(`HTTP ${response.statusCode}:`)} ${chalk.red(error)}`) }