From 7b4866abcbcd1c00bc674eb36d7e7fddbc292818 Mon Sep 17 00:00:00 2001 From: "karl.hudgell" Date: Wed, 26 Aug 2020 17:22:06 +0100 Subject: [PATCH 1/2] download file in common --- lib/common.js | 9 +++++++++ package-lock.json | 7 ++++++- package.json | 3 ++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/common.js b/lib/common.js index f127774..159f107 100644 --- a/lib/common.js +++ b/lib/common.js @@ -3,6 +3,8 @@ const clear = require('clear'); const figlet = require('figlet'); const fs = require('fs') var pjson = require('../package.json'); +const fetch = require('node-fetch'); + module.exports = { header: (page) => { @@ -36,5 +38,12 @@ module.exports = { } else { console.log(chalk.white('MiWatch IP: ' + chalk.green(miwatchData.ipAddress))) } + }, + downloadFile: async (url) => { + let settings = { method: "Get" }; + + const response = await fetch(url, settings) + .then(res => res.json()) + return response } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6a6fab6..8d99f41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "miwatchkleaner2.0", - "version": "2.0.3", + "version": "2.0.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -907,6 +907,11 @@ "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-1.0.12.tgz", "integrity": "sha512-2t3h3g3xK5kxhRbwD+0WgKotHyoVEQlE+V93rn97tqzUtbw8cFpHn0uhsc2LeKkDlsQI1iy5XZoS3vACzBdW8A==" }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", diff --git a/package.json b/package.json index 070bda5..174e5bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "miwatchkleaner2.0", - "version": "2.0.6", + "version": "2.0.7", "description": "MiWatch Cleaning Tool", "main": "app.js", "bin": "app.js", @@ -22,6 +22,7 @@ "get-files-in": "^1.2.0", "inquirer": "^7.1.0", "node-downloader-helper": "^1.0.12", + "node-fetch": "^2.6.0", "perfect-logger": "^2.0.1", "pkg": "^4.4.7", "request-promise-native": "^1.0.8", From 71a2e00228775a464f8a89e43a8079d0a952cb01 Mon Sep 17 00:00:00 2001 From: "karl.hudgell" Date: Wed, 26 Aug 2020 17:22:31 +0100 Subject: [PATCH 2/2] clean up --- lib/inquirer.js | 1 + pages/pages.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/lib/inquirer.js b/lib/inquirer.js index 564d3d0..bfa1938 100644 --- a/lib/inquirer.js +++ b/lib/inquirer.js @@ -13,6 +13,7 @@ module.exports = { message: "What do you want to do?", choices: [ "Connect to MiWatch via Wifi", + "1-Click Karl0ss Klean", "Remove Xiaomi Apps", "Restore Xiaomi Apps", "Install Compatible Apps", diff --git a/pages/pages.js b/pages/pages.js index 3f311be..a5047ea 100644 --- a/pages/pages.js +++ b/pages/pages.js @@ -12,6 +12,7 @@ const http = require('http') var shell = require('shelljs'); let logger = require('perfect-logger'); + let adbRun logger.initialize('RunTIme', { @@ -140,11 +141,10 @@ module.exports = { await dl2.start(); await shellExec(adbRun + ' install-multiple "data\\apps\\simpleweather_base.apk" "data\\apps\\simpleweather_split_config.armeabi_v7a.apk" "data\\apps\\simpleweather_split_config.xhdpi.apk"').then(function (result) { console.log(result) - console.log('moreLocale Activated On Watch'); - logger.info('moreLocale Activated On Watch'); + console.log('simpleWeather Activated On Watch'); + logger.info('simpleWeather Activated On Watch'); }) } - if (element === "data\\apps\\MoreLocale.apk") { await shellExec(adbRun + ' shell pm grant jp.co.c_lis.ccl.morelocale android.permission.CHANGE_CONFIGURATION').then(function (result) { console.log('moreLocale Activated On Watch'); @@ -255,6 +255,63 @@ module.exports = { }).catch() } }, + oneClick: async () => { + logger.info("1-Click Karl0ss Klean") + common.header('1-Click Karl0ss Klean') + const value = JSON.parse(fs.readFileSync('./data/packageList.json', 'utf8')); + for (let element of value.apps) { + await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + element).then(function (result) { + if (result.stderr != '') { + logger.info('Error ' + result.stderr); + console.log(chalk.redBright('Error - Device not authorised')); + } else { + logger.info('Removing ' + element + ' - ' + result.stdout); + console.log('Removing ' + element + ' - ' + result.stdout); + } + }); + } + console.log(chalk.green('Removal Complete')) + await common.pause(2000) + logger.info("Remove Complete") + logger.info("Compatible Apps") + + await shell.rm('-rf', './data/apps/*.apk'); + + let url = "http://kithub.cf/Karl/MiWatchKleaner-APKs/raw/master/compatibleApps.json"; + const compatibleApps = await common.downloadFile(url) + + for (const element of compatibleApps) { + if (element.Klean === "X") { + const options = { + override: true, + } + const dl = new DownloaderHelper(element.url, './data/apps/', options); + await dl.on('end', () => console.log('Downloading Latest ' + element.name + ' Complete'), + logger.info('Downloading Latest ' + element.name + ' Complete') + ) + await dl.start(); + } + } + const apkList = await getFilesIn('./data/apps', matchFiletypes = ['apk'], checkSubDirectories = false) + + for (let element of apkList) { + console.log('Installing ' + element) + logger.info('Installing ' + element) + await shellExec(adbRun + ' install -r ' + element).then(async function (result) { + if (result.stderr != '') { + logger.info('Error ' + result.stderr); + console.log(chalk.redBright('Error - Device not authorised')); + } + console.log(element + ' - ' + result.stdout); + logger.info(element + ' - ' + result.stdout); + + }); + } + console.log(chalk.green('Compatible Apps Installed')) + logger.info('Compatible Apps Installed') + await common.pause(2000) + module.exports.mainMenu() + }, mainMenu: async () => { common.header('Main Menu') if (process.platform === 'win32' || process.platform === 'win64') { @@ -268,6 +325,9 @@ module.exports = { case 'connect to miwatch via wifi': module.exports.connectWifi() break; + case '1-click karl0ss klean': + module.exports.oneClick() + break; case 'remove xiaomi apps': module.exports.removeApps() break;