feat: scripts
This commit is contained in:
111
scripts/get.js
Normal file
111
scripts/get.js
Normal file
@@ -0,0 +1,111 @@
|
||||
#! /usr/bin/env runjs
|
||||
|
||||
var argsEx = require('component-args.js');
|
||||
var bytes = require('component-bytes.js');
|
||||
var counter = require('component-counter.js');
|
||||
var gpg = require('component-gpg-ex.js');
|
||||
|
||||
var URLEncoder = java.net.URLEncoder;
|
||||
|
||||
var DEFAULT_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36';
|
||||
|
||||
var gpgEncryptedAuthToken = {/**LINES
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
Comment: GPGTools - https://gpgtools.org
|
||||
|
||||
hQEMAwpgonLPA1NTAQf+MowR8XeAd6jtJhHE6s8FwmXyYEI1R8J3kEo+XBnUWXph
|
||||
dVQYHUAj+lWl9Pd8YpJmImT+Qf9mseZSi0wbkUi6N1UJogwtx4sAu9szvLcEhYa2
|
||||
68Oyl+AY8jdn608OKqXRwG8z4HVrzdFgyEBuyJ/GafDH+bXcLYNtROcb63FlMlhJ
|
||||
zLymaJD85W3uKlmYqJ0/OHLxn+fruRvZz0ZxlN1w3lj8t0wqLk+cOcTVMZkpdiYD
|
||||
BGj8fkS/OTQBBNACmsCJDoUdBEMSRpjU3z55Zn5EGK0R3uTkZfuo+pJjGaZEtz8m
|
||||
kuM0Yxyvq38fzPC9zrGQKsyXBOH3B8/x7GqcNDEVRtJnAWDu4syv3FkiGAzyHiKZ
|
||||
nEupU97rz+XL5fKU89i6+ttAAC+xIMkASAde/Z5CdOdGjwfjx3u7U+c8XmaAcQtE
|
||||
ibIucc2d0dsCkynzket0EfqExEXj4NUqxmwIS118vKMZAwap3FnaxQ==
|
||||
=fjt8
|
||||
-----END PGP MESSAGE-----
|
||||
*/};
|
||||
|
||||
var SITE_PROXY_MAP = {
|
||||
"hatterink": "https://hatter.ink/pget.action?__auth_token={auth_token}&target={target}"
|
||||
};
|
||||
|
||||
var main = () => {
|
||||
var args = argsEx.parseDefARGs(['s', 'slient', 'S', 'skip-cert']);
|
||||
|
||||
var urllist = args.val('u', 'urllist');
|
||||
var prefix = args.val('prefix');
|
||||
var suffix = args.val('suffix');
|
||||
|
||||
if ((urllist == null) && (args.length < 1)) {
|
||||
println('get.js [FLAGS] <URL> [<FILE NAME>]');
|
||||
println(' -u, --urllist URL List');
|
||||
println(' --prefix File prefix when using URL List');
|
||||
println(' --suffix File suffix when using URL List');
|
||||
println(' -s, --slient Slient mode');
|
||||
println(' -S, --skip-cert Skip cert check');
|
||||
println(' --agent <AGENT> User agent');
|
||||
println(' -p, --proxy <SITE> Site, hatterink')
|
||||
return;
|
||||
}
|
||||
|
||||
if (urllist == null) {
|
||||
downlaodURL(args, args[0], (args.length > 1)? args[1]: null);
|
||||
} else {
|
||||
var fl = __.rfile.from(urllist);
|
||||
if (fl.notExists()) {
|
||||
println('File list not exists: ' + urllist);
|
||||
return;
|
||||
}
|
||||
var list = $ARRAY(fl.list()).filter((u) => {
|
||||
return u.trim() != '';
|
||||
});
|
||||
list.forEach((u, i) => {
|
||||
println('Processing ' + i + ' of ' + list.length + ':');
|
||||
if ((prefix == null) && (suffix == null)) {
|
||||
downlaodURL(args, u);
|
||||
} else {
|
||||
downlaodURL(args, u, (prefix || '') + $$.numFormat('0000').format(i) + (suffix || ''));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var downlaodURL = (args, url, fn) => {
|
||||
var slient = args.flg('s', 'slient');
|
||||
var skipCert = args.flg('S', 'skip-cert');
|
||||
var agent = args.val('agent');
|
||||
if (!/^http(s)?:\/\/.*/.test(url.toLowerCase())) {
|
||||
println('URL should starts with http:// or https://');
|
||||
return;
|
||||
}
|
||||
if (fn == null) {
|
||||
var u = (url.contains('?')) ? url.substring(0, url.indexOf('?')) : url;
|
||||
fn = URLEncoder.encode((u.contains('/')) ? u.substring(u.lastIndexOf('/') + 1) : u, 'UTF-8') || ('unknown-' + $$.date().millis());
|
||||
}
|
||||
|
||||
var readlUrl = url;
|
||||
var proxy = args.val('p', 'proxy');
|
||||
if (proxy != null) {
|
||||
var proxyUrl = SITE_PROXY_MAP[proxy];
|
||||
if (proxyUrl == null) {
|
||||
xprintln('[WARN] Unknown proxy: ' + proxy);
|
||||
} else {
|
||||
xprintln('[INFO] Using proxy: ' + proxy);
|
||||
var authToken = gpg.decryptArmor(gpgEncryptedAuthToken);
|
||||
readlUrl = proxyUrl.replace('{auth_token}', authToken).replace('{target}', encodeURIComponent(url));
|
||||
}
|
||||
}
|
||||
|
||||
if (!slient) { println('GET ' + url + ' -> ' + fn); }
|
||||
var fos = new java.io.FileOutputStream(fn);
|
||||
var len = $$.httpRequest()
|
||||
.url(readlUrl)
|
||||
.skipCertCheck(skipCert)
|
||||
.addHeader('User-Agent', agent || DEFAULT_USER_AGENT)
|
||||
.get(fos, (slient ? null : counter.getCounter2Bar()));
|
||||
fos.close();
|
||||
if (!slient) { println(); }
|
||||
if (!slient) { println('File download finished, downloaded bytes: ' + bytes.showBytes(len)); }
|
||||
};
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user