NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name TestCollector2
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @licence MIT
// @author Anon
// @match https://www.drillster.com/*
// @grant unsafeWindow
// @require http://code.jquery.com/jquery-latest.js
// ==/UserScript==
var Dict = {}
function doCopy(c){
let all = $("p");
all.each((i,v) => {
let current = $(v).text();
let togo = Dict[current];
if (togo){
let now = $("textarea").val();
let newText = c == "Enter" ? togo : togo.slice(0,now.length+1);
$("textarea").val(newText);
window.setTimeout(() => $("textarea").val(newText),0)
}
});
}
function singleDrill(id){
let myDict = {}
let i = 30;
function doAnswer(q){
let asked = q.question.ask.term.value
let ref = q.question.reference
console.log(asked)
function recieveAnswer(a){
//console.log(a)
i-=1;
if (a.evaluation.result !== "CORRECT"){
let answ = a.evaluation.termEvaluations[1].value
myDict[asked] = answ
Dict[asked] = answ
console.log(asked + " = " + answ);
i = 0;
} else {
if (i > 0) {
console.log(i)
$.get("https://www.drillster.com/api/2.1/question/"+id,doAnswer);
}
}
}
let myans = myDict[asked] || "a";
$.put("https://www.drillster.com/api/2.1/answer/"+id,{reference: ref,answer: myans},recieveAnswer);
}
function getResponses(r){
console.log(r)
r.easy.forEach(v => {
let q = v.known.alternatives[0].value
let a = v.unknown.alternatives[0].value
console.log(q+" = "+a)
Dict[q] = a
myDict[q] = a
})
r.difficult.forEach(v => {
let q = v.known.alternatives[0].value
let a = v.unknown.alternatives[0].value
console.log(q+" = "+a)
Dict[q] = a
myDict[q] = a
})
$.get("https://www.drillster.com/api/2.1/question/"+id,doAnswer);
}
$.get(`https://www.drillster.com/api/2.1/drillable/${id}/easy-and-difficult-entries`,getResponses);
}
function setupKeyPress(){
$("body").on("keypress",v => {
console.log("gogo");
if (unsafeWindow.fakeType ||v.key == "Enter" /*(Set to True for faketyping)*/){
doCopy(v.key);
}
})
}
function getDrills(){
let testID = location.href.match("#/(.*)\\?")[1]
$.get("https://www.drillster.com/api/2.1/test/"+testID,v => {for (let drill of v.drills){singleDrill(drill)};})
unsafeWindow.Dict = Dict
}
(function() {
'use strict';
console.log("ACTIVE")
$.put = function(url, data, callback, type){
if ( $.isFunction(data) ){
type = type || callback,
callback = data,
data = {}
}
return $.ajax({
url: url,
type: 'PUT',
success: callback,
data: data,
contentType: type
});
}
window.setTimeout(getDrills,100);
window.setTimeout(setupKeyPress,1000);
unsafeWindow.fakeType = true
// Your code here...
})();