From fb987b5e3027f60cf309229ab5e5a342f43d71bb Mon Sep 17 00:00:00 2001 From: Louistiti Date: Sat, 2 Mar 2019 12:54:25 +0800 Subject: [PATCH] refactor(server): give query object file in child process arg --- .gitignore | 1 + bridges/python/main.py | 11 +- bridges/python/utils.py | 41 ++-- package-lock.json | 331 +++++++++++++++++++++++++--- package.json | 2 +- packages/checker/isitdown.py | 4 +- packages/leon/bye.py | 2 +- packages/leon/greeting.py | 2 +- packages/leon/joke.py | 2 +- packages/leon/meaningoflife.py | 2 +- packages/leon/partnerassistant.py | 2 +- packages/leon/randomnumber.py | 2 +- packages/leon/welcome.py | 2 +- packages/leon/whoami.py | 2 +- packages/videodownloader/youtube.py | 2 +- scripts/release/update-version.js | 2 +- server/src/core/brain.js | 35 ++- 17 files changed, 371 insertions(+), 74 deletions(-) diff --git a/.gitignore b/.gitignore index 405b84b0..2415341c 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ bin/flite/* *.pyc .DS_Store +*.sublime-workspace npm-debug.log debug.log .env diff --git a/bridges/python/main.py b/bridges/python/main.py index e11a72de..3d303bc6 100644 --- a/bridges/python/main.py +++ b/bridges/python/main.py @@ -3,7 +3,7 @@ import utils from sys import argv, path -from json import dumps +from json import dumps, loads from importlib import import_module def main(): @@ -11,13 +11,10 @@ def main(): path.append('.') - lang = argv[1] - package = argv[2] - module = argv[3] - string = argv[4] - m = import_module('packages.' + package + '.' + module) + queryobj = utils.getqueryobj() + m = import_module('packages.' + queryobj['package'] + '.' + queryobj['module']) - return getattr(m, module)(string) + return getattr(m, queryobj['module'])(queryobj['query'], queryobj['entities']) if __name__ == '__main__': main() diff --git a/bridges/python/utils.py b/bridges/python/utils.py index 6481ed68..ad51d266 100644 --- a/bridges/python/utils.py +++ b/bridges/python/utils.py @@ -2,7 +2,7 @@ # -*- coding:utf-8 -*- from json import loads, dumps -from os import path +from os import path, environ from pathlib import Path from random import choice from sys import argv, stdout @@ -14,10 +14,18 @@ import sqlite3 import requests dirname = path.dirname(path.realpath(__file__)) -lang = argv[1] -package = argv[2] -module = argv[3] -istring = argv[4] + +queryid = argv[1] + +serversrc = 'dist' if environ.get('LEON_NODE_ENV') == 'production' else 'src' +queryobjfile = open(dirname + '/../../server/' + serversrc + '/tmp/' + queryid + '.json', 'r', encoding = 'utf8') +queryobj = loads(queryobjfile.read()) +queryobjfile.close() + +def getqueryobj(): + """Return query object""" + + return queryobj def translate(key, d = { }): """Pickup the language file according to the cmd arg @@ -25,11 +33,11 @@ def translate(key, d = { }): output = '' - file = open(dirname + '/../../packages/' + package + '/' + 'data/answers/' + lang + '.json', 'r', encoding = 'utf8') + file = open(dirname + '/../../packages/' + queryobj['package'] + '/' + 'data/answers/' + queryobj['lang'] + '.json', 'r', encoding = 'utf8') obj = loads(file.read()) file.close() - prop = obj[module][key] + prop = obj[queryobj['module']][key] if isinstance(prop, list): output = choice(prop) else: @@ -48,10 +56,11 @@ def output(type, code, speech = ''): """Communicate with the Core""" print(dumps({ - 'package': package, - 'module': module, - 'lang': lang, - 'input': istring, + 'package': queryobj['package'], + 'module': queryobj['module'], + 'lang': queryobj['lang'], + 'input': queryobj['query'], + 'entities': queryobj['entities'], 'output': { 'type': type, 'code': code, @@ -63,7 +72,7 @@ def output(type, code, speech = ''): if (type == 'inter'): stdout.flush() -def finddomains(string): +def finddomains(string, entities): """Find a domain name substring from a string""" return findall('[a-z0-9\-]{,63}\.[a-z0-9\-\.]{2,191}', string.lower()) @@ -79,11 +88,11 @@ def http(method, url): def config(key): """Get a package configuration value""" - file = open(dirname + '/../../packages/' + package + '/config/config.json', 'r', encoding = 'utf8') + file = open(dirname + '/../../packages/' + queryobj['package'] + '/config/config.json', 'r', encoding = 'utf8') obj = loads(file.read()) file.close() - return obj[module][key] + return obj[queryobj['module']][key] def info(): """Get information from the current query""" @@ -94,7 +103,7 @@ def createdldir(): """Create the downloads folder of a current module""" dldir = path.dirname(path.realpath(__file__)) + '/../../downloads/' - moduledldir = dldir + package + '/' + module + moduledldir = dldir + queryobj['package'] + '/' + queryobj['module'] Path(moduledldir).mkdir(parents = True, exist_ok = True) @@ -105,6 +114,6 @@ def db(dbtype = 'tinydb'): for a specific package""" if dbtype == 'tinydb': - db = TinyDB(dirname + '/../../packages/' + package + '/data/db/' + package + '.json') + db = TinyDB(dirname + '/../../packages/' + queryobj['package'] + '/data/db/' + queryobj['package'] + '.json') return { 'db': db, 'query': Query, 'operations': operations } diff --git a/package-lock.json b/package-lock.json index 39fc18b8..ecedf890 100644 --- a/package-lock.json +++ b/package-lock.json @@ -745,8 +745,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "accepts": { "version": "1.3.5", @@ -1062,6 +1061,11 @@ "default-require-extensions": "^2.0.0" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, "archiver": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", @@ -1090,11 +1094,19 @@ "readable-stream": "^2.0.0" } }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -3307,6 +3319,11 @@ } } }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" + }, "ci-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", @@ -3652,6 +3669,11 @@ "date-now": "^0.1.4" } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -3790,6 +3812,14 @@ "sha.js": "^2.4.8" } }, + "create-temp-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/create-temp-file/-/create-temp-file-1.0.0.tgz", + "integrity": "sha1-fFAr4RR6XPEmxaOZwH5QlbZzxds=", + "requires": { + "tempfile": "^1.1.1" + } + }, "crlf-normalize": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/crlf-normalize/-/crlf-normalize-1.0.3.tgz", @@ -3948,8 +3978,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.3", @@ -3964,6 +3993,18 @@ "is-mergeable-object": "1.1.0" } }, + "deepspeech": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/deepspeech/-/deepspeech-0.4.1.tgz", + "integrity": "sha512-3poEwpgycJW+LqMZQuV3x/MZrutxZn5YgOZ8irZ+WJuliWM1Bnd63XqCaPDPNv5J5LVSsTHam3CJJHri1d52hw==", + "requires": { + "argparse": "1.0.x", + "memory-stream": "0.0.3", + "node-pre-gyp": "0.12.x", + "node-wav": "0.0.2", + "sox-stream": "2.0.x" + } + }, "default-require-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", @@ -4037,6 +4078,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -4090,6 +4136,11 @@ "repeating": "^2.0.0" } }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -4187,6 +4238,11 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -5473,6 +5529,14 @@ "universalify": "^0.1.0" } }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "requires": { + "minipass": "^2.2.1" + } + }, "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -5504,8 +5568,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -5548,8 +5611,7 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", @@ -5560,8 +5622,7 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -5678,8 +5739,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -5691,7 +5751,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -5831,7 +5890,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -5953,7 +6011,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5973,7 +6030,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6017,8 +6073,7 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", @@ -6033,6 +6088,21 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, "gaxios": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-1.2.4.tgz", @@ -6954,6 +7024,11 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -6993,6 +7068,11 @@ "safe-buffer": "^5.0.1" } }, + "hash-to-array": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hash-to-array/-/hash-to-array-1.0.1.tgz", + "integrity": "sha1-Kw4oTASjLDRYAkijMrli6xVeD28=" + }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -7138,6 +7218,14 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", @@ -7250,8 +7338,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inline-source-map": { "version": "0.6.2", @@ -10188,6 +10275,37 @@ "p-is-promise": "^2.0.0" } }, + "memory-stream": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", + "integrity": "sha1-6+jdHDuLw4wOeUHp3dWuvmtN6D8=", + "requires": { + "readable-stream": "~1.0.26-2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -10321,6 +10439,23 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "requires": { + "minipass": "^2.2.1" + } + }, "mitt": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz", @@ -10350,7 +10485,6 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" } @@ -10454,6 +10588,31 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "needle": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", + "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + } + } + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -10521,6 +10680,23 @@ "which": "^1.3.0" } }, + "node-pre-gyp": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, "node-wav": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/node-wav/-/node-wav-0.0.2.tgz", @@ -10586,6 +10762,15 @@ } } }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -10647,6 +10832,20 @@ } } }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" + }, + "npm-packlist": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -10655,6 +10854,17 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -10844,8 +11054,7 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-locale": { "version": "1.4.0", @@ -10858,8 +11067,16 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } }, "output-file-sync": { "version": "1.1.2", @@ -11571,7 +11788,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -11582,8 +11798,7 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, @@ -12117,7 +12332,6 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -12403,8 +12617,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { "version": "2.0.0", @@ -12761,6 +12974,16 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, + "sox-stream": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sox-stream/-/sox-stream-2.0.3.tgz", + "integrity": "sha512-t21ZFMs+vm1JmODzSQhIIwEl/kLZdTNz6Zv7meEKaNROzwm9u8V7qAB3ti9IBsr5vxg4F8HNt/AC1QXjvErUnQ==", + "requires": { + "create-temp-file": "^1.0.0", + "duplexer": "^0.1.1", + "hash-to-array": "^1.0.0" + } + }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -12820,8 +13043,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "ssf": { "version": "0.10.2", @@ -13044,8 +13266,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "stubs": { "version": "3.0.0", @@ -13186,6 +13407,20 @@ } } }, + "tar": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, "tar-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", @@ -13200,6 +13435,22 @@ "xtend": "^4.0.0" } }, + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "requires": { + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + } + } + }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -14169,6 +14420,14 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "widest-line": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", diff --git a/package.json b/package.json index b3fe1e5c..d252c4ab 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "preinstall": "node scripts/setup/preinstall.js", "postinstall": "babel-node scripts/setup/setup.js", "dev:app": "npm run build:app && babel-node scripts/app/dev-app.js", - "dev:server": "npm run train expressions && nodemon --watch server ./server/src/index.js --exec babel-node", + "dev:server": "npm run train expressions && nodemon --watch server ./server/src/index.js --ignore server/src/tmp/ --exec babel-node", "wake": "cross-env LEON_SERVER_HOST=localhost LEON_SERVER_PORT=1337 node hotword/index.js", "delete-dist:server": "shx rm -rf ./server/dist", "build": "npm run lint && npm run build:app && npm run build:server", diff --git a/packages/checker/isitdown.py b/packages/checker/isitdown.py index 13711e1a..e07d7d8c 100644 --- a/packages/checker/isitdown.py +++ b/packages/checker/isitdown.py @@ -4,10 +4,10 @@ import requests import utils -def isitdown(string): +def isitdown(string, entities): """Check if a website is down or not""" - domains = utils.finddomains(string) + domains = utils.finddomains(string, entities) output = '' for i, domain in enumerate(domains): diff --git a/packages/leon/bye.py b/packages/leon/bye.py index a6188c21..ccf44b14 100644 --- a/packages/leon/bye.py +++ b/packages/leon/bye.py @@ -3,7 +3,7 @@ import utils -def bye(string): +def bye(string, entities): """Leon says good bye""" return utils.output('end', 'good_bye', utils.translate('good_bye')) diff --git a/packages/leon/greeting.py b/packages/leon/greeting.py index b316364c..4f44454a 100644 --- a/packages/leon/greeting.py +++ b/packages/leon/greeting.py @@ -5,7 +5,7 @@ import utils from datetime import datetime from random import randint -def greeting(string): +def greeting(string, entities): """Leon greets you""" time = datetime.time(datetime.now()) diff --git a/packages/leon/joke.py b/packages/leon/joke.py index e897db6c..0e4b3fca 100644 --- a/packages/leon/joke.py +++ b/packages/leon/joke.py @@ -3,7 +3,7 @@ import utils -def joke(string): +def joke(string, entities): """Leon says some jokes""" return utils.output('end', 'jokes', utils.translate('jokes')) diff --git a/packages/leon/meaningoflife.py b/packages/leon/meaningoflife.py index bc8446c0..d9fc4d25 100644 --- a/packages/leon/meaningoflife.py +++ b/packages/leon/meaningoflife.py @@ -3,7 +3,7 @@ import utils -def meaningoflife(string): +def meaningoflife(string, entities): """Leon says what's the meaning of life""" return utils.output('end', 'meaning_of_life', utils.translate('meaning_of_life')) diff --git a/packages/leon/partnerassistant.py b/packages/leon/partnerassistant.py index 47b12a4a..f0b02d82 100644 --- a/packages/leon/partnerassistant.py +++ b/packages/leon/partnerassistant.py @@ -3,7 +3,7 @@ import utils -def partnerassistant(string): +def partnerassistant(string, entities): """Leon tells you about other personal assistants""" string = string.lower() diff --git a/packages/leon/randomnumber.py b/packages/leon/randomnumber.py index 36ace6ba..43d1ca14 100644 --- a/packages/leon/randomnumber.py +++ b/packages/leon/randomnumber.py @@ -4,7 +4,7 @@ import utils from random import randint -def randomnumber(string): +def randomnumber(string, entities): """Leon gives a random number""" return utils.output('end', 'success', randint(0, 100)) diff --git a/packages/leon/welcome.py b/packages/leon/welcome.py index 50f9b6df..a4eddb4f 100644 --- a/packages/leon/welcome.py +++ b/packages/leon/welcome.py @@ -3,7 +3,7 @@ import utils -def welcome(string): +def welcome(string, entities): """Leon welcomes you""" return utils.output('end', 'welcome', utils.translate('welcome')) diff --git a/packages/leon/whoami.py b/packages/leon/whoami.py index 7cdfa401..c38d9261 100644 --- a/packages/leon/whoami.py +++ b/packages/leon/whoami.py @@ -3,7 +3,7 @@ import utils -def whoami(string): +def whoami(string, entities): """Leon introduces himself""" return utils.output('end', 'introduction', utils.translate('introduction')) diff --git a/packages/videodownloader/youtube.py b/packages/videodownloader/youtube.py index fc329240..4caee676 100644 --- a/packages/videodownloader/youtube.py +++ b/packages/videodownloader/youtube.py @@ -7,7 +7,7 @@ import utils from time import time from pytube import YouTube -def youtube(string): +def youtube(string, entities): """Download new videos from a YouTube playlist""" db = utils.db()['db'] diff --git a/scripts/release/update-version.js b/scripts/release/update-version.js index a9edb201..0e2580f3 100644 --- a/scripts/release/update-version.js +++ b/scripts/release/update-version.js @@ -3,7 +3,7 @@ import { shell } from 'execa' import log from '@/helpers/log' /** - * update version number in files which need version number + * Update version number in files which need version number */ export default version => new Promise(async (resolve, reject) => { log.info('Updating version...') diff --git a/server/src/core/brain.js b/server/src/core/brain.js index 71741b1d..08c196b3 100644 --- a/server/src/core/brain.js +++ b/server/src/core/brain.js @@ -34,6 +34,17 @@ class Brain { } } + /** + * Delete query object file + */ + static deleteQueryObjFile (queryId) { + try { + fs.unlinkSync(`${__dirname}/../tmp/${queryId}.json`) + } catch (e) { + log.error(`Failed to delete query object file: ${e}`) + } + } + /** * Make Leon talk */ @@ -82,9 +93,12 @@ class Brain { */ execute (obj) { return new Promise((resolve, reject) => { + let queryId = '' + // Ask to repeat if Leon is not sure about the request if (obj.classification.confidence < langs[process.env.LEON_LANG].min_confidence) { this.talk(`${this.wernicke('random_not_sure')}.`) + Brain.deleteQueryObjFile(queryId) this.socket.emit('is-typing', false) resolve() @@ -97,9 +111,24 @@ class Brain { * * 1. Need to be at the root of the project * 2. PIPENV_PIPFILE=bridges/python/Pipfile pipenv run - * python bridges/python/main.py en leon whoami "Who are you?" + * python bridges/python/main.py en leon whoami "Who are you?" "[]" */ - this.process = spawn(`pipenv run python bridges/python/main.py ${langs[process.env.LEON_LANG].short} ${obj.classification.package} ${obj.classification.module} "${obj.query}"`, { shell: true }) + queryId = `${Date.now()}-${string.random(4)}` + const queryObj = { + id: queryId, + lang: langs[process.env.LEON_LANG].short, + package: obj.classification.package, + module: obj.classification.module, + query: obj.query, + entities: obj.entities + } + + try { + fs.writeFileSync(`${__dirname}/../tmp/${queryId}.json`, JSON.stringify(queryObj)) + this.process = spawn(`pipenv run python bridges/python/main.py ${queryId}`, { shell: true }) + } catch (e) { + log.error(`Failed to save query object: ${e}`) + } } const packageName = string.ucfirst(obj.classification.package) @@ -130,6 +159,7 @@ class Brain { this.process.stderr.on('data', (data) => { this.talk(`${this.wernicke('random_package_module_errors', '', { '%module_name%': moduleName, '%package_name%': packageName })}!`) + Brain.deleteQueryObjFile(queryId) this.socket.emit('is-typing', false) log.title(packageName) @@ -165,6 +195,7 @@ class Brain { } } + Brain.deleteQueryObjFile(queryId) this.socket.emit('is-typing', false) resolve() })