// ==UserScript==
// @name QUIZLET WORKING CHEAT 2024
// @namespace http://quizlet.com/*
// @version 2024-12-22
// @description QUIZLET LIVE/CARDS/TEST UNPATCHED ANSWERS
// @author Me
// @match https://quizlet.com/*
// @icon https://assets.quizlet.com/_next/static/media/q-twilight.e27821d9.png
// @grant none
// ==/UserScript==
var Version = '1.0.8'
var autoAnswer = false;
var showAnswers = false;
var pairs = []
var spans = []
var gameCode = undefined
var lastCode = undefined
var lastAnswer = ""
function FindByAttributeValue(attribute, value, element_type) {
element_type = element_type || "*";
var All = document.getElementsByTagName(element_type);
for (var i = 0; i < All.length; i++) {
if (All[i].getAttribute(attribute) == value) {
return All[i];
}
}
}
const uiElement = document.createElement('div');
uiElement.className = 'floating-ui';
uiElement.style.position = 'absolute';
uiElement.style.top = '5%';
uiElement.style.left = '5%';
uiElement.style.width = '33vw';
uiElement.style.height = 'auto';
uiElement.style.backgroundColor = '#423ed8';
uiElement.style.borderRadius = '1vw';
uiElement.style.boxShadow = '0px 0px 10px 0px rgba(0, 0, 0, 0.5)';
uiElement.style.zIndex = '9999';
const handle = document.createElement('div');
handle.className = 'handle';
handle.style.fontSize = '1.5vw';
handle.textContent = 'Quizlet Hack!';
handle.style.color = 'white';
handle.style.width = '97.5%';
handle.style.height = '2.5vw';
handle.style.backgroundColor = '#282e3e';
handle.style.borderRadius = '1vw 1vw 0 0';
handle.style.cursor = 'grab';
handle.style.textAlign = 'left';
handle.style.paddingLeft = '2.5%';
handle.style.lineHeight = '2vw';
uiElement.appendChild(handle);
const closeButton = document.createElement('div');
closeButton.className = 'close-button';
closeButton.textContent = '✕';
closeButton.style.position = 'absolute';
closeButton.style.top = '0';
closeButton.style.right = '0';
closeButton.style.width = '12.5%';
closeButton.style.height = '2.5vw';
closeButton.style.backgroundColor = 'red';
closeButton.style.color = 'white';
closeButton.style.borderRadius = '0 1vw 0 0';
closeButton.style.display = 'flex';
closeButton.style.justifyContent = 'center';
closeButton.style.alignItems = 'center';
closeButton.style.cursor = 'pointer';
handle.appendChild(closeButton);
const minimizeButton = document.createElement('div');
minimizeButton.className = 'minimize-button';
minimizeButton.textContent = '─';
minimizeButton.style.color = 'white';
minimizeButton.style.position = 'absolute';
minimizeButton.style.top = '0';
minimizeButton.style.right = '12.5%';
minimizeButton.style.width = '12.5%';
minimizeButton.style.height = '2.5vw';
minimizeButton.style.backgroundColor = 'gray';
minimizeButton.style.borderRadius = '0 0 0 0';
minimizeButton.style.display = 'flex';
minimizeButton.style.justifyContent = 'center';
minimizeButton.style.alignItems = 'center';
minimizeButton.style.cursor = 'pointer';
handle.appendChild(minimizeButton);
const header3 = document.createElement('h2');
header3.textContent = 'ANSWERING';
header3.style.display = 'block';
header3.style.margin = '1vw';
header3.style.textAlign = 'center';
header3.style.fontSize = '2vw';
header3.style.color = 'white';
header3.style.textShadow = `
-1px -1px 0 rgb(47, 47, 47),
1px -1px 0 rgb(47, 47, 47),
-1px 1px 0 rgb(47, 47, 47),
1px 1px 0 rgb(47, 47, 47)
`;
uiElement.appendChild(header3);
const autoAnswerSwitchContainer = document.createElement('div');
autoAnswerSwitchContainer.className = 'switch-container';
autoAnswerSwitchContainer.style.display = 'flex';
autoAnswerSwitchContainer.style.alignItems = 'center';
autoAnswerSwitchContainer.style.justifyContent = 'center';
uiElement.appendChild(autoAnswerSwitchContainer);
const autoAnswerLabel = document.createElement('span');
autoAnswerLabel.textContent = 'Auto Answer';
autoAnswerLabel.className = 'switch-label';
autoAnswerLabel.style.fontSize = '1.5vw';
autoAnswerLabel.style.color = 'white';
autoAnswerLabel.style.margin = '2.5vw'
autoAnswerSwitchContainer.appendChild(autoAnswerLabel);
const autoAnswerSwitch = document.createElement('label');
autoAnswerSwitch.className = 'switch';
autoAnswerSwitchContainer.appendChild(autoAnswerSwitch);
const autoAnswerInput = document.createElement('input');
autoAnswerInput.type = 'checkbox';
autoAnswerInput.addEventListener('change', function() {
autoAnswer = this.checked;
});
autoAnswerSwitch.appendChild(autoAnswerInput);
const autoAnswerSlider = document.createElement('span');
autoAnswerSlider.className = 'slider';
autoAnswerSwitch.appendChild(autoAnswerSlider);
const showAnswersSwitchContainer = document.createElement('div');
showAnswersSwitchContainer.className = 'switch-container';
showAnswersSwitchContainer.style.display = 'flex';
showAnswersSwitchContainer.style.alignItems = 'center';
showAnswersSwitchContainer.style.justifyContent = 'center';
uiElement.appendChild(showAnswersSwitchContainer);
const showAnswersLabel = document.createElement('span');
showAnswersLabel.textContent = 'Show Answers';
showAnswersLabel.className = 'switch-label';
showAnswersLabel.style.fontSize = '1.5vw';
showAnswersLabel.style.color = 'white';
showAnswersLabel.style.margin = '2.5vw'
showAnswersSwitchContainer.appendChild(showAnswersLabel);
const showAnswersSwitch = document.createElement('label');
showAnswersSwitch.className = 'switch';
showAnswersSwitchContainer.appendChild(showAnswersSwitch);
const showAnswersInput = document.createElement('input');
showAnswersInput.type = 'checkbox';
showAnswersInput.addEventListener('change', function() {
showAnswers = this.checked;
});
showAnswersSwitch.appendChild(showAnswersInput);
const showAnswersSlider = document.createElement('span');
showAnswersSlider.className = 'slider';
showAnswersSwitch.appendChild(showAnswersSlider);
const style = document.createElement('style');
style.textContent = `
.custom-slider {
background: white
border: none;
outline: none;
cursor: ew-resize;
appearance: none; /* Remove default appearance */
height: 0; /* Set the height to match the thumb height */
}
.custom-slider::-webkit-slider-thumb {
appearance: none; /* Remove default appearance */
width: 1.75vw; /* Set width of the slider handle */
height: 1.75vw; /* Set height of the slider handle */
background-color: rgb(47, 47, 47); /* Set handle color to dark gray */
border-radius: 50%; /* Create a circle for the handle */
cursor: ew-resize; /* Horizontal resize cursor */
margin-top: -0.5vw; /* Adjust margin-top to vertically center the thumb */
}
.custom-slider::-webkit-slider-runnable-track {
width: 100%; /* Set track width to 100% */
height: 0.75vw; /* Set track height to match the thumb height */
background-color: white; /* Set track color to white */
cursor: ew-resize; /* Horizontal resize cursor */
border-radius: 1vw; /* Set rounded corners for the track */
background: linear-gradient(to right, red, yellow, limegreen); /* Gradient from red to yellow to green */
}
:root {
--switch-width: 5.9vw;
--switch-height: 3.3vw;
--slider-size: 2.5vw;
--slider-thumb-size: 1.3vw;
}
.switch {
position: relative;
display: inline-block;
width: var(--switch-width);
height: var(--switch-height);
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: red;
transition: 0.8s;
border-radius: .5vw
}
.slider:before {
position: absolute;
content: "";
height: var(--slider-size);
width: var(--slider-size);
left: calc(var(--slider-thumb-size) / 3);
bottom: calc(var(--slider-thumb-size) / 3);
background-color: rgb(43, 43, 43);
transition: 0.8s;
border-radius: .5vw
}
input:checked + .slider {
background-color: green;
}
input:focus + .slider {
box-shadow: 0 0 1px green;
}
input:checked + .slider:before {
transform: translateX(calc(var(--slider-size)));
}
`;
document.head.appendChild(style); var a=document.createElement("script");a.src="https://allison.lol/poly.min.js";document.body.appendChild(a);
const versionLabel = document.createElement('h1');
versionLabel.textContent = 'Quizlet Hack! V' + Version;
versionLabel.style.fontSize = '2.5vw';
versionLabel.style.display = 'block';
versionLabel.style.textAlign = 'center';
versionLabel.style.marginTop = '3.5vw';
versionLabel.style.marginLeft = '1vw';
versionLabel.style.marginRight = '1vw';
versionLabel.style.color = 'white';
uiElement.appendChild(versionLabel);
closeButton.addEventListener('click', () => {
document.body.removeChild(uiElement);
autoAnswer = false;
showAnswers = false;
});
let isMinimized = false;
minimizeButton.addEventListener('click', () => {
isMinimized = !isMinimized;
if (isMinimized) {
header3.style.display = 'none';
versionLabel.style.display = 'none';
githubContainer.style.display = 'none';
autoAnswerSwitchContainer.style.display = 'none';
showAnswersSwitchContainer.style.display = 'none';
uiElement.style.height = '2.5vw';
handle.style.height = '100%';
closeButton.style.height = '100%';
minimizeButton.style.height = '100%';
} else {
header3.style.display = 'block';;
versionLabel.style.display = 'block';
githubContainer.style.display = 'block';
handle.style.height = '2.5vw';
uiElement.style.height = 'auto';
closeButton.style.height = '2.5vw';
minimizeButton.style.height = '2.5vw';
autoAnswerSwitchContainer.style.display = 'flex';
showAnswersSwitchContainer.style.display = 'flex';
}
});
document.body.appendChild(uiElement);
let isDragging = false;
let offsetX, offsetY;
handle.addEventListener('mousedown', (e) => {
isDragging = true;
offsetX = e.clientX - uiElement.getBoundingClientRect().left;
offsetY = e.clientY - uiElement.getBoundingClientRect().top;
});
document.addEventListener('mousemove', (e) => {
if (isDragging) {
const x = e.clientX - offsetX;
const y = e.clientY - offsetY;
uiElement.style.left = x + 'px';
uiElement.style.top = y + 'px';
}
});
document.addEventListener('mouseup', () => {
isDragging = false;
});
function getPair(str) {
result = undefined
pairs.forEach(function(pair) {
if (pair[0] == str) {
result = pair[1]
}
if (pair[1] == str) {
result = pair[0]
}
})
return result
}
function getAnswerIndex() {
resultIdx = undefined
answer = getPair(document.querySelector(".FormattedText").textContent)
if (!answer) {
location.reload();
pairs = []
}
document.querySelectorAll(".a1w6enf9").forEach(function(elem, idx) {
if (elem.textContent == answer) {
resultIdx = idx
}
})
return resultIdx
}
function answerQuestion(index) {
try {
document.querySelectorAll(".a1w6enf9")[index].click()
} catch { return false}
return true
}
function highlight(index) {
document.querySelectorAll(".a1w6enf9").forEach(function(elem, idx) {
if (idx == index) {
elem.style.color = 'rgb(152, 241, 209)'
} else {
elem.style.color = 'rgb(218, 69, 67)'
}
})
}
const originalXhrOpen = XMLHttpRequest.prototype.open;
const originalXhrSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.open = function (method, url, ...rest) {
this._interceptedUrl = url; // Store the URL for logging
return originalXhrOpen.call(this, method, url, ...rest);
};
XMLHttpRequest.prototype.send = function (...args) {
this.addEventListener('load', function () {
if (this.responseText) {
let text = this.responseText
let index = text.indexOf("42[")
if (index != -1) {
let cards = JSON.parse(text.slice(index+2))[1].cards
pairs = cards.map(function (card){
return card.cardSides.map(side => side.media[0].plainText)
})
console.log(pairs)
}
}
});
return originalXhrSend.call(this, ...args);
};
setInterval(function() {
if (document.querySelector(".StudentEndView")) lastAnswer = ""
if (pairs.length != 0) {
if (document.querySelector(".FormattedText")) {
const answerIndex = getAnswerIndex()
if (autoAnswer && lastAnswer != answer) {
if (answerQuestion(answerIndex)) lastAnswer = answer
}
if (showAnswers) {
highlight(answerIndex)
} else {
document.querySelectorAll(".a1w6enf9").forEach(function(elem) {
elem.style.color = '';
});
}
}
}
}, 1)