Favicon, yandex, greed

This commit is contained in:
Egor Guslyancev 2024-05-02 17:09:40 -03:00
parent 279c07ea41
commit 17d76cdc7e
GPG Key ID: D7E709AA465A55F9
5 changed files with 69 additions and 27 deletions

5
.gitignore vendored
View File

@ -564,4 +564,7 @@ FodyWeavers.xsd
### END Visual Studio ###
# Hide internal database and it's backups
*.db
*.db
# Yandex verification file
yandex_*.html

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

3
favicon.ico.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2024 Egor Guslyancev <electromagneticcyclone@disroot.org>
SPDX-License-Identifier: CC0-1.0

View File

@ -17,7 +17,7 @@ import timeout as tmo
# Simple config
GET_ONLY_FOR_VIP = True
POST_ONLY_FOR_VIP = True
VERSION = "20240502.2"
VERSION = "20240502.3"
CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
@ -256,6 +256,22 @@ class S(BaseHTTPRequestHandler):
self._set_response(404)
self.end_headers()
self.wfile.write("404 Not found".encode('utf-8'))
case "/favicon.ico":
self._set_response(200)
with open("favicon.ico", "rb") as fi:
data = fi.read()
self.send_header('Accept-Ranges', 'bytes')
self.send_header('Content-Disposition', 'attachment')
self.send_header('Content-Length', len(data))
self.end_headers()
self.wfile.write(data)
case _ if self_path.startswith("/yandex_"):
self._set_response(200)
with open(self_path[1:], "rb") as fi:
data = fi.read()
self.send_header('Content-type', 'text/html; charset=utf-8')
self.end_headers()
self.wfile.write(data)
case _ if self_path.startswith("/assets/"):
self._set_response(200)
with open(self_path[1:], "rb") as fi:

70
user.js
View File

@ -2,7 +2,7 @@
// @name Sorryops
// @name:ru Сориупс
// @namespace https://git.disroot.org/electromagneticcyclone/sorryops
// @version 20240502.2
// @version 20240502.3
// @description Collect and reuse ORIOKS test answers
// @description:ru Скрипт для сбора и переиспользования ответов на тесты ОРИОКС
// @icon https://orioks.miet.ru/favicon.ico
@ -20,12 +20,12 @@
// @require https://openuserjs.org/src/libs/sizzle/GM_config.js
// @connect sorryops.ru
// @run-at document-start
// @downloadURL https://update.greasyfork.org/scripts/481036/Sorryops.user.js
// @updateURL https://update.greasyfork.org/scripts/481036/Sorryops.meta.js
// @downloadURL https://update.greasyfork.org/scripts/481036/Sorryops.user.js
// @updateURL https://update.greasyfork.org/scripts/481036/Sorryops.meta.js
// ==/UserScript==
/* Version */
const VERSION = "20240502.2";
const VERSION = "20240502.3";
/* End Version */
/* Charset */
@ -48,6 +48,7 @@ const all_labels = {
auto_answer_first: "First",
auto_answer_random: "Random",
auto_answer_not_greedy: "Choose a known answer if there are more wrong answers than that number",
auto_answer_greed_level: "Number of randomly answered questions",
display_values: "Answers variant",
display_values_ori: "ORIOKS",
display_values_sorry: "Sorry",
@ -74,6 +75,7 @@ const all_labels = {
auto_answer_first: "Первый",
auto_answer_random: "Случайный",
auto_answer_not_greedy: "Выбирать известный ответ, если неправильных больше этого числа",
auto_answer_greed_level: "Количество вопросов, на которые будет случайный ответ",
display_values: "Вариант отображения ответов",
display_values_ori: "ОРИОКС",
display_values_sorry: "Сори",
@ -162,6 +164,11 @@ var config = new GM_config({
type: 'number',
default: -1,
},
auto_answer_greed_level: {
label: labels.auto_answer_greed_level,
type: 'number',
default: -1,
},
display_values: {
label: labels.display_values,
type: 'select',
@ -648,32 +655,40 @@ function auto_answer() {
} break;
}
}
var greed = GM_getValue('greed');
if (greed === undefined) {
greed = 99999;
}
if (correct != undefined) {
pick_answer(correct);
} else if ((incorrect.length >= config.get('auto_answer_not_greedy')) && (config.get('auto_answer_not_greedy') > 0)) {
chosen_answer = Math.floor(Math.random() * incorrect.length);
pick_answer(incorrect[chosen_answer]);
} else if (auto_answer == labels.auto_answer_random) {
switch (type) {
case 'radio': {
var possible_answers = [];
for (answer in answers) {
if (incorrect.includes(answers[answer].sorry_value) == false) {
possible_answers.push(answer);
if ((incorrect.length >= Math.max(config.get('auto_answer_not_greedy'), 1)) &&
((config.get('auto_answer_not_greedy') > 0) || (greed <= 0))) {
chosen_answer = Math.floor(Math.random() * incorrect.length);
pick_answer(incorrect[chosen_answer]);
} else {
GM_setValue('greed', greed - 1);
switch (type) {
case 'radio': {
var possible_answers = [];
for (answer in answers) {
if (incorrect.includes(answers[answer].sorry_value) == false) {
possible_answers.push(answer);
}
}
}
chosen_answer = Math.floor(Math.random() * possible_answers.length);
answers[possible_answers[chosen_answer]].click();
} break;
case 'checkbox': {
var combs = comb(charset.slice(0, answers.length), incorrect);
var pick = combs[Math.floor(Math.random() * combs.length)];
for (i = 0; i < answers.length; i++) {
if(pick.includes(answers[i].sorry_value)) {
answers[i].click();
chosen_answer = Math.floor(Math.random() * possible_answers.length);
answers[possible_answers[chosen_answer]].click();
} break;
case 'checkbox': {
var combs = comb(charset.slice(0, answers.length), incorrect);
var pick = combs[Math.floor(Math.random() * combs.length)];
for (i = 0; i < answers.length; i++) {
if(pick.includes(answers[i].sorry_value)) {
answers[i].click();
}
}
}
} break;
} break;
}
}
} else if (auto_answer == labels.auto_answer_first) {
Object.values(sorted_objects_value)[0].click();
@ -895,6 +910,11 @@ function result_page_handler() {
}
GM_setValue('fetched_data', {});
GM_setValue('new_answer_f', false);
var greed = config.get('auto_answer_not_greedy');
if (greed < 0) {
greed = 99999;
}
GM_setValue('greed', greed);
});
}