Skip to content

Instantly share code, notes, and snippets.

@refracta
Created March 20, 2023 07:21
Show Gist options
  • Save refracta/d57d5e4a10e2547eabf4d5ea4392d246 to your computer and use it in GitHub Desktop.
Save refracta/d57d5e4a10e2547eabf4d5ea4392d246 to your computer and use it in GitHub Desktop.
Large input scaler for ChatGPT
function writeMessage(text) {
document.querySelector('textarea').value = text;
}
function clickSendButton() {
document.querySelector('button.absolute').click();
}
function waitResponse() {
return new Promise(resolve => {
let interval = setInterval(() => {
let text = document.querySelector('.btn.relative.btn-neutral')?.textContent;
if (text === "Regenerate response") {
clearInterval(interval);
resolve();
}
}, 100);
});
}
async function sendMessage(text) {
writeMessage(text);
clickSendButton();
await waitResponse();
}
let firstMessage = 'I am going to provide you a book in multiple messages.';
let insertMessage = 'Here is the next page, please do not respond aside from confirmation:\n\n';
const splitLength = 2000;
await sendMessage(firstMessage);
while (localStorage.buffer.length > 0) {
let length = splitLength - insertMessage.length;
let text = localStorage.buffer.slice(0, length);
localStorage.buffer = localStorage.buffer.slice(length);
await sendMessage(insertMessage + text);
console.log(`text: ${text.substring(0, 20)}`);
}
const messageLimit = 20;
let i = setInterval(_ => {
let messages = Array.from(document.querySelectorAll('.flex-1.overflow-hidden > div > div > div > div:nth-child(1) > div'));
while (messages.length > messageLimit) {
messages.shift().remove();
}
}, 100);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment