mirror of
https://github.com/ION606/ion-cli.git
synced 2026-05-14 22:16:56 +00:00
initial commit
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
node_modules
|
||||
pref.json
|
||||
config.json
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
currentPage: 1,
|
||||
hasNextPage: false,
|
||||
results: [
|
||||
{
|
||||
id: 'plunderer.55jj',
|
||||
title: 'Plunderer',
|
||||
url: 'https://9anime.pl/watch/plunderer.55jj',
|
||||
image: 'https://static.bunnycdn.ru/i/cache/images/2020/01/3a6cacd4ec426119692ab40d1ca3998a.jpg',
|
||||
subOrSub: 'both',
|
||||
type: 'TV'
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
import fs from 'fs'
|
||||
import m3u8stream from 'm3u8stream';
|
||||
import chalk from 'chalk';
|
||||
import axios from "axios";
|
||||
import readline from 'readline'
|
||||
import path from 'path';
|
||||
import generateQuery from './userQuery.js';
|
||||
import { getJSON, setJSON } from '../utils/JSON.js';
|
||||
import https from 'https';
|
||||
|
||||
|
||||
/**
|
||||
* @param {String} query
|
||||
* @returns {Promise<String>}
|
||||
*/
|
||||
function askUserQuery(query) {
|
||||
const rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout,
|
||||
});
|
||||
|
||||
return new Promise(resolve => rl.question(query, ans => {
|
||||
rl.close();
|
||||
resolve(ans);
|
||||
}))
|
||||
|
||||
}
|
||||
|
||||
|
||||
async function getAnime9(id, episode = null) {
|
||||
var url = `https://api.consumet.org/anime/9anime/info/${id}`;
|
||||
try {
|
||||
const response = await axios.get(url, {params: {id: id}});
|
||||
const { data } = response;
|
||||
console.log(chalk.green('done!'));
|
||||
|
||||
var epNumber;
|
||||
|
||||
if (!episode) {
|
||||
var query = generateQuery("animeep");
|
||||
const userResp = (await askUserQuery(query)).toLowerCase();
|
||||
|
||||
if (userResp == "dumpdata") {
|
||||
return console.log(data);
|
||||
}
|
||||
else if (userResp == "desc") {
|
||||
return console.log(data.description)
|
||||
}
|
||||
else if (userResp == "episodes-all") {
|
||||
return console.log(data.episodes);
|
||||
}
|
||||
else {
|
||||
if (Number.isNaN(Number(userResp))) {
|
||||
return console.log(chalk.red(`${userResp} is not an integer (1, 2, 3, 4, etc)`));
|
||||
}
|
||||
|
||||
epNumber = Number(userResp);
|
||||
}
|
||||
} else {
|
||||
epNumber = episode;
|
||||
}
|
||||
|
||||
const episodeData = data.episodes.find((e) => e.number == epNumber);
|
||||
if (!episodeData) {
|
||||
return console.log(chalk.red(`ERROR: No data found for ` + chalk.bold(`${data.title} (episode ${epNumber})`)));
|
||||
}
|
||||
|
||||
|
||||
//get the urls
|
||||
console.log(chalk.green('Fetching video sources...'));
|
||||
url = `https://api.consumet.org/anime/9anime/watch/${episodeData.id}`; //?server={serverName}`
|
||||
const epResp = await axios.get(url);
|
||||
console.log(epResp.data)
|
||||
const epSource = epResp.data.sources[0];
|
||||
|
||||
const vidPath = await getJSON("apath");
|
||||
|
||||
const newpath = path.resolve(vidPath, data.title + ' - ' + episodeData.title + '.mp4');
|
||||
|
||||
console.log(chalk.green('done!'));
|
||||
console.log(chalk.green('writing to local file...'));
|
||||
|
||||
const file = fs.createWriteStream(newpath);
|
||||
https.get(epSource.url, function(response) {
|
||||
response.pipe(file);
|
||||
|
||||
// after download completed close filestream
|
||||
file.on("finish", () => {
|
||||
file.close();
|
||||
console.log(chalk.green(`done!\nFile located at ${newpath}`));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
// if (epSource.isM3U8) {
|
||||
// m3u8stream(epSource.url).pipe(fs.createWriteStream(newpath));
|
||||
// }
|
||||
|
||||
console.log(chalk.green('done!'));
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
return console.log(chalk.red(`ERROR: ${err.message}\n\nTask aborted`));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
async function getSearchTerm(name, episode = null) {
|
||||
return new Promise(async (resolve) => {
|
||||
console.log(chalk.green('Fetching data'));
|
||||
|
||||
var url = `https://api.consumet.org/anime/crunchyroll/${name}`;
|
||||
// try {
|
||||
// const response = await axios.get(url);
|
||||
// const { data } = response;
|
||||
// return resolve(data);
|
||||
// } catch (err) {
|
||||
// console.log(chalk.red(`ERROR: ${err.message}\n\nTrying backup method...`));
|
||||
// }
|
||||
|
||||
|
||||
//Backup section
|
||||
url = `https://api.consumet.org/anime/9anime/${name}`;
|
||||
try {
|
||||
const { data } = await axios.get(url);
|
||||
getAnime9(data.results[0].id, episode);
|
||||
// return resolve(data);
|
||||
} catch (err) {
|
||||
console.log(chalk.red(`ERROR: ${err.message}\n\nTask aborted`));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
async function getUrl(name, episode = null) {
|
||||
const animeTerm = await getSearchTerm(name, episode);
|
||||
return console.log(animeTerm);
|
||||
const animeEpisode = animeTerm.episodesList.find((a) => (a.episodeNum == episode));
|
||||
|
||||
console.log(animeEpisode);
|
||||
|
||||
fetch(`https://api.consumet.stream/vidcdn/watch/${animeEpisode.episodeId}`)
|
||||
.then((response) => response.json())
|
||||
.then((animelist) => console.log(animelist));
|
||||
}
|
||||
|
||||
|
||||
// fetch(`https://gogoanime.consumet.stream/search?keyw=${"jojo"}`)
|
||||
// .then((response) => response.json())
|
||||
// .then((animelist) => console.log(animelist));
|
||||
|
||||
|
||||
|
||||
async function getAnime(name, subcommand, episode = null) {
|
||||
switch (subcommand) {
|
||||
default: getUrl(name, episode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array<String>} command
|
||||
* @returns
|
||||
*/
|
||||
export default async function animeMain(command) {
|
||||
const apath = getJSON("apath");
|
||||
if (!apath) {
|
||||
const apath = await askUserQuery("Please specify a path to save to\n");
|
||||
if (!apath || (apath === path.basename(apath))) {
|
||||
return console.log(chalk.red('Incorrect path!'));
|
||||
}
|
||||
|
||||
setJSON("apath", apath);
|
||||
}
|
||||
|
||||
|
||||
const nameOpt = command.find((o) => (o.indexOf('name=') != -1));
|
||||
const subCommandOpt = command.find((o) => (o.indexOf('option=') != -1));
|
||||
const episodeOpt = command.find((o) => (o.indexOf('episode=') != -1));
|
||||
|
||||
if (command.length == 0 || nameOpt.length == 0) {
|
||||
console.log(chalk.red("Please specify an anime title!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
console.log(episodeOpt);
|
||||
|
||||
const name = nameOpt.split('=')[1];
|
||||
const subCommand = (subCommandOpt && subCommandOpt.length != 0) ? subCommandOpt.split('=')[1] : null;
|
||||
const episode = (episodeOpt && episodeOpt.length != 0) ? Number(episodeOpt.split('=')[1]) : null;
|
||||
getAnime(name, subCommand, episode);
|
||||
return true;
|
||||
// m3u8stream('http://somesite.com/link/to/the/playlist.m3u8')
|
||||
// .pipe(fs.createWriteStream('videofile.mp4'));
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import chalk from "chalk";
|
||||
|
||||
export default function generateQuery(context) {
|
||||
var query;
|
||||
if (context == "animeep") {
|
||||
query = "To dump all data enter ";
|
||||
query += chalk.red("dumpdata");
|
||||
query += `\nTo get the anime description enter ${chalk.green("desc")}`;
|
||||
query += "\nTo dump episode data enter ";
|
||||
query += chalk.yellow("episodes-all");
|
||||
query += ", therwise, enter the " + chalk.yellow("episode number\n");
|
||||
query += chalk.italic("Note: to compile with an episode number use");
|
||||
query += chalk.blueBright(" --anime name=\"name\" episode=#\n");
|
||||
}
|
||||
|
||||
return query;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import chalk from "chalk"
|
||||
const commandList = ['anime <name="string", option="string">']
|
||||
|
||||
export default function help(subcommand = []) {
|
||||
if (subcommand.length != 0) {
|
||||
console.log(chalk.green(commandList[commandList.indexOf(subcommand)]))
|
||||
} else {
|
||||
for (const i of commandList) {
|
||||
console.log(chalk.cyanBright(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import chalk from 'chalk';
|
||||
import { getAndParse } from './startup/getAndParseArgs.js';
|
||||
import animeMain from './anime/getAndSave.js';
|
||||
import help from './help.js'
|
||||
|
||||
function executeCommand(command, content = null) {
|
||||
return new Promise((resolve) => {
|
||||
switch(command) {
|
||||
case 'help': help(content);
|
||||
resolve(true);
|
||||
break;
|
||||
|
||||
case 'anime': resolve(animeMain(content));
|
||||
break;
|
||||
|
||||
default: console.log(chalk.red("Unknown command! try using"), chalk.red.bold("ion --help"));
|
||||
resolve(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const args = await getAndParse();
|
||||
for (const i in args) {
|
||||
// console.log(chalk.blue(i) + ": " + args[i])
|
||||
const worked = await executeCommand(i, args[i]);
|
||||
if (!worked) break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
main();
|
||||
Generated
+417
@@ -0,0 +1,417 @@
|
||||
{
|
||||
"name": "ion",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "ion",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"axios": "^1.3.4",
|
||||
"boxen": "4.0",
|
||||
"chalk": "2.4",
|
||||
"m3u8stream": "^0.8.6",
|
||||
"readline": "^1.3.0"
|
||||
},
|
||||
"bin": {
|
||||
"ion": "main.js"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-align": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
|
||||
"integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
|
||||
"dependencies": {
|
||||
"string-width": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-align/node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-align/node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||
},
|
||||
"node_modules/ansi-align/node_modules/is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-align/node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"dependencies": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-align/node_modules/strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-regex": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
|
||||
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"dependencies": {
|
||||
"color-convert": "^1.9.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz",
|
||||
"integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.0",
|
||||
"form-data": "^4.0.0",
|
||||
"proxy-from-env": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/boxen": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/boxen/-/boxen-4.0.0.tgz",
|
||||
"integrity": "sha512-gBklgJ9hxaEG8AvEq6JmHns0qQh7JS0uRQtpk4r0OW9AJFKfvP0PVoltH0xzZt/OIio2Iy48xkiV3OaIun7GUw==",
|
||||
"dependencies": {
|
||||
"ansi-align": "^3.0.0",
|
||||
"camelcase": "^5.3.1",
|
||||
"chalk": "^2.4.2",
|
||||
"cli-boxes": "^2.2.0",
|
||||
"string-width": "^3.1.0",
|
||||
"term-size": "^2.1.0",
|
||||
"type-fest": "^0.5.2",
|
||||
"widest-line": "^3.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/camelcase": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
|
||||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"supports-color": "^5.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/cli-boxes": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
|
||||
"integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"dependencies": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
|
||||
},
|
||||
"node_modules/combined-stream": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||
"dependencies": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
|
||||
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
|
||||
},
|
||||
"node_modules/escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/follow-redirects": {
|
||||
"version": "1.15.2",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
|
||||
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://github.com/sponsors/RubenVerborgh"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"debug": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/form-data": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
||||
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
||||
"dependencies": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.8",
|
||||
"mime-types": "^2.1.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/is-fullwidth-code-point": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
||||
"integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/m3u8stream": {
|
||||
"version": "0.8.6",
|
||||
"resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz",
|
||||
"integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==",
|
||||
"dependencies": {
|
||||
"miniget": "^4.2.2",
|
||||
"sax": "^1.2.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-types": {
|
||||
"version": "2.1.35",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||
"dependencies": {
|
||||
"mime-db": "1.52.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/miniget": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.2.tgz",
|
||||
"integrity": "sha512-a7voNL1N5lDMxvTMExOkg+Fq89jM2vY8pAi9ZEWzZtfNmdfP6RXkvUtFnCAXoCv2T9k1v/fUJVaAEuepGcvLYA==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/proxy-from-env": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
||||
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
|
||||
},
|
||||
"node_modules/readline": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
|
||||
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
|
||||
},
|
||||
"node_modules/sax": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
|
||||
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
||||
},
|
||||
"node_modules/string-width": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
||||
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
||||
"dependencies": {
|
||||
"emoji-regex": "^7.0.1",
|
||||
"is-fullwidth-code-point": "^2.0.0",
|
||||
"strip-ansi": "^5.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/strip-ansi": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"dependencies": {
|
||||
"has-flag": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/term-size": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
|
||||
"integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/type-fest": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz",
|
||||
"integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/widest-line": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
|
||||
"integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
|
||||
"dependencies": {
|
||||
"string-width": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/widest-line/node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/widest-line/node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||
},
|
||||
"node_modules/widest-line/node_modules/is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/widest-line/node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"dependencies": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/widest-line/node_modules/strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "ion",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "ION606",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"ion": "./main.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.3.4",
|
||||
"boxen": "4.0",
|
||||
"chalk": "2.4",
|
||||
"m3u8stream": "^0.8.6",
|
||||
"readline": "^1.3.0"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
/**
|
||||
* @returns { Promise<Array<String>>}
|
||||
*/
|
||||
export function getAndParse() {
|
||||
return new Promise((resolve) => {
|
||||
const argsRaw = [...process.argv].slice(2);
|
||||
const args = {};
|
||||
// const keys = {};
|
||||
// for (const i of argsRaw) {
|
||||
// if (i.indexOf('--') !== -1) {
|
||||
// keys[i.split('--')[1]] = argsRaw.indexOf(i)
|
||||
// }
|
||||
// }
|
||||
const keys = argsRaw.join(" ").split("--");
|
||||
for (const i of keys) {
|
||||
if (i.length == 0) continue;
|
||||
|
||||
const splitContent = i.split(" ");
|
||||
args[splitContent[0]] = splitContent.slice(1);
|
||||
}
|
||||
|
||||
return resolve(args);
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { dirname } from 'path';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
|
||||
export function getJSON(key) {
|
||||
const p = path.resolve(__dirname, "../config.json");
|
||||
const data = fs.readFileSync(p, 'utf8');
|
||||
|
||||
const obj = JSON.parse(data);
|
||||
return obj[key];
|
||||
}
|
||||
|
||||
|
||||
export function setJSON(key, val) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const p = path.resolve(__dirname, "../config.json");
|
||||
const data = fs.readFileSync(p, 'utf8');
|
||||
|
||||
var obj = JSON.parse(data); //now it an object
|
||||
obj[key] = val; //add some data
|
||||
const json = JSON.stringify(obj); //convert it back to json
|
||||
fs.writeFile(p, json, (err) => {
|
||||
if (err) { return reject(err); }
|
||||
resolve();
|
||||
}); // write it back
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user