Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name DrillsterBot
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description try to take over the world!
- // @author You
- // @match https://www.drillster.com/not-found
- // @grant none
- // ==/UserScript==
- var THREAD_COUNT = 5;
- var STICK_100 = 5;
- var drill = "oe5qeapvIuWnXIk8HzqtVA";
- var answers = new Map();
- var drillArray = Array();
- var keepgoing = 5;
- var threads = 1;
- function getDrillList(){
- function compileDrillList(){
- var a = document.getElementsByClassName("cobracheck");
- for (var item of a){
- if (item.checked) {drillArray.push(item.name);}
- }
- let cobra = document.getElementsByClassName("cobra")[0];
- cobra.innerHTML = "";
- nextDrill(drillArray);
- }
- function updateDrillList(data){
- document.body.innerHTML = "<div class='cobra'></div>" + document.body.innerHTML;
- let cobra = document.getElementsByClassName("cobra")[0];
- templist = Array();
- data.drills.forEach(v => {
- templist.push(v);
- });
- function sortID(a, b){
- var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase();
- if (nameA < nameB) //sort string ascending
- return -1;
- if (nameA > nameB)
- return 1;
- return 0; //default return value (no sorting)
- }
- templist.sort(sortID);
- templist.forEach(v => {
- var checkbox="<label for="+v.name+">"+v.name+"</label><input type='checkbox' class=cobracheck value="+v.name+" name="+v.id+"><br>";
- cobra.innerHTML+=checkbox;
- });
- var button = "<button class='confirmbot'>BOT</button>";
- cobra.innerHTML+=button;
- button = cobra.getElementsByClassName("confirmbot")[0];
- button.addEventListener("click",compileDrillList);
- }
- $.get("https://www.drillster.com/api/2/repertoire",updateDrillList);
- }
- var score = 0;
- var drillsLeft = 0;
- var lastwrong = "";
- function updateInfo(){
- document.getElementsByClassName("cobra")[0].innerHTML = "<label>Drills Left: "+drillsLeft+"</label><br><label> Current: "+drill + "</label><br><label> Score: "+score + "</label><br><label> Last Wrong: "+lastwrong+ "</label>";
- }
- function nextDrill() {
- drill = drillArray.pop();
- drillsLeft = drillArray.length;
- lastwrong = "";
- threads = THREAD_COUNT;
- keepgoing = STICK_100;
- updateInfo();
- if (drill == null) {
- return;
- } else {
- for (let i = 0; i < threads; i++){
- getQuestion();
- }
- }
- }
- function getQuestion(){
- $.get("https://www.drillster.com/api/2/question/" + drill,questionInterpret);
- }
- function checkAnswer(data,quest,guess){
- var evals = data.evaluation.termEvaluations;
- var realans = evals[evals.length-1].value;
- var perc = data.proficiency.overall;
- if (realans != guess){
- console.log("Wrong");
- console.log(quest + " = " + realans + " not " + guess);
- lastwrong = quest + ": " + realans;
- answers.set(quest,realans);
- }
- score = perc;
- updateInfo();
- if (perc == 100){
- keepgoing-=1;
- if (keepgoing <= 0){
- threads -= 1;
- if (threads == 0){
- nextDrill();
- }
- return;
- }
- }
- getQuestion();
- }
- function questionInterpret(obj){
- var quest = obj.question.ask.term.value;
- var header = obj.question.reference;
- if (answers.has(quest)){
- putAnswer(header,answers.get(quest),(data) => checkAnswer(data,quest,answers.get(quest)));
- } else {
- putAnswer(header,"no clue",(data) => checkAnswer(data,quest,"no clue"));
- }
- }
- function putAnswer(ref,ans,callback){
- var ansobj = Object();
- ansobj.answer = ans;
- $.ajax({
- url: 'https://www.drillster.com/api/2/answer/'+ref,
- type: 'PUT',
- dataType: 'json',
- data: ansobj,
- success: function (data, textStatus, xhr) {
- callback(data);
- },
- error: function (xhr, textStatus, errorThrown) {
- console.log('Error in Operation');
- }
- });
- }
- (function() {
- 'use strict';
- getDrillList();
- // Your code here...
- })();
Advertisement
Add Comment
Please, Sign In to add comment