- // ==UserScript==
- // @name javdb auto open
- // @namespace javdb enhancement
- // @author jimmly
- // @version 0.3.3
- // @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 withJQuery => {
-
- let conf = new GM_config({
- id: 'GM_config_javdb',
- title: 'Configurable Options Script',
- fields: {
- 'asdf': {
- 'label': 'Search keys',
- 'type': 'textarea',
- 'default': '萝莉;奴隶;奴隸;调教;調教;拘束;軟體;软体;痙;攣;拘;束;固定;sm;白虎,捆绑,捆綁;束縛;束缚,母狗;'
- },
- },
- })
-
-
- var addStyle = function (css) {
- var s = document.createElement('style');
- s.appendChild(document.createTextNode(css));
- document.getElementsByTagName('head')[0].appendChild(s);
- }
- addStyle(`
- a:link{color:green;}
- a:hover{color:red;}
- a:active{color:yellow;}
- a:visited{color:orange;}
- .btn1 {
- opacity:0.3;-moz-transition-duration:0.2s;-webkit-transition-duration:0.2s;
- padding:1px;background:white;font-size: 10; text-align: center; vertical-align: middle;
- border-radius:5px 5px 5px 5px;cursor:pointer; left:0px;z-index:9999;
- background:white;
- width:40px;height:40px;line-height:40px;
- }
- `);
- // 创建超链接,不会被拦截
- function createSuperLabel(url, id) {
- if (!id)
- 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;
- }
- 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.toString()).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 container = $(document.createElement('div')).css({
- 'cssText': `position:fixed;top:15%;width:40px;height:240px;left:0px;z-index:9999`
- });
- let topref = 80;
- //最顶按钮
- let toTopBtn = $(document.createElement('div')).text('Top');
- toTopBtn.click(function () {
- window.scrollTo(0, 0);
- });
-
- container.append(toTopBtn).append($('<br />'));
- if (window.location.href.indexOf("thread") == -1) {
- //下载按钮
- let downloadBtn = $(document.createElement('div')).text('Lod');
- downloadBtn.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)
- }
- });
- });
- container.append(downloadBtn).append($('<br />'));
-
- }
- else {
- $('tr').hover(function () {
- // $(this).find('*').each(function (item) {
- // $(this).data('oldcolor', $(this).css("background-color"))
- // })
- $(this).find('*').css("background-color", "#9AAAC7")
- },
- function () {
- $(this).find('*').css("background-color", '');
- });
- }
- //最低按钮
-
- let toBottomBtn = $(document.createElement('div')).text('Bot');;
-
- toBottomBtn.click(function () {
- window.scrollTo(0, document.body.scrollHeight);
- });
- container.append(toBottomBtn).append($('<br />'));
-
- let fastBtn = $(document.createElement('div')).text('Set'),
- middleBtn = $(document.createElement('div')).text('Sta'),
- slowBtn = $(document.createElement('div')).text('Low');
- container.append(fastBtn).append($('<br />'))
- .append(middleBtn).append($('<br />'))
- .append(slowBtn).append($('<br />'))
-
- container.find('div')
- .addClass('btn1')
- .hover(
- function (item) {
- $(this).css('opacity', 1).css('border', '1px solid black')
- }, function (item) {
- $(this).css('opacity', 0.3).css('border', 'none')
- })
-
-
- win.__wait = 900
- win.__step = 100;
-
- fastBtn.click(function () {
- conf.open();
- // if (win.__wait > 5) {
- // win.__wait = win.__wait / 1.5
- // } else {
- // win.__wait = 5
- // }
-
- });
- slowBtn.click(function () { win.__wait *= 1.5 });
- 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)
- }
- };
- $(document).keydown(function (event) {
- let e = event || window.event;
- let k = e.keyCode || e.which;
- if (k === 16) {
- // isCtrl = true;
- middleBtn.click()
- } else if (k === 38) { //up
- event.stopPropagation()
- slowBtn.click()
-
- } else if (k === 40) {//down
- event.stopPropagation()
- //fastBtn.click()
- }
- })
-
-
-
-
- middleBtn.click(function () {
- if (!!!win.___t) {
- win.___func();
- } else {
- clearTimeout(win.___t)
- win.___t = 0
- }
- })
-
- container.appendTo('body');
-
- $(window).blur(function () {
- clearTimeout(win.___t)
- win.___t = 0
- }).focus(function () {
- win.___func();
- })
-
-
- })
- })(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)
- }
- });