您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Make your Tumblr queue in a single key press.
当前为
- // ==UserScript==
- // @name AutoReblog2Queue
- // @namespace https://github.com/KeyWeeUsr/Userscripts
- // @version 1.0
- // @description Make your Tumblr queue in a single key press.
- // @author Peter Badida
- // @copyright 2018+, Peter Badida
- // @license GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt
- // @homepage https://github.com/KeyWeeUsr/Userscripts/tree/master/AutoReblog2Queue
- // @supportURL https://github.com/KeyWeeUsr/Userscripts/issues
- // @icon https://assets.tumblr.com/images/favicons/favicon.ico
- // @include https://www.tumblr.com/dashboard*
- // @include https://www.tumblr.com/dashboard/*
- // @grant unsafeWindow
- // @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ACVM74AYCXVWQ
- // ==/UserScript==
- 'use strict';
- /**
- * Autoreblog to Queue
- *
- * Userscript for Tumblr Dashboard which automatically changes the reblogging
- * option to "Add to queue" and reblogs it immediately.
- *
- * Basically this little script takes an advantage of the already available
- * behavior of Tumblr keyboard shortcuts i.e. navigating via J and K keys
- * together with R for reblogging. The script works in the background, checks
- * whether the modal window is present (waits if not), changes the reblogging
- * options and then presses the "Queue" button (changed "Reblog" button).
- *
- * Just use these navigation keys: J (up), K (down), L (heart), R (reblog).
- *
- * You can toggle the autoreblogging script on/off with the Ctrl + Q keys.
- * It's turned on by default.
- *
- * Also, if you deactivated the script and pressed R (reblog), you can always
- * activate it back with Ctrl + Q keys and the script will automatically add
- * the current post you are reblogging to the queue.
- *
- * Notify me if there's something missing/undesirable.
- */
- var DEBUG = false;
- /* how often to check for reblog modal */
- var INTERVAL = 500;
- function sleep(ms) {
- var i;
- var start = new Date().getTime();
- while (i < 1e7) {
- if ((new Date().getTime() - start) > ms) {
- break;
- }
- i++;
- }
- }
- function reblog_to_queue() {
- var modal;
- var button;
- var arrow;
- var menu;
- var items;
- var i;
- /* find the modal window and wait if not available */
- modal = document.getElementsByClassName("post-forms-modal")[0];
- button = modal.getElementsByClassName("post-form--save-button");
- if (!button.length) {
- return;
- }
- /* modal window is available, reblog button is found, open the options */
- button = button[0];
- arrow = button.getElementsByClassName("icon_arrow_carrot_down")[0];
- arrow.click();
- /* find the options menu element and pull the items out */
- menu = modal.getElementsByClassName("pop-menu")[0];
- items = menu.getElementsByClassName("item-option");
- /* find the "Add to queue" option in the reblog options and select it */
- for (i = 0; i < items.length; i++) {
- if (items[i].innerText !== "Add to queue") {
- continue;
- }
- items[i].click();
- break;
- }
- /* press the reblog button */
- button.getElementsByTagName("button")[0].click();
- /**
- * and remove it from parent to prevent duplicates in the queue
- * from pressing the button multiple times via interval
- */
- button.parentNode.removeChild(button);
- }
- function bind_CtrlQ_keys() {
- var key;
- document.body.addEventListener("keydown", function(eve) {
- if (DEBUG) {
- console.log(window.autoreblogscript);
- console.log(eve);
- }
- /* get keycode from event */
- key = eve.which || eve.keyCode;
- /* check if Q and Ctrl are pressed */
- if (eve.ctrlKey && key == 81) {
- if (window.autoreblogscript) {
- /* toggle off */
- clearInterval(window.autoreblogscript);
- window.autoreblogscript = null;
- /* make sure the interval is really stopped */
- console.log("[AutoReblog2Queue] off");
- } else {
- /* toggle on */
- window.autoreblogscript = setInterval(
- reblog_to_queue, INTERVAL
- );
- console.log("[AutoReblog2Queue] on");
- }
- }
- });
- }
- bind_CtrlQ_keys();
- window.autoreblogscript = setInterval(reblog_to_queue, INTERVAL);