您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces 42+ with the real number using WaniKani API
当前为
// ==UserScript== // @name WaniKani Real Numbers // @namespace Mempo.scripts // @author Mempo // @description Replaces 42+ with the real number using WaniKani API // @include http://www.wanikani.com/* // @include https://www.wanikani.com/* // @version 3 // @grant none // @run-at document-end // ==/UserScript== function main() { console.log('START OF WRN'); //var apikey = GM_getValue('apikey'); var apiKey = localStorage.getItem('apiKey'); if (!apiKey) { if (window.location.href.indexOf('account') != - 1) { retrieveAPIkey(); apiKey = localStorage.getItem('apiKey'); } else { var okcancel = confirm('WaniKani Real Numbers has no API key entered!\nPress OK to go to your settings page and retrieve your API key!'); if (okcancel == true) { window.location = 'https://www.wanikani.com/account'; } } } var doneReviews = Boolean(localStorage.getItem('WRN_doneReviews') || true); var lastUpdate = Number(localStorage.getItem('WRN_lastUpdate') || 0); //var doneReviews = GM_getValue('doneReviews', true); //var lastUpdate = GM_getValue('lastUpdate', '0'); var currentTime = new Date().getTime(); if ((currentTime - lastUpdate) > 120000) { localStorage.setItem('WRN_lastUpdate', currentTime.toString()); doneReviews = true; } if (window.location.href.indexOf('review') != - 1 || window.location.href.indexOf('lesson') != - 1) { localStorage.setItem('WRN_doneReviews', "true"); } else { var numberReviews = document.getElementsByClassName('reviews') [0].getElementsByTagName('span') [0]; var numberLessons = document.getElementsByClassName('lessons') [0].getElementsByTagName('span') [0]; if (numberReviews.innerHTML == '42+' || numberLessons.innerHTML == '42+') { if (apiKey) { if (doneReviews) { $.getJSON('https://www.wanikani.com/api/user/' + apiKey + '/study-queue', function (data) { setTimeout(function () { if (data.error) { alert('API Error: ' + data.error.message); } else { localStorage.setItem('WRN_numberReviews', data.requested_information.reviews_available); localStorage.setItem('WRN_numberLessons', data.requested_information.lessons_available); localStorage.setItem('WRN_doneReviews', ""); displayReal(numberReviews, numberLessons); } }, 0); }); } else { displayReal(numberReviews, numberLessons); } } } } } window.addEventListener('load', main, false); //GM_registerMenuCommand('WaniKani Real Numbers: Manually enter API key', setAPIkey, null, null, 'R'); //GM_registerMenuCommand('WaniKani Real Numbers: Reset API key', resetAPIkey, null, null, 'e'); function resetAPIkey() { GM_deleteValue('apikey'); alert('WaniKani Real Numbers API key reset!'); } function retrieveAPIkey() { for(var i=0;i<document.getElementsByClassName('span6').length;i++){ if(document.getElementsByClassName('span6')[i].getAttribute('placeholder')=="Key has not been generated") apiKey = document.getElementsByClassName('span6') [i].getAttribute('value'); } alert('WaniKani Real Numbers API key set to: ' + apiKey); if (apiKey) { localStorage.setItem('apiKey', apiKey); localStorage.setItem('WRN_doneReviews', 'true'); //GM_setValue('apikey', apikey); //GM_setValue('doneReviews', true); } } function setAPIkey() { var apiKey = prompt('Enter API key for WaniKani Real Numbers:'); if (apiKey) { localStorage.setItem('apiKey', apiKey); localStorage.setItem('WRN_doneReviews', true); //GM_setValue('apikey', apikey); //GM_setValue('doneReviews', true); } } function displayReal(numberReviews, numberLessons) { numberReviews.innerHTML = localStorage.getItem('WRN_numberReviews'); numberLessons.innerHTML = localStorage.getItem('WRN_numberLessons'); //numberReviews.innerHTML = GM_getValue('numberReviews'); //numberLessons.innerHTML = GM_getValue('numberLessons'); }