// ==UserScript==
// @name auto jump
// @copyright 2020, xgame-0 (https://github.com/xgame-0/tamper-monkey-script)
// @license MIT
// @namespace https://github.com/xgame-0/tamper-monkey-script
// @version 2024-11-19
// @description auto jump to target link
// @match *://news.17173.com/*
// @match *://imagetwist.com/*
// @match *://img599.net/*
// @match *://imgbaron.com/*
// @match *://imgsto.com/*
// @match *://picbaron.com/*
// @match *://picdollar.com/*
// @match *://silverpic.com/*
// @match *://viidii.info/*
// @match *://redircdn.com/*
// @match *://downsx.*/*
// @match *://hgcdown.net/*
// @grant none
// ==/UserScript==
let CONFIGS = [{
host: 'imagetwist.com',
image: 'img.pic.img.img-responsive',
}, {
host: 'img599.net',
image: '#image-viewer-container img',
}, {
host: ['imgbaron.com', 'imgsto.com', 'picbaron.com', 'picdollar.com', 'silverpic.com'],
image: 'img.pic',
click: 'form input[type=submit]',
}, {
host: ['viidii.info', 'redircdn.com'],
param: ['url', 'src'],
}, {
host: 'news.17173.com',
func: function () {
let href = window.location.href;
let url = href.replace(/_[0-9]*\.(s?html)/, '_all.$1');
if (url != href) {
window.location = url;
return true
}
},
}, {
host: ['downsx.net', 'downsx.rocks', 'downsx.pw', 'downsx.club', 'hgcdown.net'],
func: function () {
let e = document.querySelector('.uk-width-1-1.text-center');
let res = e.innerText.match(/\d+/);
if (!res || res.length === 0) {
return;
}
let size = +res[0];
if (!size) {
return;
}
size = calcBytes(size);
let html = e.innerHTML.replace(/\d+\s*\(Bytes\)/, size);
console.log(html);
e.innerHTML = html;
},
}, {
host: 'imgrock.pw',
image: 'img[onload="scaleImg(this)"]',
func: function () {
setInterval(function () {
let e1 = document.querySelectorAll('input[type=button]');
e1.forEach((v, i) => {
console.log('click:', v);
v && v.click && v.click();
});
let e2 = document.querySelector('button.btn_blue');
console.log('click:', e2);
e2 && e2.click && e2.click();
}, 500);
},
}];
function calcBytes(n) {
let u = 'B';
if (n >= 1024) {
n /= 1024;
u = 'KiB';
}
if (n >= 1024) {
n /= 1024;
u = 'MiB';
}
if (n >= 1024) {
n /= 1024;
u = 'GiB';
}
return n.toFixed(2) + ' ' + u;
}
function checkConfigHost(cfgHost) {
if (Array.isArray(cfgHost)) {
for (let i in cfgHost) {
if (checkConfigHost(cfgHost[i])) {
return true;
}
}
return false
}
let host = window.location.host;
return cfgHost && host.indexOf(cfgHost) >= 0
}
function getConfig() {
let res = [];
for (let i in CONFIGS) {
let cfg = CONFIGS[i];
if (checkConfigHost(cfg.host)) {
res.push(cfg)
}
}
return res;
}
function doImage(selector) {
if (Array.isArray(selector)) {
let r = false;
selector.forEach((v, i) => {
r = r || doImage(v);
});
return r;
}
let e = document.querySelector(selector);
if (e && e.src) {
console.log('goto image src. selector:', selector, ', url:', e.src)
window.location = e.src;
return true
}
}
function doClick(selector) {
if (Array.isArray(selector)) {
let r = false;
selector.forEach((v, i) => {
r = r || doClick(v);
});
return r;
}
let e = document.querySelector(selector);
if (e && e.click) {
console.log('goto click. selector:', selector)
e.click();
return true;
}
}
let PARAMS = null;
function doParam(param) {
PARAMS = PARAMS || new URLSearchParams(window.location.search.substr(1))
let params = PARAMS;
if (Array.isArray(param)) {
let r = false;
param.every((v, i) => {
r = r || doParam(v);
});
return r;
}
let url = params.get(param);
console.log(param, url);
if (url && url != 'undefined') {
console.log('goto param url. param:', param, ', url:', url)
window.location = url;
return true;
}
}
function doFunc(func) {
if (Array.isArray(func)) {
let r = false;
func.every((v, i) => {
r = r || doFunc(v);
});
return r;
}
return func();
}
function main() {
let cfgs = getConfig() || [];
console.log('host:', window.location.host, ', cfgs:', cfgs)
for (let i in cfgs) {
let cfg = cfgs[i]
console.log('cfg:', cfg);
let r = false;
r = r || cfg.image && doImage(cfg.image);
r = r || cfg.click && doClick(cfg.click);
r = r || cfg.param && doParam(cfg.param);
r = r || cfg.func && doFunc(cfg.func);
}
}
if (['complete', 'loaded', 'interactive'].indexOf(document.readyState) !== -1) {
main();
} else {
window.addEventListener('DOMContentLoaded', main);
}