您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auto commit for Wanikani with critical list edit.
当前为
// ==UserScript== // @name WK Auto Commit (edited) // @namespace WKAUTOCOMMIT // @version 0.35 // @description Auto commit for Wanikani with critical list edit. // @author Johannes Mikulasch // @match http://www.wanikani.com/review/session* // @match https://www.wanikani.com/review/session* // @match http://www.wanikani.com/lesson/session* // @match https://www.wanikani.com/lesson/session* // @grant none // @run-at document-end // @license // ==/UserScript== /* * WK Auto Commit * If you typed in the correct answer then it is automatically commited. * Therefore, you have to use the 'enter' key way less than before. * * Version 0.35 * Edit by WillNiels to stop auto committing critical items * Version 0.3 * Script works now on the Lessons page too * Version 0.2 * Makes script work with Greasemonkey and Firefox * Version 0.1 * Initial version * */ /* jshint -W097 */ 'use strict'; var activated = true; var click_threshold = 600; var on_lessons_page = false; var api_key; var crit_list = []; var critical = false; //Anything less than this will not be autosubmitted! var percentCritical = '95'; var detect_lessons_page = function() { // Returns true if on lessons page var current_url = window.location.href; var lessonsPattern = /^http[s]?:\/\/www.wanikani.com\/lesson\/session.*/; return lessonsPattern.test(current_url); }; var toggle = function () { if (activated) { // Deactivates WK Auto Commit mode $("#WKAUTOCOMMIT_button").prop('title', "Switch auto commit on"); $("#WKAUTOCOMMIT_button").css({"opacity":"0.5"}); $("#WKAUTOCOMMIT_button").text("Auto Commit is off"); activated = false; } else { // Activates WK Auto Commit mode $("#WKAUTOCOMMIT_button").prop('title', "Switch auto commit off"); $("#WKAUTOCOMMIT_button").css({"opacity":"1.0"}); $("#WKAUTOCOMMIT_button").text("Auto Commit is on"); activated = true; } }; var sanitize = function (str1) { var str2 = str1.replace(/\s/g, ''); // Removes Whitespaces str2 = str2.toLowerCase(); return str2; }; var commit = function () { console.log(crit_list); $("#answer-form form button").click(); setTimeout(function(){ $("#answer-form form button").click();}, click_threshold); }; var check_input = function () { if (on_lessons_page) { var currentItem = $.jStorage.get("l/currentQuizItem"); var currentquestiontype = $.jStorage.get("l/questionType"); } else { var currentItem = $.jStorage.get("currentItem"); var currentquestiontype = $.jStorage.get("questionType"); // If the item is critical, don't auto submit var thisitem = (currentItem.rad || currentItem.voc || currentItem.kan); for( var i in crit_list ){ if( crit_list[i] == thisitem ){ critical = true; }else{ critical = false; } } } var currentresponse = $("#user-response").val(); var currentitem_response = null; // Get possible responses from current item depending on the task (reading or meaning) if (currentquestiontype === "meaning") { currentitem_response = currentItem.en; if (currentItem.syn) { currentitem_response = currentitem_response.concat(currentItem.syn); } } else if (currentquestiontype === "reading") { if (currentItem.voc) { // Vocab word currentitem_response = currentItem.kana; } else if (currentItem.emph === 'kunyomi') { // Kanji: Kun reading currentitem_response = currentItem.kun; } else if (currentItem.emph === 'onyomi') { // Kanji: On reading currentitem_response = currentItem.on; } else { console.log("WK Auto Commit: Could not find response"); } } for (var i in currentitem_response) { if (sanitize(currentresponse) === sanitize(currentitem_response[i]) && critical == false) { commit(); } } }; var register_check_input = function () { $("#user-response").on("keyup", function (event) { if (activated) { check_input(); } }); }; var addButtons = function () { $("<div />", { id : "WKAUTOCOMMIT_button", title : "Toggle Auto Commit Mode", }) .text("Auto Commit is on") .css({"background-color":"#C55"}) .css({"opacity":"1"}) .css({"display":"inline-block"}) .css({"font-size":"0.8125em"}) .css({"color":"#FFF"}) .css({"cursor":"pointer"}) .css({"padding":"10px"}) .css({"vertical-align":"bottom"}) .on("click", toggle) .prependTo("footer"); }; var init = function () { console.log('WK Auto Commit (a plugin for Wanikani): Initialization started'); on_lessons_page = detect_lessons_page(); addButtons(); register_check_input(); if(!localStorage.getItem('apiKey')){ api_key = prompt('enter your api-key'); }else{ api_key = localStorage.getItem('apiKey'); } while (typeof api_key !== 'string' || api_key.length !== 32){ api_key = prompt('Api-key incorrect format: Please re-enter your api-key.', api_key); } localStorage.setItem('apiKey',api_key); crit_list = []; $.getJSON('/api/user/'+api_key+'/critical-items/' + percentCritical, function(json){ if (json.error && json.error.code === 'user_not_found') { localStorage.removeItem('apiKey'); } $(json.requested_information).each(function(i,v){ try { var thing = v.character crit_list.push(thing); } catch(e) {} }); }); console.log('WK Auto Commit: Initialization ended'); }; $(function(){ init(); });