// ==UserScript==
// @name javdb auto open
// @namespace websiteEnhancement
// @author jimmly
// @version 2023.9.24
// @description 增加页面顶部底部按钮和一键下种按钮
// @create 2023-9-21
// @include *javdb*
// @grant GM_getValue
// @grant GM_setValue
// @grant GM.getValue
// @grant GM.setValue
// @require https://openuserjs.org/src/libs/sizzle/GM_config.min.js
// @license MIT
// @run-at document-idle
// ==/UserScript==
/**
* @typedef { import('jquery') } $
* @typedef { import('jQuery') } jQuery
*/;
; (async function (withJQuery, addStyle, createSuperLabel) {
let conf = new GM_config({
id: 'GM_config_javdb',
title: 'javdb Configurable Options Script',
fields: {
'asdf': {
'label': 'Search keys',
'type': 'textarea',
'rows':30,
'cols':50,
'default': '萝莉;奴隶;奴隸;调教;調教;拘束;軟體;软体;痙;攣;拘;束;固定;sm;白虎,捆绑,捆綁;束縛;束缚,母狗;'
},
},
})
withJQuery(/** @param { $ } $ */function ($, win) {
//$('item a').removeAttr('style')
new Promise((resolve, reject) => resolve(conf.get('asdf')))
.then(conf => {
console.log('config value of keys', conf)
return conf.split(/;|;|,|,/i)
})
.then(keys => {
if (window.location.href.indexOf('tags') > -1)
$('.item a').each((i, element) => {
let el = $(element)
$.each(keys, (inex, key) => {
if (key && el.attr('title').toLowerCase().indexOf(key.toLowerCase()) > -1) {
console.log(key, createSuperLabel(el.prop('href')), el.prop('href'))
return false;
}
})
});
})
let w = 40, h = 40;
addStyle(`
a:link{color:green;}
a:hover{color:red;}
a:active{color:yellow;}
a:visited{color:orange;}
.btn1 {
opacity:0.8;-moz-transition-duration:0.2s;-webkit-transition-duration:0.2s;
padding:1px; margin-top:1px;
font-size: 10; text-align: center; vertical-align: middle; line-height:${h}px;
border-radius:5px 5px 5px 5px;cursor:pointer; left:0px;z-index:9999;
background:white;
width:${w}px;height:${h}px;
}
`);
let container = $(document.createElement('div')).css({
'cssText': `position:fixed;top:15%;width:${w}px;height:${h * 7}px;left:0px;z-index:9999`
});
if (window.location.href.indexOf('tags') == -1) {
//下载按钮
let downloadBtn = $(document.createElement('div')).text('下載').appendTo(container)
.click(function () {
let url = $(".t_attachlist > dt > a:eq(1)").prop('href');
let filename = $("div.mainbox.viewthread>h1").text().trim() + '.torrent';
console.log(filename)
$.ajax({
url,
success: function (result, status, xhr) {
let alink = document.createElement('a');
alink.download = filename;
alink.href = $(result).find("#downloadBtn").prop('href');
document.body.appendChild(alink);
alink.click();
},
error: function (xhr, status, error) {
console.log(status, error)
}
});
});
$(document).keydown(function (event) {
let e = event || window.event;
let k = e.keyCode || e.which;
if (k === 16) {
// isCtrl = true;
startBtn.click()
} else if (k === 38) { //up
event.stopPropagation()
slowBtn.click()
} else if (k === 40) {//down
event.stopPropagation()
//fastBtn.click()
}
})
// $(window).blur(function () {
// clearTimeout(win.___t)
// win.___t = 0
// }).focus(function () {
// win.___func();
// })
win.__wait = 900
win.__step = 100;
win.___func = function () {
win.______h = $(document).scrollTop() + win.__step;
if (win.______h >= $(document).height() - $(window).height()) {
clearTimeout(win.___t)
// win.___t = setTimeout(win.___func, 30000)
} else {
$(document).scrollTop(win.______h);
win.___t = setTimeout(win.___func, win.__wait)
}
};
}
else {
$('tr').hover(
function () {
$(this).find('*').css("background-color", "#9AAAC7")
}, function () {
$(this).find('*').css("background-color", '');
});
}
//最顶按钮
let
toTopBtn = $(document.createElement('div')).text('Top').appendTo(container)
.click(function () {
window.scrollTo(0, 0);
}),
//最低按钮
toBottomBtn = $(document.createElement('div')).text('Bottom').appendTo(container)
.click(function () {
window.scrollTo(0, document.body.scrollHeight);
}),
//加速
fastBtn = $(document.createElement('div')).text('加速').appendTo(container)
.click(function () {
if (win.__wait > 5) {
win.__wait = win.__wait / 1.5
} else {
win.__wait = 5
}
}),
startBtn = $(document.createElement('div')).text('啓停').appendTo(container)
.click(function () {
if (!!!win.___t) {
win.___func();
} else {
clearTimeout(win.___t)
win.___t = 0
}
}),
slowBtn = $(document.createElement('div')).text('減速').appendTo(container)
.click(function () {
win.__wait *= 1.5
}),
setBtn = $(document.createElement('div')).text('設置').appendTo(container)
.click(function () {
conf.open();
});
container
.find('div')
.addClass('btn1')
.hover(function (e) {
let o = $(this)
o.data('old_opacity', o.css('opacity'))
.data('old_border', o.css('border'))
o.css('opacity', 1).css('border', '1px solid black')
}, function (e) {
let o = $(this)
o.css('opacity', o.data('old_opacity')).css('border', o.data('old_border'))
})
container.appendTo('body');
})
})(function (callback, safe) {
if (typeof jQuery == "undefined") {
let script = document.createElement("script")
script.type = "text/javascript"
script.src = "https://code.jquery.com/jquery-3.6.1.min.js"
if (safe) {
let cb = document.createElement("script")
cb.type = "text/javascript"
cb.textContent = "jQuery.noConflict();(" + callback.toString() + ")(jQuery, window);"
script.addEventListener("load", function () {
document.head.appendChild(cb)
})
} else {
let dollar = undefined
if (typeof $ != "undefined") dollar = $
script.addEventListener("load", function () {
jQuery.noConflict()
$ = dollar
callback(jQuery, window)
})
}
document.head.appendChild(script)
} else {
setTimeout(function () {
//Firefox supports
callback(jQuery, typeof unsafeWindow === "undefined" ? window : unsafeWindow)
}, 30)
}
},
//addStyle
function (css) {
var s = document.createElement('style');
s.appendChild(document.createTextNode(css));
document.getElementsByTagName('head')[0].appendChild(s);
},
//createSuperLabel 创建超链接,不会被拦截
function (url, id) {
id = `_tmpAId_${id ?? url}`
// 防止反复添加
if (!document.getElementById(id) && !localStorage[id]) {
let tmpLink = document.createElement("a");
localStorage[id] = true
tmpLink.setAttribute("href", url);
tmpLink.setAttribute("target", "_blank");
tmpLink.setAttribute("id", id);
document.body.appendChild(tmpLink);
tmpLink.click();
return true
}
return false;
}
);